打印

在IAR debug模式下使用option优化MSP430代码

[复制链接]
1809|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaochy1126|  楼主 | 2012-7-22 20:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
IAR debug模式 默认option选择 low,release模式下默认选择 high,代码在选择low时运行正常,设置为high就出错 ,如下

data[] ={0xAA,0x11};
if ((data[0]&0x0f) == 0x00)
{
..............
}

low设置下可以进入,high设置下程序首次运行可以进入,以后就不能进入了。debug调试发现运行时判断条件值竟然为data[0]的值,也就是0xAA

分析原因,data[0]值已赋值,如果期间未被改变时,判断条件也会变成确定值会被优化掉。
由于data[0]的值已确定,判断的条件的值也已确定,所以会被优化。可以改为如下进行测试
volatile char a;
a=1;
data[0]=a;//保证data[0]的值不是确定的
uint8 tmp;

tmp = data[0]&0x0f;

if(tmp == 0x00)

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1061

主题

11320

帖子

26

粉丝