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

查看: 5796|回复: 10

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

[复制链接]

6

主题

27

回帖

0

蝴蝶豆

初级会员

最后登录
2019-5-4
发表于 2012-7-16 07:55:08 | 显示全部楼层 |阅读模式
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;
}
这段代码中,这几个变量,设为局部变量,仿真时看到的结果完全不对,设为全部变量就可以,不知为何?还各位路过的指点下!
 
我是进行单步调试,看到的,没有出这个函数
 
回复

使用道具 举报

25

主题

446

回帖

0

蝴蝶豆

中级会员

最后登录
2019-12-10
发表于 2012-7-16 08:29:03 | 显示全部楼层

回复:STM8S 变量的怪事

不至于吧,我也经常这样设置,没碰到这情况啊。
要不在前面加个static试试
回复 支持 反对

使用道具 举报

2

主题

240

回帖

0

蝴蝶豆

中级会员

最后登录
2020-8-11
发表于 2012-7-16 09:23:34 | 显示全部楼层

RE:STM8S 变量的怪事

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

使用道具 举报

1

主题

39

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2012-7-16 09:28:05 | 显示全部楼层

RE:STM8S 变量的怪事

我也遇到过,一般是加上Static,使它成为全局静态变量。
回复 支持 反对

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2012-7-16 09:50:00 | 显示全部楼层

RE:STM8S 变量的怪事

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

使用道具 举报

25

主题

446

回帖

0

蝴蝶豆

中级会员

最后登录
2019-12-10
发表于 2012-7-16 09:56:43 | 显示全部楼层

RE:STM8S 变量的怪事

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

使用道具 举报

6

主题

27

回帖

0

蝴蝶豆

初级会员

最后登录
2019-5-4
 楼主| 发表于 2012-7-16 10:57:48 | 显示全部楼层

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

我是进行单步调试,看到的,没有出这个函数
回复 支持 反对

使用道具 举报

0

主题

11

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2012-7-16 13:23:57 | 显示全部楼层

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

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

使用道具 举报

6

主题

27

回帖

0

蝴蝶豆

初级会员

最后登录
2019-5-4
 楼主| 发表于 2012-7-16 14:18:18 | 显示全部楼层

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

你用的什么编译器,我刚学这个,弄得我一头雾水!
回复 支持 反对

使用道具 举报

5

主题

77

回帖

0

蝴蝶豆

新手上路

最后登录
2018-5-24
发表于 2012-7-17 08:53:55 | 显示全部楼层

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

可以看看是不是编译器 优化是不是放到最低了,有时候程序一优化会出莫名其妙的问题,
你可试试将局部变量赋值给全局的,然后看看是否值是否一致
回复 支持 反对

使用道具 举报

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版