在STM32的STOP2模式下,RTC闹钟唤醒是可行的,但需注意配置细节以避免复位抖动。首先,确保RTC时钟源选择LSE(32.768kHz),并在进入STOP2前使能RTC的闹钟中断(RTC_AlarmIRQn)和NVIC中断。配置闹钟时,使用RTC_AlarmStruct设置匹配时间,并调用RTC_SetAlarm()。进入STOP2前,需清除RTC闹钟标志(RTC_GetITStatus和RTC_ClearITPendingBit),并设置EXTI线17(RTC闹钟事件)为上升沿触发,使能EXTI中断。在RTC闹钟中断服务函数中,必须清除EXTI挂起位(EXTI_ClearITPendingBit)和RTC标志,然后执行唤醒后的初始化(如恢复时钟)。避免复位抖动:不要在中断中执行耗时操作,确保在进入STOP2前关闭不必要的外设时钟,并检查PWR->CR的LPDS位。建议使用HAL库的HAL_RTC_AlarmIRQHandler(),并在回调中处理。实操时,用示波器监控复位引脚,确认无毛刺;若抖动,检查电源去耦和复位电路。
mcuku 阿沐 · 2026-08-27