打印
[应用相关]

AT32 事件唤醒Deepsleep 模式有什么注意事项

[复制链接]
438|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
两只袜子|  楼主 | 2023-5-8 11:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
可以通过 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 模式。

使用特权

评论回复
沙发
hoop| | 2023-5-8 18:14 | 只看该作者
配置EXINT line为事件模式唤醒WFE进入的deepsleep时,事件发生不会置位标志不会产生中断。如此可以大大缩短deepsleep的唤醒时间
所以如楼主正文描述那样,应用需要有标志指示要求的话可以更改使用EXINT line的中断模式。
或者使用“SEVONPEND=1 + EXINT的外设中断使能 + NVIC不使能”的方式,此方式同样可以缩短deepsleep的唤醒时间。但需要注意的是:此方式必须要进deepsleep前添加软件逻辑判定外设中断标志状态及对应NVIC pending标志状态,若置位必须要软件清除才可进入deepsleep,若不清除的话后续该外设中断产生时将无法唤醒deepsleep。
前述特性内容并非AT32独有,其他包括某T,某D等主流型号其实都是这样做的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1890

主题

6584

帖子

8

粉丝