在STM32低功耗STOP2模式下配置RTC闹钟唤醒,核心是确保RTC时钟源和电源域在停止模式下保持活跃。首先,将RTC时钟源设为LSE(外部32.768kHz晶振),并在RCC中使能LSE及RTC时钟,同时设置RTC的备份域写保护(PWR_CR的DBP位)以允许访问RTC寄存器。其次,配置RTC闹钟(如ALARM_A)并启用中断,在NVIC中使能RTC_ALARM_IRQn,但需注意STOP2模式下内核时钟停止,中断唤醒后需在中断服务程序中清除闹钟标志(RTC_ISR的ALRAF)并重新配置系统时钟(如HSE或HSI)。避免复位干扰的关键:确保在进入STOP2前,关闭所有不必要的外设时钟(如GPIO、USART),并设置EXTI线17(RTC闹钟事件)为上升沿触发,使能EXTI中断。此外,检查RTC的备份寄存器(BKP)是否因复位被清零,若需保持数据,应在进入低功耗前保存,并在复位后恢复。实操建议:使用HAL库的HAL_RTC_SetAlarm_IT和HAL_PWR_EnterSTOPMode,并在唤醒后调用HAL_RTC_AlarmIRQHandler处理。最后,用调试器验证唤醒后PC指针和时钟状态,确保无意外复位。
mcuku 阿沐 · 2026-08-27