打印

同样的一段程序,CCS 和 IAR 编译运行的结果不同?

[复制链接]
3616|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
同样的一段程序,CCS 和 IAR 编译运行的结果不同?
软件版本:
CCS:  5.2.1.00018
IAR :5.50.2
硬件: MSP-EXP430G2    Launch Pad
IAR编译后,两个灯交替闪烁。
CCS编译后,两个灯 “常亮” ,闪烁的非常快,没有延时
是由于没有进入延时函数?

程序如下:
#include "msp430g2553.h"
#define uint unsigned int

void delay(uint x)
{
    uint a,b;
    for(a=0;a<x;a++)
      for(b=0;b<1000;b++);
}

int main(void)
{
    // Stop watchdog timer to prevent time out reset
    WDTCTL = WDTPW + WDTHOLD;//关闭看门狗
    P1DIR=0x41;//配置两个LED引脚为输出状态
    P1OUT=0x01;//初始化LED状态,LED1亮,LED2灭
    while(1)
    {
            delay(1000);
          P1OUT ^=0x41;//翻转两个LED管脚状态
    }
}


相关帖子

沙发
eydj2008| | 2014-6-20 11:51 | 只看该作者
注意一下 优化级别   还有防止被优化  不要见怪

使用特权

评论回复
评分
参与人数 1威望 +4 收起 理由
天高任鸟飞 + 4 多谢!
板凳
dirtwillfly| | 2014-6-20 11:53 | 只看该作者
本帖最后由 dirtwillfly 于 2014-6-20 11:55 编辑

检查软件设置是否相同

使用特权

评论回复
评分
参与人数 1威望 +4 收起 理由
天高任鸟飞 + 4 多谢!
地板
天高任鸟飞|  楼主 | 2014-6-20 12:35 | 只看该作者
eydj2008 发表于 2014-6-20 11:51
注意一下 优化级别   还有防止被优化  不要见怪

OK 谢谢了!

ccs.JPG (48.56 KB )

ccs.JPG

使用特权

评论回复
5
天高任鸟飞|  楼主 | 2014-6-20 12:43 | 只看该作者
原来是给优化了。。。。。

IAR.JPG (155.26 KB )

IAR.JPG

使用特权

评论回复
6
天高任鸟飞|  楼主 | 2014-6-20 13:21 | 只看该作者
优化举个简单例子:
int i;

i=1;
i=2;
i=3;
i=4;
i=5;
i=6;
i=7;
i=8;
i=9;
i=10;
这段代码会被直接优化成
i=10;

连续10次给i赋值,只有最后一次才有意义。
前面的赋值没有意义,会被直接优化掉。
如果后面i也没有被使用,则变量i本身没有意义,直接优化掉。
最后编译出来的代码就是空。

进一步,把上面的赋值换成循环
int i;
for(i=1;i<10;i++);
这段代码也会被优化成
i=10;
循环相当于连续给i赋值9次,循环里面i的值是多少,是没有意义的,
最后循环退出时的i值才有意义,相当于最后一次的赋值i=10;
如果后面的程序没有用到i,则变量i本身没有意义,直接优化掉。
最后编译出来的代码就是空。


谨记:空循环是没有意义的,有点优化能力的编译器,都会将空循完全环优化掉。
如果需要延时,请加上volatile,或者调用编译器的延时函数,或者用编译参数禁止优化,或者使用内嵌汇编。

总之,不要使用没有volatile的空循环带实现延时,这是不规范的。

使用特权

评论回复
评分
参与人数 2威望 +8 收起 理由
hxfxt + 2 赞一个!
dirtwillfly + 6 赞一个!说得很好
7
天高任鸟飞|  楼主 | 2014-6-20 13:22 | 只看该作者
加个  volatile ,防止被优化。呵呵。

设置优化等级高也不怕了。

使用特权

评论回复
8
ar_m_cu| | 2014-6-20 21:04 | 只看该作者
使用空操作相关的指令进行延时最容易被优化掉,最好使用定时器延时,准确不容易出错

使用特权

评论回复
9
firstblood| | 2014-6-22 18:46 | 只看该作者
这个的话看下两个编译器的关于该单片机在应用时的设置的吧

使用特权

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

本版积分规则

个人签名:阿弥陀佛,善哉善哉。。。。。。

3

主题

750

帖子

0

粉丝