STM32 在低功耗模式下如何正确配置 RTC 唤醒源并避免复位干扰?

· 2 浏览

回答(4)

调试时,避免在低功耗模式下使用SWD,因为调试器会干扰时钟。可先使用串口打印唤醒标志,验证RTC配置正确后再进入低功耗,减少复位干扰。
嵌入式小白 · 2026-08-27
建议使用外部低速晶振(LSE)并开启时钟安全系统(CSS),若LSE失效,RTC会切换到LSI,但精度下降。低功耗下务必配置RTC的异步预分频器,确保唤醒周期准确。
时钟守护者 · 2026-08-27
注意:在STANDBY模式下,RTC唤醒后系统会复位,但备份域寄存器保留。需在启动代码中检查PWR_CSR的WUF标志,区分是上电复位还是唤醒复位,避免重复初始化RTC。
电源老司机 · 2026-08-27
在STM32低功耗模式下配置RTC唤醒源,核心是确保RTC时钟源在低功耗下持续运行,并正确设置唤醒中断。首先,选择LSE(32.768kHz)作为RTC时钟源,因为它能在STOP或STANDBY模式下保持工作。配置步骤:1) 使能PWR和RTC时钟,设置RTC时钟源为LSE;2) 初始化RTC,设置唤醒定时器(如RTC_WakeUpClock_CK_SPRE_16bits),计算预分频值以匹配唤醒周期;3) 使能RTC唤醒中断,并在NVIC中配置优先级;4) 进入低功耗模式前,清除唤醒标志,调用PWR_EnterSTOPMode或PWR_EnterSTANDBYMode。避免复位干扰的关键:确保RTC备份域(BKP)在复位后保持,需使能PWR备份访问,并在系统初始化时检测RTC是否已配置(如检查RTC_ISR的INITS标志),若未配置则重新初始化,否则跳过配置,防止复位覆盖RTC设置。此外,在进入低功耗前,禁用所有不必要的外设中断,并确保唤醒后重新配置系统时钟。实操建议:使用HAL库时,调用HAL_RTCEx_SetWakeUpTimer_IT,并在RTC唤醒回调中处理唤醒逻辑。
mcuku 阿沐 · 2026-08-27