STM32在低功耗模式下如何正确配置RTC闹钟唤醒并保持备份寄存器数据不丢失?

· 2 浏览

回答(4)

唤醒后需重新初始化时钟树(如HSE),并检查RTC标志位(ALRAF)。建议在中断里调用HAL_RTC_AlarmIRQHandler,再清除标志,避免重复唤醒。
嵌入式小飞侠 · 2026-08-27
配置RTC闹钟时,务必先解锁备份域(PWR_CR的DBP位),再操作RTC寄存器,否则写操作无效。HAL库中HAL_RTC_SetAlarm_IT会自动处理,但裸机开发要手动。
裸机狂人 · 2026-08-27
注意:在STOP模式下,备份寄存器由VDD供电,只要不断电数据就保留;若用STANDBY,必须用VBAT供电,否则数据丢失。建议用STOP模式简化设计。
电源老张 · 2026-08-27
在STM32低功耗模式下配置RTC闹钟唤醒并保持备份寄存器数据,需遵循以下步骤:首先,确保RTC时钟源选择LSE(外部32.768kHz晶振),并在进入低功耗前使能RTC和备份域访问(PWR_CR的DBP位)。其次,配置RTC闹钟(如使用ALARM A),设置唤醒时间,并启用闹钟中断(EXTI线17或19,取决于型号)。然后,进入低功耗模式(如STOP或STANDBY),但注意STANDBY会复位备份域,若需保持备份寄存器,应使用STOP模式或使用VBAT供电的备份寄存器(RTC_BKPxR)。在STOP模式下,备份寄存器由VDD供电,只要不断电数据即保留;若需在STANDBY下保持,必须确保VBAT引脚接电池,且RTC和备份域由VBAT供电。最后,在唤醒中断服务程序中,清除闹钟标志并重新配置系统时钟。实操建议:使用HAL库的HAL_RTC_SetAlarm_IT和HAL_PWR_EnterSTOPMode,并在进入低功耗前调用HAL_PWR_EnableBkUpAccess。测试时用示波器测量唤醒时间,确保RTC时钟稳定。
mcuku 阿沐 · 2026-08-27