STM32由RTC从待机状态唤醒 [英] STM32 wake up from standby by RTC

查看:19
本文介绍了STM32由RTC从待机状态唤醒的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在编程STM32L051R8,有下一个问题。我大部分时间都在尝试使用待机模式,有时会被RTC唤醒,这是一个自动唤醒。如果我在没有睡眠的情况下工作-一切都运行得很好,我每次都会收到RTC中断,但当我使用待机时-不要。

如果我使用待机,我的第一个周期会很好:

  1. 重置
  2. 设置RTC
  3. 进入待机状态
  4. 正在等待中断
  5. 唤醒
但第二个和下一个周期在进入待机状态后立即唤醒(3)。

推荐答案

当微控制器处于待机模式且发生实时时钟中断时,wuf:唤醒标志将由PWR control/status register中的硬件设置(第162页)。

第0位WUF:唤醒标志

此位由硬件设置,并由 系统重置或通过设置压水堆电源控制中的CWUF位 寄存器(PWR_CR)

0:未发生唤醒事件

1:唤醒事件是 从WKUP引脚或从RTC警报(警报A或警报B)接收, RTC篡改事件、RTC时间戳事件或RTC唤醒)。

最初,这是通过系统重置来清除的,因此这就是为什么您的第一个周期是正常的。但从待机状态唤醒后,必须使用PWR控制寄存器中的CWUF位手动将其清除。如果您不这样做,则控制器将立即唤醒,因为此位表示发生了唤醒事件。

您可以直接访问寄存器来设置此位,也可以使用HAL库使用下列宏:

__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);

这篇关于STM32由RTC从待机状态唤醒的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆