你好
我正在尝试使用DSPS项目(DSPS 5.150.2)。我在DSPS原始项目中添加了一个特性来控制GPIO。
当我改变特征值时,我可以检查gpio是否被改变。
问题是'BLE_WAKEUP_LP_Handler'被连续调用,它正在调用' perid_init '函数,以便gpio的状态在被BLE更改后立即回到默认状态。
你能给我一些建议吗?
设备:
你好
我正在尝试使用DSPS项目(DSPS 5.150.2)。我在DSPS原始项目中添加了一个特性来控制GPIO。
当我改变特征值时,我可以检查gpio是否被改变。
问题是'BLE_WAKEUP_LP_Handler'被连续调用,它正在调用' perid_init '函数,以便gpio的状态在被BLE更改后立即回到默认状态。
你能给我一些建议吗?
嗨,尹大根,
在唤醒之后调用BLE_WAKEUP_LP_Handler,正如您已经提到的,该处理程序执行外围init,因此丢失睡眠之前的gpio配置。如果您希望在唤醒后保持GPIO配置,您应该在切换LED的函数中添加一个标志,然后将该标志检入到perid_int()中,并将GPIO配置为先前的状态。
谢谢,PM_Dialog
谢谢你的回复。
即使我禁用了睡眠模式,仍然会持续调用perid_init。
这有什么原因吗?
da1458x_config_basic.h
# undef CFG_MEM_MAP_EXT_SLEEP
# undef CFG_MEM_MAP_DEEP_SLEEP
嗨,尹大根,
请注意,DSPS参考设计应用程序代码不支持深度睡眠模式。只支持主动休眠和扩展休眠。您发布的宏与启用/禁用扩展或深度睡眠模式无关。如果要更改睡眠模式,则应该配置app_default_sleep_mode值与适当的变量转换为user_config.h头文件。
const static sleep_state_t app_default_sleep_mode = ARCH_EXT_SLEEP_ON
const static sleep_state_t app_default_sleep_mode = ARCH_SLEEP_OFF
谢谢,PM_Dialog