飞思卡尔微控制器在C代码中的错误

时间:2014-05-04 16:10:57

标签: c microcontroller

我目前正在学习如何将HC08系列飞思卡尔微控制器与codewarrior IDE一起使用(版本6.3)。 我写了一个简单的程序,但无法编译。

#include <hidef.h>
#include "derivative.h"

void main(void) {
   EnableInterrupts;

   /* include your code here */
   DDRA |= 0x03;
   PTA |= 0x01;
   unsigned int counter;   << error here "Error : C2801: '}' missing
   counter = 50000;
   while(counter--);
   PTA ^= 0x03;

   for(;;) {
      __RESET_WATCHDOG(); /* feeds the dog */
   }

}

知道它可能有什么问题吗?所有括号都匹配。也许它是微控制器具体的东西?

2 个答案:

答案 0 :(得分:5)

我使用过那个IDE&amp;编译器,但不记得它是否支持1990或1999 C标准。

块中的可执行代码之后的变量定义在C99之前是不合法的。由于这正是您收到错误消息的位置,因此编译器似乎不支持C99。尝试将变量定义移动到main的开头。

void main(void) {    
    unsigned int counter;       
    EnableInterrupts;

    // the rest of the code
}

您还可以引入一个新块。这并不常见。对您的代码示例没有特别的帮助。值得指出的是,它适用于循环(或if语句)的括号内部,并且有时可用于为这样的块提供局部变量。

void main(void) {
    EnableInterrupts;

    DDRA |= 0x03;
    PTA |= 0x01;

    {   // start of nested scope
        unsigned int counter;   
        counter = 50000;
        while(counter--);
    }   // "counter" ceases to exist here 

    PTA ^= 0x03;

    for(;;) {
        __RESET_WATCHDOG(); /* feeds the dog */
    }

}

答案 1 :(得分:3)

您的编译器可能是C89编译器或类似编译器。这意味着变量定义需要位于范围的顶部,因此:

void main(void) {
   unsigned int counter; 
   EnableInterrupts;

   /* include your code here */
   DDRA |= 0x03;
   PTA |= 0x01;