You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

STM32进入及退出低功耗模式时变量及其内容留存问题咨询

STM32低功耗模式下变量存储状态说明

变量的保留情况和低功耗模式类型、变量存储的位置直接相关,以下是不同场景的具体说明:

1. 睡眠模式(Sleep Mode)

  • 仅内核停止运行,所有外设、SRAM、Flash供电完全保持
  • 所有存储在SRAM中的变量(全局变量、静态变量、栈变量、堆变量)全部保留原有内容,退出睡眠模式后可直接读取使用,不需要额外恢复操作
  • 存储在Flash中的常量、代码段不会发生任何变化

2. 停止模式(Stop Mode)

  • 内核、所有外设时钟停止,1.2V内核域可切换为降压器低功耗模式,但SRAM、Flash供电不会断开
  • 普通SRAM存储的所有变量内容全部保留,退出停止模式后程序可以从暂停位置继续运行,不需要重新初始化变量
  • 只要符合芯片 datasheet 规定的供电范围,就不会出现数据丢失的情况

3. 待机模式(Standby Mode)

  • 1.2V内核域完全断电,普通SRAM、Flash全部停止供电,仅备份域(后备寄存器、部分型号支持的备份SRAM)和待机电路保持供电
  • 存储在普通SRAM中的所有变量内容全部丢失,退出待机模式等价于芯片冷复位,所有全局/静态变量会回到代码定义的初始化值,栈、堆区内容全部清零
  • 如果将变量定义到备份SRAM区域,且备份域接了VBAT独立供电,这部分变量可以在待机模式下保留内容,退出待机后可正常读取

注意:绝大多数STM32开发环境默认会在启动阶段自动对SRAM的.bss段清零、对.data段赋初始值,即便你把变量放到了备份SRAM,退出待机后的复位阶段也会被启动代码覆盖,需要手动修改链接脚本或者启动文件,把备份SRAM对应的内存段排除在自动初始化范围外。

内容的提问来源于stack exchange,提问作者Amin-nano-sys

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 20:12:02