请问如何能够简单地看出CC2541是否进入了PM2模式?
我在simpleBLEPeripheral中使能了POWER_SAVING,有什么简单的方法能够看CC2541是否进入了PM2状态?
因为我有个周期性任务,所以空闲时BLE应该不会进入PM3状态,而会进入PM2状态。
我用手机上的LightBlue观察,是察觉不出打开POWER_SAVING还是关闭了POWER_SAVING。
有什么方法能够看出CC2541是否进入了PM2模式吗?
求大神指教!谢谢!
最简单的可以通过量功耗来判断
halPwrMgtMode = (timeout == 0) ? HAL_SLEEP_DEEP : HAL_SLEEP_TIMER;
在这句话的后面,加一个判断语句,如果是PM2,则闪灯2下;如果是PM3,则闪灯3下;
然后用示波器观察
谢谢你的回答。
但是我试了一下,在halPwrMgtMode = (timeout == 0) ? HAL_SLEEP_DEEP : HAL_SLEEP_TIMER;
这句话设了断点,define了POWER_SAVING,但是根本跑不到这个断点啊。
你好,谢谢你的回答。
可是测量功耗比较麻烦,有什么通过调试程序能看到是否进入了PM2模式的方法吗?
在连接调试器的情况下 应该是无法进入Sleep模式的
谢谢!
我现在测试时拿掉仿真器,用电池供电。
我在 halPwrMgtMode = (timeout == 0) ? HAL_SLEEP_DEEP : HAL_SLEEP_TIMER;
这句后面加了一句点亮灯,点亮后就不会灭。
接上电池跑,灯没有亮!用手机与板子蓝牙通信正常。说明根本没有执行到这一句。
为了确认,我在点灯后面又加了一句while(1);
仍然,灯没有亮,而蓝牙通信正常。说明确实没有执行到这一句。
我确认程序是执行了main函数里的
#if defined ( POWER_SAVING )
osal_pwrmgr_device( PWRMGR_BATTERY );
#endif
这句的。
求大神指导,为何没能执行halPwrMgtMode = (timeout == 0) ? HAL_SLEEP_DEEP : HAL_SLEEP_TIMER;?
万分感谢!
请问您蓝牙的操作是什么样的?
通常只是保持连接,但是没有数据传输,没有其他的event开着,在两个connection interval之间就是PM2
谢谢回复!
我里面有一个周期性任务,每隔一秒钟测量一下温度,然后notify给主机。其他就没有了。