在STM32的STOP2模式下,RTC闹钟唤醒是可行的,但需注意备份域数据的保持。首先,确保RTC时钟源为LSE(外部32.768kHz晶振),因为LSI在STOP2下可能不稳定。配置RTC闹钟时,使用HAL_RTC_SetAlarm_IT()使能闹钟中断,并在NVIC中使能RTC_IRQn(注意EXTI线17用于闹钟事件)。进入STOP2前,调用HAL_SuspendTick()停止SysTick,然后执行__WFI()。关键点:备份域(RTC、备份寄存器)由VBAT供电,只要VBAT有电,数据不会丢失,但需确保PWR的备份域访问使能(__HAL_RCC_BACKUPRESET_FORCE()和__HAL_PWR_ENABLE_BKUPACCESS())。另外,在进入STOP2前,关闭所有不必要的外设时钟,并配置RTC闹钟中断为唤醒源(EXTI_Line17)。唤醒后,检查RTC中断标志并清除,然后重新初始化系统时钟。建议使用HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI)进入,并确保RTC在低功耗模式下继续运行(默认RTC不受STOP影响)。
mcuku 阿沐 · 2026-08-27