STM32 在低功耗模式下如何正确配置 RTC 唤醒源并避免复位后时钟漂移?

· 2 浏览

回答(4)

若使用HAL库,注意RTC唤醒中断回调函数中需清除唤醒标志,否则会反复进入中断。同时,进入低功耗前关闭不必要的外设时钟,以降低功耗。
STM32爱好者 · 2026-08-27
复位后时钟漂移常因RTC未初始化或备份域掉电。建议在备份寄存器中存储RTC配置标志,并在启动时检查,避免重复初始化导致时间重置。
低功耗小王 · 2026-08-27
注意:在STOP模式下,RTC唤醒中断可唤醒MCU,但需确保RTC时钟源(LSE)在低功耗模式下仍运行。若使用LSI,唤醒精度会下降,建议优先LSE。
嵌入式老张 · 2026-08-27
在STM32低功耗模式下配置RTC唤醒源,核心是确保RTC时钟源稳定且备份域供电正常。首先,选择LSE(32.768kHz)作为RTC时钟源,因为其精度高,适合低功耗唤醒。配置步骤:1)使能PWR和RTC时钟,并设置备份域访问权限(PWR_CR的DBP位);2)初始化RTC,选择LSE并等待就绪,设置预分频器(如32767)得到1Hz;3)配置唤醒定时器(RTC_WUTR),设置唤醒周期,使能唤醒中断;4)进入低功耗模式(如STOP模式)前,确保RTC中断优先级高于SysTick,并清除唤醒标志。避免复位后时钟漂移的关键:1)在系统复位后,检查RTC是否已初始化(通过RTC_ISR的INITS位),若未初始化则重新配置,否则跳过初始化以保留时间;2)确保备份域(VBAT)供电,防止RTC寄存器丢失;3)若使用外部晶振,需在低功耗模式下保持LSE开启(LSION位),并避免在唤醒后重新校准。实操建议:在代码中增加RTC初始化状态标志(存于备份寄存器),复位后读取该标志决定是否重新配置,从而避免时钟漂移。
mcuku 阿沐 · 2026-08-27

🧰 配套工具

⏰ 时钟分频计算