搜索
bottom↓
回复: 6

求助:stm32 硬复位后如何能够保持内部ram储存的数据还是...

[复制链接]

出0入4汤圆

发表于 2017-1-13 16:18:19 | 显示全部楼层 |阅读模式
本帖最后由 SCREA 于 2017-1-13 18:32 编辑

stm32 硬复位后如何能够保持内部ram储存的数据还是原来的数据?  就是说复位之前 和之后  这块RAM数据是一样的


  1. IAR 下比如:
  2. __root __no_init long AA @ 0x2000 0000;  //MSP上这样写复位后进入main函数之前AA的数据不变。但在STM32上复位再进入main之前,AA数据就变了

复制代码

出0入4汤圆

发表于 2017-1-13 17:25:10 | 显示全部楼层
试试给变量指明一个固定的位置,例如:   __root __no_init long AA@0x2001FFFC
在main()之后再给它初始化为0x1122334
这个0x2001FFFC 是你的内部RAM的最后的位置(假设有RAM 有128K,长度0x20000),

出0入4汤圆

 楼主| 发表于 2017-1-13 17:39:25 | 显示全部楼层
dtcc1234 发表于 2017-1-13 17:25
试试给变量指明一个固定的位置,例如:   __root __no_init long AA@0x2001FFFC
在main()之后再给它初始化 ...

谢谢回复,忘记固定地址了。

原本是__root __no_init long AA @ 0x2000 0000= 0x1122334;


我指带电硬复位后指定的 RAM数据不变,这个怎么处理---------好几次都给看的人描述缺斤短俩,抱歉

出0入4汤圆

发表于 2017-1-13 18:00:14 | 显示全部楼层
这里 __no_init 的意思就是不要初始化,你在语句后面又给它初始化为0x1122334,  这意思就是让IAR 编译的初始化代码(复位之后立即在main() 执行之前执行)就给它初始化好,好像有点自相矛盾。

出0入4汤圆

 楼主| 发表于 2017-1-13 18:33:14 | 显示全部楼层
dtcc1234 发表于 2017-1-13 18:00
这里 __no_init 的意思就是不要初始化,你在语句后面又给它初始化为0x1122334,  这意思就是让IAR 编译的初 ...

对。 不加的。在程序运行中里面的值改变。


现在只想解决 如何硬件复位后 RAM中的值不变

出0入4汤圆

发表于 2017-1-13 20:59:55 | 显示全部楼层
我的程序就像二楼写的那样: __root __no_init long AA@0x2001FFFC
没有初始化恒定值,第一次上电时是一个随机数,而后每次硬件复位(保证不要断电,不要进入standby 模式)以后,进入main()都发现这个数没有改变。你要的就是这样的结果吧?

出0入4汤圆

 楼主| 发表于 2017-1-13 21:11:47 | 显示全部楼层
dtcc1234 发表于 2017-1-13 20:59
我的程序就像二楼写的那样: __root __no_init long AA@0x2001FFFC
没有初始化恒定值,第一次上电时是一个 ...

咦。我再试试,可能忽略某个细节了。谢谢耐心回复啊
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 21:57

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表