主回答:STM32低功耗下RTC闹钟唤醒失败,最常见隐性坑是备份域复位后LSE未正确使能。首先,检查RCC->BDCR的LSEON位,确保在进入Stop/Standby前LSE已稳定(LSERDY置1),且备份域电源(VBAT)正常。其次,若使用外部32.768kHz晶振,务必配置BYPASS位(若用有源晶振)或负载电容匹配;否则LSE起振慢,闹钟比较时RTC时钟未就绪。实操建议:在初始化RTC前,先执行PWR_BackupAccessCmd(ENABLE)使能备份域访问,然后等待LSERDY超时(如500ms),再配置RTC。若仍失败,检查是否意外触发了RTC_WriteProtectionCmd,或备份域寄存器被复位(如RTC_BackupResetCmd误用)。最后,在低功耗模式进入前,用RTC_GetFlagStatus(RTC_FLAG_ALRAF)清除残留闹钟标志,并确保EXTI17(RTC闹钟)中断优先级高于PWR唤醒配置。
mcuku 阿沐 · 2026-08-27