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

查看: 2939|回复: 6

为何函数内部变量初始化不执行!请大师指点

[复制链接]

1

主题

31

回帖

0

蝴蝶豆

初级会员

最后登录
2020-5-23
发表于 2014-7-13 17:35:33 | 显示全部楼层 |阅读模式
stm8s207 下面的函数中u16 adcTemp=0; 该变量在仿真的时候无法初始化。我用的是cosmic。
本人在使用stlink2仿真单步执行时,发现进入该函数后执行 u8 i=0;后应该执行u16 adcTemp=0;
但是仿真的结果是跳过了u16 adcTemp=0;该变量的初始化,这是为什么呢?请高人指点!!!
void ADC_M1 (void)
{
    u8 i=0;
    u16 adcTemp=0;
    adcTemp = AD_START(m1ADCchs);
}
<
回复

使用道具 举报

6

主题

35

回帖

0

蝴蝶豆

中级会员

最后登录
1970-1-1
发表于 2014-7-13 20:21:29 | 显示全部楼层

RE:为何函数内部变量初始化不执行!请大师指点

“cosmic”是什么?估计是编译器优化了吧!
回复 支持 反对

使用道具 举报

1

主题

31

回帖

0

蝴蝶豆

初级会员

最后登录
2020-5-23
 楼主| 发表于 2014-7-13 21:21:55 | 显示全部楼层

回复:为何函数内部变量初始化不执行!请大师指点

回复第 2 楼 于2014-07-13 20:21:29发表:
“cosmic”是什么?估计是编译器优化了吧!
 
我优化选项没有开啊!
 
 
回复 支持 反对

使用道具 举报

24

主题

514

回帖

6

蝴蝶豆

金牌会员

最后登录
2019-4-8
发表于 2014-7-16 21:22:28 | 显示全部楼层

RE:为何函数内部变量初始化不执行!请大师指点

我也遇到过类似的问题。我定以后发现并没执行,究其原因是因为定义的这部分变量是在条件编译内部使用的,而这部分在程序执行过程中并没有执行到。不知道你是不是这种原因。。。
回复 支持 反对

使用道具 举报

23

主题

195

回帖

0

蝴蝶豆

初级会员

最后登录
1970-1-1
发表于 2014-7-17 16:55:34 | 显示全部楼层

RE:为何函数内部变量初始化不执行!请大师指点

用中断检查哪些没执行到
回复 支持 反对

使用道具 举报

10

主题

93

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-11-27
发表于 2014-7-19 22:24:50 | 显示全部楼层

RE:为何函数内部变量初始化不执行!请大师指点

u16 adcTemp=0;
adcTemp = AD_START(m1ADCchs);
由程序可以看出,adcTemp最后都会被函数AD_START赋值,那么初始化是没有意义的。
如果你是编译器,你也不会理会该初始化过程!
回复 支持 反对

使用道具 举报

2

主题

295

回帖

0

蝴蝶豆

初级会员

最后登录
2018-4-6
发表于 2014-7-20 18:15:15 | 显示全部楼层

RE:为何函数内部变量初始化不执行!请大师指点

u16 adcTemp=0;
adcTemp = AD_START(m1ADCchs);
adcTemp 执行到最后adcTemp=0;完全不起作用的,所以编译器会自动优化掉adcTemp=0;这句话, 用volatile就不会被优化了
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版