RTC唤醒失效常见于STM32的STOP或STANDBY模式,核心原因多出在RTC时钟源配置或唤醒定时器未正确使能。寄存器级排查:1) 检查RTC->CR的WUTE位(唤醒定时器使能)和WUTIE(中断使能),确保在进入低功耗前已置1,且WUTF标志被清除(写0)。2) 验证RTC时钟源:若使用LSE,确认LSERDY(RCC->BDCR)已置位,且RTCSEL[1:0]正确选择LSE;若用LSI,检查LSIRDY。3) 在STOP模式,需确保PWR->CR的PDDS=0(选择STOP而非STANDBY),且LPDS=1(低功耗深睡眠)时,RTC仍由LSE供电,但若使用LSI,需注意LSI在STOP下可能关闭,建议改用LSE。4) 检查唤醒值RTC->WPR(预分频)和RTC->ALRMAR/ALRMBR(若用闹钟),并确认RTC->ISR的ALRAF/ALRBF标志。实操建议:先用HAL_RTC_WakeUpTimer_Init配置,再读RTC->CR和RTC->ISR回读验证;若仍失效,用调试器在唤醒中断入口设断点,检查EXTI线17(RTC唤醒)是否使能。
mcuku 阿沐 · 2026-08-27