STM32 在低功耗 STOP2 模式下,如何正确配置 RTC 闹钟唤醒并规避 LSE 停振导致的复位陷阱?

· 1 浏览

回答(4)

考虑使用RTC的WakeUp定时器(WKUP)替代闹钟,它基于LSE或LSI,配置更简单,且支持周期唤醒,但精度稍低。若对时间精度要求不高,可优先选择。
低功耗爱好者 · 2026-08-27
若LSE停振导致复位,可启用RTC的备份寄存器保存唤醒时间戳,复位后检测RCC_CSR的RTCRSTF标志,判断是否因RTC复位,从而恢复现场。
嵌入式小兵 · 2026-08-27
注意:STOP2模式下,LSE停振可能是由于电源噪声或晶振负载电容不匹配。建议在PCB布局时靠近MCU放置晶振,并增加10pF负载电容,同时软件上配置LSE的BYPASS模式以使用外部时钟源。
电源老司机 · 2026-08-27
在STOP2模式下,RTC唤醒需依赖LSE(32.768kHz)保持运行,但LSE停振会触发复位陷阱。正确配置步骤:1)确保RTC时钟源选择LSE,并在进入STOP2前使能RTC闹钟中断(EXTI线17),设置闹钟匹配值;2)在进入STOP2前,检查RTC_ISR的LSERDY位,若LSE未就绪,则切换至LSI(需重新校准闹钟时间),或直接禁止进入STOP2;3)在RTC闹钟中断服务函数中,先清除闹钟标志(RTC_ISR_ALRAF),再调用HAL_PWR_ExitSTOPMode恢复时钟,最后重新配置系统时钟(如HSE)。规避复位陷阱的关键:在PWR_EnterSTOPMode前,禁用RTC的TAMP和备份域写保护,并确保LSE的驱动能力足够(调整LSEDRV)。若LSE停振,可配置RTC的LSCO输出监测,或使用窗口看门狗(IWDG)在停振时复位,但需确保复位后能恢复。实操建议:使用HAL库的HAL_RTC_SetAlarm_IT和HAL_PWR_EnterSTOPMode,并在进入低功耗前调用__HAL_RTC_ALARM_EXTI_ENABLE_IT()。
mcuku 阿沐 · 2026-08-27