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;
}
这段代码中,这几个变量,设为局部变量,仿真时看到的结果完全不对,设为全部变量就可以,不知为何?还各位路过的指点下!
我是进行单步调试,看到的,没有出这个函数
回复:STM8S 变量的怪事
不至于吧,我也经常这样设置,没碰到这情况啊。要不在前面加个static试试:)
RE:STM8S 变量的怪事
应该是在编译的时候给优化了,把设置成Static或者是volatile试试,应该就会没有问题了。。RE:STM8S 变量的怪事
我也遇到过,一般是加上Static,使它成为全局静态变量。RE:STM8S 变量的怪事
你定义的不是局部变量,而是临时变量,这个只有进入该函数以后才能看到。RE:STM8S 变量的怪事
他仿真应该是在该函数内查看这个变量吧,出了函数再看这个变量其值当然可能发生变化。楼主说的不太清楚RE:STM8S 变量的怪事【悬赏问答】
我是进行单步调试,看到的,没有出这个函数RE:STM8S 变量的怪事【悬赏问答】
我也遇到过局部的时候就跑到硬件错误里面了,全局没问题,可能是编译器高的鬼吧!一般是加上Static使它成为全局静态变量。有的时候也不行RE:STM8S 变量的怪事【悬赏问答】
你用的什么编译器,我刚学这个,弄得我一头雾水!回复:STM8S 变量的怪事【悬赏问答】
可以看看是不是编译器 优化是不是放到最低了,有时候程序一优化会出莫名其妙的问题,你可试试将局部变量赋值给全局的,然后看看是否值是否一致
页:
[1]