关于CCS不能正确编译代码的问题

#include  


/**
 * main.c
 */
void P13_Onclick(void);
void ldelay(unsigned int ms);
int main(void)
{
    unsigned int i=1000;
    WDTCTL = WDTPW | WDTHOLD;    // stop watchdog timer
    P4DIR=0XFF;
    P4OUT=0Xff;
//    while(1)
//    {
//        P4OUT=~P4OUT;
//        while(i--)
//        {
//        }
//        i=96;
//
    while(1)
    {
       ldelay(i);
       P4OUT=~P4OUT;
       P13_Onclick();
    }
    return 0;
}
void ldelay(unsigned int xms)  // xms代表需要延时的毫秒数
{
    unsigned int x,y;
    for(x=xms;x>0;x--)
        for(y=110;y>0;y--);
}
void P13_Onclick() //P1.3的事件处理函数
{ //----翻转IO电平-----
    P1OUT ^= BIT0;
    P1OUT ^= BIT6;
}

 

代码如上图所示,这段代码在CCS里编译后烧到MSP430F5529的单片机里面是无法运行起来的(正常的结果应当是单片机的小绿灯一闪闪的)

关于CCS不能正确编译代码的问题_第1张图片

以上是CCS代码调试的部分截图,CCS在调试的过程中会自动跳过ldelay(i)这段代码的[最开始我是用while(i--)直接作为循环延迟的,但是发现单片机无法得到正确结果,这时候我还有点怀疑是我的代码的问题所以后来改用了idelay子函数作为延迟但是结果依然不正确]

我寻思着难道是因为这个编译器自动跳过子函数?所以后来我又尝试写了一个P13_onclick()这个子函数,但是结果是程序是能进入这个函数的。所以我蒙了,但是我真的觉得我的代码写的一点问题也没有,所以后来有尝试下载了IAR for MSP430。同样的代码复制过去编译烧录后,我看到了单片机的小灯一闪一闪的(.......我还能说啥)

可能是我对CCS的这个软件还不够了解吧,但是遇到这种问题我确实懵了。百度谷歌的好像也没有这种情况,如果哪位大佬某天路过,希望有幸能解决。

最后补充一个CCS版本号

关于CCS不能正确编译代码的问题_第2张图片

你可能感兴趣的:(单片机)