打印

..MCU复位后全局变量会不会恢复初值?

[复制链接]
5763|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Swd21ic|  楼主 | 2007-11-29 22:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的程序中定义了很多全局标志
g_MachineState = 0;
g_AlarmFlag = 0;
g_DisFlag = 1;
..
等等,一开始定义的时候都赋了初值,好象全局变量的赋值是在编译的时候就弄好了的.

程序上电后并没有  变量初始化的函数..如: PowerOnParaInit() 

因为听到有位兄台说MCU复位后RAM不变..只是从0x0000开始运行..

那我的这些标志位是不是就会乱了??  但是上电复位也是一种复位阿,为什么那时RAM(全局变量)就能是初值.

呵,很弱的问题,各位提醒提醒..实际上我让看门狗复位后也没发现有什么异常..: )

相关帖子

沙发
wxj1952| | 2007-11-29 22:46 | 只看该作者

问得好

只要你的程序有变量初始化说明,BL51连接程序就会把INIT.OBJ连接进来。也就是程序每当从0000开始运行时,都是从STARTUP.OBJ--INIT.OBJ--MAIN.OBJ这样一个顺序。所以,如果程序只要从0000开始运行,都必然重新初始化全局变量!

这不是你所希望的,所以要有程序上的措施或者连接时的设定。

使用特权

评论回复
板凳
computer00| | 2007-11-29 23:04 | 只看该作者

自己初始化一下它不就得了,想要多少就是多少

使用特权

评论回复
地板
dai_weis| | 2007-11-30 11:08 | 只看该作者

复位后的变量初始值必须初始化

要不然RAM中的数据可能在复位中出现更改,而且也不能保证你的变量被分派的位置和复位前完全一样,这样使用没有初始化的变量就非常的危险了。

使用特权

评论回复
5
Swd21ic|  楼主 | 2007-11-30 12:34 | 只看该作者

~_~

2楼说得我有点糊涂了...

那我照上面那样GOBAL定义变量时并初始化,如:

INT8U g_MachineState = 0;
INT8U g_DisFlag = 1;

int main(void)
{
    ..
    return(0);
}

是不是复位后重新开始运行时..变量都能恢复原值?


使用特权

评论回复
6
wxj1952| | 2007-11-30 13:55 | 只看该作者

re:

只要复位,全局变量就被赋予初始化值,(如果你没有对变量初始化,那就默认初始为“0”)程序中对该变量的所有修改值全部丢失.
除非你有特殊措施.没甚么糊涂的,试验一下就知道了.

使用特权

评论回复
7
Swd21ic|  楼主 | 2007-11-30 14:46 | 只看该作者

~~~

呵呵,那意思不用再在程序去做变量初始化了??

那这样也就不存在什么问题了.我应该就不需要改了. .

不过这句是什么意思
"这不是你所希望的,所以要有程序上的措施或者连接时的设定"


使用特权

评论回复
8
myic200610| | 2012-4-9 00:01 | 只看该作者
我最近也碰到这个问题了。
本人以为,RAM的数据在上电(断电再加电)复位时,为 初值;在没有断电的情况下复位(例如看门狗复位),RAM的数据继续保持,不会改变。

使用特权

评论回复
9
delin17| | 2012-4-9 10:46 | 只看该作者
全局变量,有初值的应该都会赋初值的。
实际具体没有没重新赋初值,看其启动的汇编是最明了的

使用特权

评论回复
10
受不了了| | 2012-4-9 11:10 | 只看该作者
我最近也碰到这个问题了。
本人以为,RAM的数据在上电(断电再加电)复位时,为 初值;在没有断电的情况下复位(例如看门狗复位),RAM的数据继续保持,不会改变。 ...
myic200610 发表于 2012-4-9 00:01

如果没有初始化,哪怕是断电一会后再重新上电,完全可能RAM里还保持以前的数据,以前二姨家讨论过这个问题,我记得也试过,1分钟后都还有很多数据能保持

使用特权

评论回复
11
coody| | 2012-4-9 16:14 | 只看该作者
一般RAM是不会的

使用特权

评论回复
12
ayb_ice| | 2012-4-10 17:12 | 只看该作者
g_MachineState = 0;
g_AlarmFlag = 0;
g_DisFlag = 1;
这样的变量在运行到main时会被正确初始化的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

71

主题

781

帖子

1

粉丝