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

2020-01-01 17:40发布

本帖最后由 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数据就变了

复制代码
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
dtcc1234
1楼-- · 2020-01-01 23:08
试试给变量指明一个固定的位置,例如:   __root __no_init long AA@0x2001FFFC
在main()之后再给它初始化为0x1122334
这个0x2001FFFC 是你的内部RAM的最后的位置(假设有RAM 有128K,长度0x20000),
SCREA
2楼-- · 2020-01-02 02:01
dtcc1234 发表于 2017-1-13 17:25
试试给变量指明一个固定的位置,例如:   __root __no_init long AA@0x2001FFFC
在main()之后再给它初始化 ...

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

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


我指带电硬复位后指定的 RAM数据不变,这个怎么处理---------好几次都给看的人描述缺斤短俩,抱歉
dtcc1234
3楼-- · 2020-01-02 04:42
这里 __no_init 的意思就是不要初始化,你在语句后面又给它初始化为0x1122334,  这意思就是让IAR 编译的初始化代码(复位之后立即在main() 执行之前执行)就给它初始化好,好像有点自相矛盾。
SCREA
4楼-- · 2020-01-02 07:58
dtcc1234 发表于 2017-1-13 18:00
这里 __no_init 的意思就是不要初始化,你在语句后面又给它初始化为0x1122334,  这意思就是让IAR 编译的初 ...

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


现在只想解决 如何硬件复位后 RAM中的值不变
dtcc1234
5楼-- · 2020-01-02 13:27
 精彩回答 2  元偷偷看……
SCREA
6楼-- · 2020-01-02 14:59
dtcc1234 发表于 2017-1-13 20:59
我的程序就像二楼写的那样: __root __no_init long AA@0x2001FFFC
没有初始化恒定值,第一次上电时是一个 ...

咦。我再试试,可能忽略某个细节了。谢谢耐心回复啊

一周热门 更多>