8991|13

76

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教版主:STM32在IAR中怎样阻止启动代码对RAM区进行清零 [复制链接]



版主:
    MCU在VDD不掉电的情况下复位,IAR中怎样设置才能阻止启动代码对RAM区进行清零?
此帖出自stm32/stm8论坛

最新回复

                                 又学了一招。  详情 回复 发表于 2010-10-13 22:58
点赞 关注
 

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
可以修改IAR的启动文件,在检测到RCC_CSR的PINRSTF位为'1'时,跳过对RAM区清零的操作。

具体怎么改启动文件,你可以自己看看,我没有做过。
此帖出自stm32/stm8论坛
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
                                 版主,如果是从standby模式唤醒,RCC_CSR的PINRSTF位是否会为1呢?
此帖出自stm32/stm8论坛
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

4
 
                                 如果是从standby模式唤醒,RCC_CSR的PINRSTF位不会为"1"。
此帖出自stm32/stm8论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

5
 
                                 如果从standby模式唤醒,需要怎么修改可以跳过RAM区数据清零呢?
此帖出自stm32/stm8论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

6
 


__root char __low_level_init(void)

返回0 ,不对RAM清零和初始化(注意如果上电是返回0,全局变量将不能得到正确的初值)
返回1,对RAM清零并初始化初值。

这里有个副作用,如果返回0,则全局变量也不会初始化,因此全局变量可能得不到正确的初始值。

如果仅仅只是需要某种情况下复位,不改变某些变量的值,应该将这些变量定义成__no_init更合适。
此帖出自stm32/stm8论坛
 
 
 

回复

46

帖子

0

TA的资源

一粒金砂(初级)

7
 


谢谢STM32W指导,我用的是IAR5.4,没有找到__root char __low_level_init(void)这个函数的出处,用__no_init定义变量是可以保护RAM中的数据不清0,但是RAM中的初始值是乱的,如果我想让RAM数据在上电复位(PINRSTF为"1"时)的时候清零,而其他复位(例如:standby模式下)RAM数据需要保护,这需要怎么实现呢?望大侠们再指教!
此帖出自stm32/stm8论坛
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

8
 
没有找到__root char __low_level_init(void)这个函数的出处,
-------------------------
直接写个函数就行了。
__root char __low_level_init(void)
{
    if(PINRSTF为1)
    {
       return 1;
    }
    return 0;
}

用__no_init定义变量是可以保护RAM中的数据不清0,但是RAM中的初始值是乱的,
----------------
需要初值,可以手动去赋值初值。
__root char __low_level_init(void)
{
    if(PINRSTF为1)
    {
        //手动对所有no_init变量赋初值
    }
    return 1;
}

个人建议用方法2。
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

9
 
继续向STM32W大侠请教:
__root 定义函数是保证没有使用的函数或者变量也能够包含在目标代码中,在程序中执行时是不是自动插入到启动代码之间?在程序中定义了__root char __low_level_init(void)函数,是不是替换了编译器自带的RAM数据清零判断函数?
此帖出自stm32/stm8论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

10
 
                                 这个问题问的好,期待好的答案
此帖出自stm32/stm8论坛
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

11
 
继续向STM32W大侠请教:
__root 定义函数是保证没有使用的函数或者变量也能够包含在目标代码中,在程序中执行时是不是自动插入到启动代码之间?在程序中定义了__root char __low_level_init(void)函数,是不是替换了 ...
YES
此帖出自stm32/stm8论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

12
 
                                 非常感谢!
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

13
 
                                 俺在iar里喜欢这么干,楼主听stm32w的没错。
此帖出自stm32/stm8论坛
 
 
 

回复

51

帖子

0

TA的资源

一粒金砂(初级)

14
 
                                 又学了一招。
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
Microchip 直播|利用motorBench开发套件高效开发电机磁场定向控制方案 报名中!
直播主题:利用motorBench开发套件高效开发电机磁场定向控制方案
直播时间:2025年3月25日(星期二)上午10:30-11:30
快来报名!

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表