可以通过 RTC 闹钟事件和外部事件唤醒 DEEPSLEEP 模式,如果是 RTC 闹钟事件唤醒 DEEPSLEEP 模式,会将 RTC_CTRLL 的 bit1:闹钟标志置 1,而外部事件唤醒 DEEPSLEEP 模式后,没有相应的寄存器指示外部事件发生。
如果应用程序会使用 RTC 闹钟事件唤醒 DEEPSLEEP 模式喂狗,并且也开启了外部事件,比如按键。那么当在 RTC 闹钟事件唤醒 DEEPSLEEP 模式到再次进入 DEEPSLEEP 模式的这个时间间隙内按下按键,因没有相应的寄存器指示外部事件发生,无法判断 MCU 是否不再进入 DEEPSLEEP 模式,所以 MCU 就会再次进入 DEEPSLEEP 模式,造成按键失灵的现象。
如果存在上述这种情况,需要将事件唤醒 DEEPSLEEP 模式改为中断唤醒 DEEPSLEEP 模式。当在 RTC闹钟中断唤醒 DEEPSLEEP 模式到再次进入 DEEPSLEEP 模式的这个时间间隙内按下按键,MCU 会响应外部中断,在中断内设置一个标志,就可以判断到 MCU 不再进入 DEEPSLEEP 模式。 |