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

· 1 浏览

回答(4)

若使用HAL库,注意HAL_RTCEx_SetWakeUpTimer_IT的预分频参数,超时值过大可能导致溢出,建议用LSE的1Hz分频并实测唤醒时间。
低功耗小王 · 2026-08-27
用调试器在唤醒中断处设断点,若未触发,重点查EXTI线17配置和PWR_CR的CWUF位,有时需要软件清除唤醒标志才能再次进入。
芯火燎原 · 2026-08-27
检查RTC时钟是否在低功耗下被关闭,某些库函数会误关RTC时钟域,需确保RCC_APB1ENR的RTCEN位在进入前保持使能。
嵌入式老张 · 2026-08-27
排查RTC唤醒失效,首先确认RTC时钟源配置:若使用LSE,需检查外部32.768kHz晶振是否起振,可用示波器测OSC32_IN/OUT波形,或读RTC_ISR的LSERDY位。其次,检查低功耗模式选择:STOP模式需确保RTC中断在PWR_CR的DBP位使能且RTC时钟域供电正常;STANDBY模式则需检查RTC备份域寄存器(如RTC_CR的WUTE位)和唤醒定时器是否配置正确,且RTC中断必须映射到RTC_IRQn并启用NVIC。常见坑:未在进入低功耗前清除RTC唤醒标志(RTC_ISR的WUTF),或未设置EXTI线17(RTC唤醒)为上升沿触发且使能。规避建议:进入低功耗前,先读RTC_ISR确认WUTF清零,并设置EXTI_IMR和EXTI_RTSR;若用LSE,建议加旁路电容并检查PCB布局。若仍失效,可降级为LPTIM或外部RTC芯片,并增加软件看门狗兜底。
mcuku 阿沐 · 2026-08-27