0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MCU复位RAM会保持吗,如何实现复位时变量数据保持

聚沃科技 2024-03-01 09:32 次阅读

在使用MCU时,通常大家默认MCU复位时RAM会被复位清零,那实际MCU复位时RAM是什么状态?如何让mcu复位时RAM保持不变呢?

MCU复位有电源复位、Standby复位、内核复位、看门狗复位、引脚复位等。

wKgaomXhL92AaWoqAABZqTRwhlo190.png

其中内部会有掉电动作的复位有电源复位和Standby复位,由于内部电路有掉电所以这些复位RAM是无法保持的,RAM会处于随机值状态,实际也不是0值。其他复位由于不掉电,本质上是不会直接复位RAM的。

那为什么一般执行了软件复位和看门狗复位后RAM会复位,没有初始化的变量值变成0呢?实际上是因为编译器自动生成的RAM初始化代码在MCU启动后进入main函数前完成的,这些函数我们通过查看编译后的map文件可以找到他们踪迹。

wKgZomXhL-KAMdhGAAAP0Z9AXz0828.png

Keil为例,编译后输出信息里会看到RW-DATA和ZI-DATA,其中ZI-DATA就是没有给定初始化值或初始化值给定为0的全局数据。

打开工程设置,在RAM/IRAM的Memory配置里有一个NOINIT的勾选,勾选后就可以配置为不初始化属性,编译器将不对这个区域的全局变量进行初始化赋值。

wKgaomXhL-eAF17YAAAd4VEdbLE446.png

如果我们有希望复位后还能保持的RAM变量可以定义在配置了NOINIT的RAM区域中。

除了直接在工程配置里修改,如果自行编写链接文件,也可以添加NOINIT字段来进行配置。

wKgaomXhL-uAFtsmAABU44uuHCw154.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6032

    文章

    44513

    浏览量

    632706
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16977

    浏览量

    350215
  • 嵌入式
    +关注

    关注

    5068

    文章

    19008

    浏览量

    302990
  • RAM
    RAM
    +关注

    关注

    8

    文章

    1367

    浏览量

    114517
收藏 人收藏

    评论

    相关推荐

    MCU复位RAM保持吗,如何实现复位变量数据保持?#单片机 #嵌入式开发 #RAM

    mcu嵌入式开发
    聚沃科技
    发布于 :2024年03月01日 09:34:05

    请问复位引脚保持低逻辑触发MCU复位需要多长时间?

    复位引脚保持低逻辑触发MCU复位需要多长时间?
    发表于 12-23 06:58

    CH32V103复位如何保持变量

    CH32V103复位如何保持变量,只有上电才清零. 原来用stm32f103可以设置 __attribute__((unused, section(".noinit")))改用 CH32V103 后, 每次
    发表于 06-15 06:13

    ARM SOC芯片当其热复位时其系统内存RAM中的原数据是否继续保持不变

    请教:ARM SOC芯片(如手机SOC芯片)系统,当其热复位时,其系统内存RAM中的原数据是否继续保持不变?并且可被热复位后新启动的程序继续
    发表于 08-02 14:11

    ARM SOC芯片系统当其热复位时,其系统内存RAM中的原数据是否继续保持不变?

    请教:ARM SOC芯片(如手机SOC芯片)系统,当其热复位时,其系统内存RAM中的原数据是否继续保持不变?并且可被热复位后新启动的程序继续
    发表于 09-06 11:19

    如何设置STM32单片机非初始化数据变量不被零初始化

    一些产品,当系统复位后(非上电复位),可能要求保持复位RAM中的数据,用来快速恢复现场,或者
    发表于 01-02 15:56 8263次阅读
    如何设置STM32单片机非初始化<b class='flag-5'>数据</b><b class='flag-5'>变量</b>不被零初始化

    哪些因素导致MCU复位

    在调试MCU时,经常会遇到复位的情况。要找到复位的原因,我们就需要了解到有哪些因素导致MCU复位
    的头像 发表于 11-10 16:32 1w次阅读
    哪些因素<b class='flag-5'>会</b>导致<b class='flag-5'>MCU</b><b class='flag-5'>复位</b>

    PKD01:带复位保持模式的单片峰值检测器过时数据

    PKD01:带复位保持模式的单片峰值检测器过时数据
    发表于 04-22 18:59 6次下载
    PKD01:带<b class='flag-5'>复位</b><b class='flag-5'>保持</b>模式的单片峰值检测器过时<b class='flag-5'>数据</b>表

    PKD01:带复位保持模式的单片峰值检测器数据

    PKD01:带复位保持模式的单片峰值检测器数据
    发表于 04-27 12:59 8次下载
    PKD01:带<b class='flag-5'>复位</b><b class='flag-5'>保持</b>模式的单片峰值检测器<b class='flag-5'>数据</b>表

    华大MCU如何实现软件复位

    产品在设计中某些状态下需要MCU进行复位,华大MCU包含了7个复位信号来源,每个复位信号都可以让 CPU 重新运行,绝大多数寄存器会被
    发表于 10-12 11:24 1955次阅读

    MCU复位笔记

    MCU复位的作用及机制复位电路的作用在上电或复位过程中,控制CPU的复位状态:这段时间内让CPU保持
    发表于 11-01 16:25 9次下载
    <b class='flag-5'>MCU</b><b class='flag-5'>复位</b>笔记

    初始化mcu程序选用32k_MCU有多少种复位因素

    在调试MCU时,经常会遇到复位的情况。要找到复位的原因,我们就需要了解到有哪些因素导致MCU复位
    发表于 12-05 10:36 6次下载
    初始化<b class='flag-5'>mcu</b>程序选用32k_<b class='flag-5'>MCU</b>有多少种<b class='flag-5'>复位</b>因素

    MCU复位电路知多少?

    MCU复位电路知多少?
    的头像 发表于 10-17 18:02 1149次阅读
    <b class='flag-5'>MCU</b><b class='flag-5'>复位</b>电路知多少?

    GD32 MCU电源复位和系统复位有什么区别

    GD32 MCU复位分为电源复位和系统复位,电源复位又称为冷复位,相较于系统
    的头像 发表于 02-02 09:37 1423次阅读
    GD32 <b class='flag-5'>MCU</b>电源<b class='flag-5'>复位</b>和系统<b class='flag-5'>复位</b>有什么区别

    如何排查GD32 MCU复位是由哪个复位源导致的?

    上期为大家讲解了GD32 MCU复位包括电源复位和系统复位,其中系统复位还包括独立看门狗复位、内
    的头像 发表于 02-03 09:46 1637次阅读
    如何排查GD32 <b class='flag-5'>MCU</b><b class='flag-5'>复位</b>是由哪个<b class='flag-5'>复位</b>源导致的?