亲爱的员工对话框:
对于我的项目,我在SDK 5.0.4中修改了ble_app_peripheral。我已经测试了我的项目使用DA14580基本开发板和SPI Flash。它将正常工作。我现在需要添加睡眠模式代码。我想从ble_app_sleepmode项目添加睡眠模式功能到我的项目。最初的尝试失败了。
当测试ble_app_sleepmode时,深度睡眠在10s后被激活,广告停止。在我的项目中,广告还在继续,所以我假设深度睡眠从未被激活。
下面是我从ble_app_sleepmode项目复制的代码:
*********************************************************************************
const static sleep_state_t app_default_sleep_mode = ARCH_DEEP_SLEEP_ON;
*********************************************************************
空白user_app_adv_start(空白)
{
/ * * /代码
arch_set_deep_sleep ();//在广告期间设置深度睡眠
/ * * /代码
}
**************************************************
# undef CFG_MEM_MAP_EXT_SLEEP
#定义CFG_MEM_MAP_DEEP_SLEEP
*****************************************************************
* Scatterfile:内存映射
*/
#if define (CFG_MEM_MAP_EXT_SLEEP) || !
#define REINIT_DESCRIPT_BUF 0 //0: keep in RetRAM, 1: re-init是必需的(当使用Extended Sleep时设置为0)
#定义USE_MEMORY_MAP EXT_SLEEP_SETUP
其他#
#define REINIT_DESCRIPT_BUF 0 //0: keep in RetRAM, 1: re-init是必需的(当使用Extended Sleep时设置为0)
#定义USE_MEMORY_MAP DEEP_SLEEP_SETUP
#定义DB_HEAP_SZ 1024
#定义ENV_HEAP_SZ 328
#定义MSG_HEAP_SZ 1312
#定义NON_RET_HEAP_SZ 1024
# endif
关于唤醒按钮,我还没有添加这个代码。我计划在DA14580基础板上增加一个外置按钮。也许没有这个按钮代码是问题?
在接触“对话”之前,我已经通读了所有能找到的睡眠模式相关文件。我很感激你能提供的任何支持。
嗨,格柏,
关于系统如何工作的一些事情,所以,当设备运行在睡眠模式,这意味着它将进入睡眠之间的BLE事件(BLE事件被认为是广告事件,连接事件,BLE计时器)。事实上,你的设备一直在做广告,并不意味着它不睡觉,因为设备使广告这意味着你从来没有取消广告经营(ble_app_sleepmode设置内核定时器使用app_easy_timer(),将调用的回调app_easy_gap_advertise_stop堆栈(),然后尽快回复,广告已经停止将设置按钮,检查user_app_adv_undirect_complete)。由于广告停止,设备没有即将到来的BLE事件,设备将永远不会唤醒,直到外部中断(一个按钮)唤醒系统。如果明白了就告诉我。
由于MT_dialog
谢谢你的解释。这很有帮助。我有更多关于这个主题的问题,但是会按照回复说明的要求在一个新的线程中发布它们。
肖恩
嗨,格柏,
很高兴它帮助。
MT_dialog问好