gang-366961 发表于 2012-7-16 07:55:08

STM8S 变量的怪事【悬赏问答】

void EEROM3(void)
{
unsigned int  Vef;
unsigned long int Vef3;
unsigned int E;

Vef1=E4000*256+E4001;
Vef3=25000000;
Vef =Vef3/Vef1;

E=Vef*510;
}
这段代码中,这几个变量,设为局部变量,仿真时看到的结果完全不对,设为全部变量就可以,不知为何?还各位路过的指点下!
 
我是进行单步调试,看到的,没有出这个函数
 

xiaodc88 发表于 2012-7-16 08:29:03

回复:STM8S 变量的怪事

不至于吧,我也经常这样设置,没碰到这情况啊。
要不在前面加个static试试:)

yjwpm 发表于 2012-7-16 09:23:34

RE:STM8S 变量的怪事

应该是在编译的时候给优化了,把设置成Static或者是volatile试试,应该就会没有问题了。。

航天航海 发表于 2012-7-16 09:28:05

RE:STM8S 变量的怪事

我也遇到过,一般是加上Static,使它成为全局静态变量。

发表于 2012-7-16 09:50:00

RE:STM8S 变量的怪事

你定义的不是局部变量,而是临时变量,这个只有进入该函数以后才能看到。

xiaodc88 发表于 2012-7-16 09:56:43

RE:STM8S 变量的怪事

他仿真应该是在该函数内查看这个变量吧,出了函数再看这个变量其值当然可能发生变化。楼主说的不太清楚

gang-366961 发表于 2012-7-16 10:57:48

RE:STM8S 变量的怪事【悬赏问答】

我是进行单步调试,看到的,没有出这个函数

智空小子-360791 发表于 2012-7-16 13:23:57

RE:STM8S 变量的怪事【悬赏问答】

我也遇到过局部的时候就跑到硬件错误里面了,全局没问题,可能是编译器高的鬼吧!一般是加上Static使它成为全局静态变量。有的时候也不行

gang-366961 发表于 2012-7-16 14:18:18

RE:STM8S 变量的怪事【悬赏问答】

你用的什么编译器,我刚学这个,弄得我一头雾水!

shahexu 发表于 2012-7-17 08:53:55

回复:STM8S 变量的怪事【悬赏问答】

可以看看是不是编译器 优化是不是放到最低了,有时候程序一优化会出莫名其妙的问题,
你可试试将局部变量赋值给全局的,然后看看是否值是否一致
页: [1]
查看完整版本: STM8S 变量的怪事【悬赏问答】