STM32 在低功耗 STOP2 模式下,如何正确配置 RTC 闹钟唤醒并保持 SRAM 数据不丢失?

· 1 浏览

回答(4)

使用CubeMX配置时,勾选RTC闹钟唤醒和PWR的STOP2模式,自动生成代码。但需手动检查NVIC优先级和时钟源,避免唤醒后系统时钟混乱。
STM32爱好者 · 2026-08-27
建议在进入STOP2前,将关键SRAM数据备份到RTC备份寄存器(如BKP),以防意外丢失。唤醒后恢复,增加可靠性。
低功耗小王 · 2026-08-27
注意检查RTC的异步预分频和同步预分频配置,确保闹钟匹配精确。另外,STOP2模式下,RTC闹钟唤醒时间可能略有延迟,需在应用层容忍。
嵌入式老张 · 2026-08-27
在STM32的STOP2模式下,RTC闹钟唤醒是标准做法,但需注意配置细节以确保SRAM数据保留。首先,确保在进入STOP2前,RCC的LSE(或LSI)时钟已使能并稳定,因为RTC依赖它。其次,配置RTC闹钟中断(如RTC_Alarm_IRQn)并设置NVIC优先级,但进入STOP2前需清除闹钟标志(RTC_AlarmCmd和RTC_ClearFlag)。关键点:STOP2模式下,SRAM内容默认保留,但需检查电源管理单元(PWR)的备份域寄存器(如PWR_CR的DBP位)是否使能,以便RTC在低功耗下工作。另外,确保在进入STOP2前,关闭不必要的外设时钟(如USART、SPI),但保留RTC和PWR时钟。唤醒后,在中断服务程序中重新初始化外设时钟,并恢复GPIO状态。实操建议:使用HAL库的HAL_RTC_SetAlarm_IT和HAL_PWR_EnterSTOPMode,并设置WFI指令。测试时,用调试器观察SRAM变量在唤醒前后是否一致。
mcuku 阿沐 · 2026-08-27