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

问题描述

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

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

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

推荐答案

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

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

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

__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);

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

09-12 18:48