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

· 2 浏览

回答(4)

在低功耗模式下,确保RTC中断唤醒后,先重新配置系统时钟,再访问RTC,避免因时钟未稳定导致读取错误。
STM32老手 · 2026-08-27
建议使用LSE旁路电容,并启用RTC时钟源检测,若LSE失效,可切换到LSI并记录误差,但需在应用层补偿。
低功耗达人 · 2026-08-27
注意:复位后检查RTC_ISR的ALRAF标志,若已置位,需清除并重新设置闹钟,防止意外唤醒。
嵌入式小兵 · 2026-08-27
在STM32低功耗模式下配置RTC闹钟唤醒,核心是确保RTC时钟源在复位后保持稳定。首先,选择LSE(32.768kHz)作为RTC时钟源,因为它精度高且功耗低。在进入低功耗模式前,配置RTC闹钟中断,并启用外部中断线(如RTC_Alarm_IRQn)以唤醒MCU。关键点:在系统复位后,必须重新初始化RTC时钟源,并检查备份域寄存器(如RTC_ISR中的INITS标志)以确认LSE是否就绪。若LSE未就绪,可回退到LSI,但需注意LSI精度较差,会导致时间漂移。为避免漂移,建议在备份域中保存RTC校准值,并在复位后重新应用。实操建议:使用HAL库时,在HAL_RTC_Init后调用HAL_RTC_SetAlarm_IT,并确保PWR时钟使能,设置备份域访问。另外,在进入Stop模式前,关闭不必要的外设时钟,并配置RTC闹钟中断优先级高于其他中断。测试时,用示波器测量LSE波形,确认无漂移。
mcuku 阿沐 · 2026-08-27

🧰 配套工具

⏰ 时钟分频计算