亲爱的Dialog员工:
对于我的项目,我在sdk5.0.4中修改了ble\u app\u外围设备。我已经用DA14580基本开发板和spiflash测试了我的项目。很好用。我现在需要添加睡眠模式代码。我想将ble\u app\u睡眠模式项目的睡眠模式功能添加到我的项目中。最初的尝试失败了。
当测试ble\u app\u睡眠模式时,深度睡眠在10秒后激活,广告停止。在我的项目中,广告还在继续,所以我假设深度睡眠从未被激活。
下面是我从ble\u app\u睡眠模式项目复制的代码:
*********************************************************************************
const static sleep\u state\u t app\u default\u sleep\u mode=ARCH\u DEEP\u sleep\u ON;
*********************************************************************
void user\u app\u adv\u start(无效)
{
/*代码*/
arch_set_deep_sleep();//做广告时睡个好觉
/*代码*/
}
**************************************************
#未定义CFG\u MEM\u MAP\u EXT\u SLEEP
#定义CFG\u MEM\u MAP\u DEEP\u SLEEP
*****************************************************************
*散点文件:内存映射
*/
#如果已定义(CFG|u MEM|u MAP|u EXT|u SLEEP)| |!已定义(CFG\u MEM\u MAP\u DEEP\u SLEEP)
#define REINIT \u DESCRIPT \u BUF 0//0:保留在RetRAM中,1:需要重新初始化(使用延长睡眠时设置为0)
#定义使用内存映射外部睡眠设置
#其他
#define REINIT \u DESCRIPT \u BUF 0//0:保留在RetRAM中,1:需要重新初始化(使用延长睡眠时设置为0)
#定义使用内存映射深度睡眠设置
#定义DB\u HEAP\u SZ 1024
#定义ENV_HEAP_SZ 328
#定义MSG\u HEAP\u SZ 1312
#定义非\u RET \u HEAP \u SZ 1024
#结束
关于唤醒按钮,我还没有添加这个代码。我计划添加一个外部按钮接口的DA14580基本板。也许没有这个按钮代码是问题所在?
在接触Dialog之前,我已经阅读了所有与睡眠模式相关的文档。我很感激你的支持。
嗨,格伯斯,
关于系统如何工作的一些事情,因此,当设备在睡眠模式下运行时,意味着它将在BLE事件之间进入睡眠状态(BLE事件被认为是广告事件、连接事件、BLE计时器)。事实上,你的设备一直在做广告并不意味着它不睡觉,由于设备一直在播发,这意味着您从未取消播发操作(ble\u app\u sleepmode使用app\u easy\u timer()设置内核计时器,该计时器将在其回调中调用app\u easy\u gap\u advertise\u stop(),然后只要堆栈回复播发已停止,它就会设置按钮-检查用户\u app \u adv \u indirect \u complete)。由于广告已停止,并且设备没有可提交事件,因此在外部中断(按钮)唤醒系统之前,设备永远不会唤醒。如果这是清楚的,请告诉我。
谢谢你的对话
谢谢你的解释。这很有帮助。我有更多关于这个主题的问题,但将在一个新的线程中发布他们的要求在答复说明。
-肖恩
嗨,格伯斯,
很高兴有帮助。
致以最诚挚的问候