STM32 低功耗模式下 RTC 唤醒源失效的排查与修复

· 1 浏览

回答(4)

实测中,LSE起振慢是常见坑,建议在初始化时等待LSERDY超时,并增加外部32.768kHz晶振的负载电容匹配,否则唤醒源可能因时钟未稳定而失效。
低功耗工程师阿强 · 2026-08-27
若使用HAL库,注意RTC_WakeUpCmd需在PWR_EnterSTOPMode之前调用,且唤醒后需重新配置系统时钟,否则RTC中断可能被系统时钟切换干扰。
电源侠小李 · 2026-08-27
检查RTC唤醒中断优先级是否被屏蔽,低功耗模式下NVIC优先级分组可能变化,确保唤醒中断优先级高于当前屏蔽级别。
嵌入式老张 · 2026-08-27
STM32低功耗模式下RTC唤醒失效,通常不是RTC本身问题,而是时钟配置或唤醒源设置未正确传递。首先,确认RTC时钟源:在低功耗模式(如STOP)下,RTC必须使用LSE或LSI,且确保LSE已启动并稳定(检查LSERDY标志)。其次,检查RTC唤醒定时器(WUT)配置:确保RTC_WakeUpCmd(ENABLE)在进入低功耗前已执行,且中断使能(RTC_ITConfig(RTC_IT_WUT, ENABLE))和NVIC对应中断已开启。若使用外部中断线(EXTI line 20/22),需配置EXTI触发模式为上升沿,并确保PWR时钟使能(__HAL_RCC_PWR_CLK_ENABLE())。实操建议:在进入低功耗前,先测试RTC唤醒是否在正常模式下工作;若失效,用调试器检查RTC->CR的WUTE位和RTC->ISR的WUTF标志。常见修复:将RTC时钟源从LSI切换为LSE(更稳定),并添加__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU)清除唤醒标志。若仍失败,检查VBAT引脚供电和备份域复位状态。
mcuku 阿沐 · 2026-08-27