Hi Dialog: 我使用DSPS V5.150.2时,在da1458x_config_basic.h文件中并没有定义睡眠模式 #undef CFG_MEM_MAP_EXT_SLEEP #undef CFG_MEM_MAP_DEEP_SLEEP
但运行时还是会进入 if ((sleep_mode == mode_ext_sleep) || (sleep_mode == mode_deep_sleep)) { //power down the radio and whatever is allowed arch_goto_sleep(sleep_mode);
//wait for an interrupt to resume operation WFI();
//resume operation arch_resume_from_sleep(); }
请问默认是开启的睡眠模式的么,如何将其关闭,如何在这个例程中添加IO口外部唤醒?
你好,
睡眠模式的定义在user_config.h中,修改代码:
/****************************************** * Default sleep mode. Possible values are: * * - ARCH_SLEEP_OFF * - ARCH_EXT_SLEEP_ON * - ARCH_DEEP_SLEEP_ON ****************************************** */ const static sleep_state_t app_default_sleep_mode = ARCH_SLEEP_OFF;
当然,memory map的配置也要跟着修改定义。把两个CFG_MEM_MAP_XXX_SLEEP都去定义即可
关于添加外部唤醒的机制可以去SDK的 ble_sleepmode 或者pxp reporter参考例程中看一下。里面有实现基于按键的外部唤醒
Hi Dialog: SDK中ble_sleepmode 和DSPS睡眠构架和使用的唤醒函数一样的,但我还是遇到一些问题: 在da1458x_config_basic.h文件中 #define CFG_APP 在rwip_config.h文件中 #ifdef CFG_APP #define BLE_APP_PRESENT 1 #else #define BLE_APP_PRESENT 0
所以预处理中BLE_APP_PRESENT = 1导致两者下面两个用于唤醒设置和回调的函数无法被编译和调用
#if ((EXTERNAL_WAKEUP) && (!BLE_APP_PRESENT)) // only in full embedded designs
void ext_wakeup_enable(uint32_t port, uint32_t pin, uint8_t polarity) { ........... }
void ext_wakeup_disable(void) { .......... } #endif // ((EXTERNAL_WAKEUP) && (!BLE_APP_PRESENT)) 如果我想使用这两个函数,应该做哪些设置