lud*_*den 7 microcontroller timer stm32 wakeup real-time-clock
我正在编程STM32L051R8并有下一个问题.我大部分时间都在尝试使用待机模式,有时通过RTC唤醒,这是一个自动唤醒.如果我在没有睡觉的情况下工作 - 一切正常,我每次都会得到一个RTC中断,但是当我使用待机时 - 不要.
如果我使用待机,我的第一个周期很好:
但是第二个和下一个周期在进入待机状态后立即唤醒(3).
Ben*_*ics 12
当单片机处于待机模式且发生RTC中断时,WUF:Wakeup标志将由PWR控制/状态寄存器中的硬件设置(162页).
位0 WUF:唤醒标志
该位由硬件置1,通过系统复位或PWR电源控制寄存器(PWR_CR)中的CWUF位清零
0:没有发生唤醒事件
1:从WKUP引脚或RTC警报(警报A或警报B),RTC篡改事件,RTC TimeStamp事件或RTC唤醒接收到唤醒事件.
最初这是通过系统复位清除的,这就是您的第一个循环正常的原因.但是从待机状态唤醒后,必须使用PWR控制寄存器中的CWUF位手动清除它.如果不这样做,那么控制器将立即唤醒,因为该位表示发生了唤醒事件.
您可以直接访问寄存器来设置此位,或者使用HAL库可以使用以下宏:
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
Run Code Online (Sandbox Code Playgroud)