你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
gang-366961 提问时间:2012-7-16 07:55 /
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;
}
这段代码中,这几个变量,设为局部变量,仿真时看到的结果完全不对,设为全部变量就可以,不知为何?还各位路过的指点下!
 
我是进行单步调试,看到的,没有出这个函数
 
收藏 评论10 发布时间:2012-7-16 07:55

举报

10个回答
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 变量的怪事【悬赏问答】

你用的什么编译器,我刚学这个,弄得我一头雾水!
火木 回答时间:2012-7-17 08:53:55

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

可以看看是不是编译器 优化是不是放到最低了,有时候程序一优化会出莫名其妙的问题,
你可试试将局部变量赋值给全局的,然后看看是否值是否一致
mikeliujia 回答时间:2012-7-19 21:21:49

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

会不会是楼主你的堆栈溢出了。定义变量到静态存储区没事,定义到栈区就有事,有溢出的可能性。。。楼主可以在仿真环境下,看看堆栈的情况。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版