写的有点啰嗦,只怪语文是英语老师教的~~~~~~~
经过小弟这两天的测试发现了一个有趣的现象,由于刚刚接触BLE和CC2540,所以没有找到问题的原因,所以请大神指导,随便长点姿势!
事情是这样的协议栈自带例程中有一个SimpleBLEBroadcaster(随便说一次,小弟的硬件平台只有一个 usb dongle和X宝的 CC DEBUGGER),例程正常编译正常下载后能够正常运行,广播正常,但是为了第二次开发需要部分修改,特别是LCD,没有这东西呀!所以果断割掉,但是问题来了,HAL_LCD=FALSE后,广播不能广播了。这实在是不爽呀!于是继续研究,而后割掉HAL_KEY(HAL_KEY=FALSE),问题依旧。最后在SimpleBLEBroadcaster_Init中屏蔽了IO初始化的#if defined( CC2540_MINIDK ) ,并修改了IO的配置,设置了一盏灯,P1_1=1;使LED常亮,哇咔咔!广播又能够广播了!好神奇呀!
对于官方例程,本人只做了以上修改和测试。对于协议栈和OSAL也不是很精通,所以不知道问题出在哪儿了。只是怀疑CC2540设计有缺陷(低功耗部分)或者是SimpleBLEBroadcaster例程设计有缺陷!希望知道的大神帮忙解答小弟的疑问!在此感激不尽~~~~~~
cedar_xuesong:
1:ti广播这块儿没有bug
2:广播是要自己手动启动的
3:对于CC2540_MINIDK板子,它是通过按键来触发广播和停止广播。你可以研究下例子按键处理的代码,里面有广播的部分
Barbara Wu:
SimpleBLEBroadcaster的例程针对CC2540的部分可以跑在mini keyfob和CC2540 EM板上的。你跑在CC2540 dongle上自然是需要修改代码的。本身程序没有问题。
Petter CHEN:
回复 Barbara Wu:
确实例程是针对2540mini开发的,但是我说的例程中没有2540mini的预定义!问题的关键是我的usb dongle,它没有外部的32K晶振,对比了KEYFOB差别也就在这,所以已经把32K晶振改为了内部,虽然不知道精度到底差了多少,但是可以使用了。屏蔽了HAL_LCD和HAL_KEY的情况下运行良好。现在还有一个问题,我之前没有修改32K晶振的寄存器,原例程一直用的外部晶振,而usb dongle上没有这枚晶振,可是在开启HAL_LCD或者点一盏LED灯的情况下,SimpleBLEBroadcaster运行良好。请工作人员有时间测试下我说的情况,顺便说说为什么会这样~~~~~~~
Petter CHEN:
回复 cedar_xuesong:
问题找到了,是32K晶振搞得鬼和key没有关系。谢谢您的回答~
如果方便也测试下我其他回复中提到的情况,谢谢~
Barbara Wu:
回复 Petter CHEN:
例程在编译的时候的编译选项就可以选keyfob或者EM板,不需要另外代码里面另外宏定义