STM32 在低功耗 STOP 模式下,如何用 RTC 闹钟唤醒并保持 SRAM 数据不丢失的完整配置与实测电流

· 1 浏览

回答(4)

补充:实测建议用STM32CubeMX生成代码,并测量时断开调试器(SWD)以减少漏电流。典型STM32L4系列STOP+RTC电流可低至1μA,但F1系列会稍高(约5μA)。
低功耗达人 · 2026-08-27
补充:若需更低功耗,可选用PWR_STOPENTRY_WFE代替WFI,但需注意事件标志清除。另外,SRAM数据保持前提是VDD不掉电,若用LDO低功耗模式,SRAM内容仍有效。
电源控小李 · 2026-08-27
补充:进入STOP前务必调用HAL_RTCEx_DeactivateWakeUpTimer或确认闹钟已使能,否则可能无法唤醒。实测中,若LSE未稳定,需等待LSERDY标志置位。
嵌入式老张 · 2026-08-27
在STM32低功耗STOP模式下,使用RTC闹钟唤醒并保持SRAM数据不丢失,核心是确保进入STOP前配置好RTC外部低速晶振(LSE)作为时钟源,并启用RTC闹钟中断。具体步骤:1) 初始化RTC,选择LSE(32.768kHz),配置闹钟匹配秒或日期;2) 使能RTC闹钟中断(EXTI线17),并设置NVIC优先级;3) 进入STOP前,调用HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI),此时SRAM内容保留(因内核停止但电源未断);4) 闹钟触发后,RTC中断唤醒,系统时钟自动切换回HSI,需在中断服务中重新配置系统时钟。实测电流:典型LSE+RTC闹钟唤醒,STOP模式电流约2-3μA(LDO低功耗模式),若使用LDO正常模式则约10μA;唤醒时间约5-10μs。注意:确保RTC备份域(VBAT)供电正常,且未使用HSE,否则电流会显著增加。建议用万用表串联测量,并关闭所有未用外设时钟。
mcuku 阿沐 · 2026-08-27