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口外部唤醒?
Device:
你好,
睡眠模式的定义在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))
如果我想使用这两个函数,应该做哪些设置