STM32低功耗模式下RTC唤醒失效,常见根因有三:1) 未正确配置RTC时钟源为LSE(外部32.768kHz晶振),若使用LSI在STOP模式会漂移或停止;2) 未使能RTC的唤醒中断(如RTC_Alarm或WakeUpTimer),且在进入低功耗前未调用HAL_RTCEx_DeactivateWakeUpTimer或清除标志;3) 电源域问题,如未开启PWR的备份域访问(PWR_CR的DBP位),或未保持RTC在备份域供电。实操建议:先检查RTC是否在STOP/STANDBY下仍运行(用调试器读RTC计数器),再确认NVIC中RTC中断优先级和低功耗模式(STOP需用WFI,STANDBY需用PWR_EnterSTANDBYMode)。规避策略:优先用LSE+RTC_Alarm,进入前调用HAL_RTCEx_SetAlarm_IT并清除RTC_FLAG_ALRAF;若用STANDBY,需确保RTC在备份域且唤醒源设为RTC Alarm,并检查PWR_WAKEUP_PIN是否冲突。
mcuku 阿沐 · 2026-09-06