C 语法错误-标记“0”&引用;在“之前插入”;{quot;

C 语法错误-标记“0”&引用;在“之前插入”;{quot;,c,syntax-error,C,Syntax Error,我为ADC写了一个函数来读取一个齿轮值。我经常遇到这个错误,但我不知道该怎么处理。建议? 我的代码是: void MAIN_vInit(void) { void read_bremspedal(); //This is my ADC read function prototype PSW_IEN = 0; /// -----------------------------------------------------------

我为ADC写了一个函数来读取一个齿轮值。我经常遇到这个错误,但我不知道该怎么处理。建议? 我的代码是:

void MAIN_vInit(void)
{

   void read_bremspedal();    //This is my ADC read function prototype
   PSW_IEN        =  0;          


  ///  -----------------------------------------------------------------------
  ///  Configuration of the System Clock:
  ///  -----------------------------------------------------------------------
  ///  - VCO clock used, input clock is connected
  ///  - input frequency is 8,00 MHz

  MAIN_vUnlockProtecReg();     // unlock write security

  MAIN_vChangeFreq();          // load PLL control register

  //   -----------------------------------------------------------------------
  //   SCU Interrupt Disable configuration:
  //   -----------------------------------------------------------------------
  SCU_INTDIS     =  0xFFFF;      // SCU Interrupt Disable Register

  //   -----------------------------------------------------------------------
  //   Initialization of the Peripherals:
  //   -----------------------------------------------------------------------

  //   initializes the Parallel Ports
  IO_vInit();

  //   initializes the Capture / Compare Unit 61 (CCU61)
  CCU61_vInit();

  //   initializes the Analog / Digital Converter  (ADC0)
  ADC0_vInit();

  //   initializes the MultiCAN Module (CAN)
  CAN_vInit();


  //   -----------------------------------------------------------------------
  //   Initialization of the Bank Select registers:
  //   -----------------------------------------------------------------------


  //   -----------------------------------------------------------------------
  //   SCU Interrupt Source Selection configuration:
  //   -----------------------------------------------------------------------
  SCU_ISSR       =  0x0000;      // SCU Interrupt Source Select Register

  // USER CODE BEGIN (Init,3)

  // USER CODE END

  MAIN_vLockProtecReg();       // lock write security

  //   globally enable interrupts
  PSW_IEN        =  1;          

} 

 while(1)
  {

   // USER CODE BEGIN (Main,13)

      //Bremspedal

      void read_bremspedal(){   //syntax error - token ";" inserted before "{"
      ADC0_vStartSeq0ReqChNum(0,0,1,3);
      uwbremsen = ADC0_uwGetResultData(RESULT_REG_1);
      uwbremsen >>= 4;
      if(uwbremsen) {            // wenn gebremest!
      CAN_MODATA4LL = uwbremsen;
      CAN_vTransmit(4);         //Rekuperation signal senden
      IO_vSetPin(IO_P10_0);     // Nicht Schalten signal
      }
    }
  }
您在while循环中定义函数“void read_bremspeopal(){”。此外,您正在尝试编写一个根本不在任何函数中的while循环。颠倒代码行应该可以工作。至少应编译以下代码:

void read_bremspedal(){
  // USER CODE BEGIN (Main,13)

  //Bremspedal
  while(1) {
    ADC0_vStartSeq0ReqChNum(0,0,1,3);
    uwbremsen = ADC0_uwGetResultData(RESULT_REG_1);
    uwbremsen >>= 4;
    if(uwbremsen) {            // wenn gebremest!
      CAN_MODATA4LL = uwbremsen;
      CAN_vTransmit(4);         //Rekuperation signal senden
      IO_vSetPin(IO_P10_0);     // Nicht Schalten signal
    }
  }
}
祝你好运


注意-它可能只是复制/粘贴,但当使用适当缩进时,确保打开和关闭括号/大括号的正确数量要容易得多。始终缩进至少1(可能2-4个空格)在每一个开放的花括号之后。这在将来应该会有所帮助!

while
循环之前似乎有一个额外的右括号。不能在标准C中使用局部函数。小nit:应该使用int main(void){…}根据C99:5.1.2.2.1程序启动1,程序启动时调用的函数名为main。该实现未声明此函数的原型。该函数应使用int返回类型定义,且不带参数:int main(void){/*…/}或两个参数(此处称为argc和argv,尽管可以使用任何名称,因为它们是声明它们的函数的本地名称):int main(int argc,char*argv[]){/..*/}或等效名称;10)或者以其他实现定义的方式。非常感谢drew_w的回复。我尝试了您的建议,但错误仍然存在。实际上,我这里有MAIN.h和MAIN.c,while(1)循环在void MAIN(void)函数下的MAIN.c中。我还想在void MAIN(void)函数中创建我的函数你能不能给我一些更有用的建议,这样我就可以摆脱这个语法错误。你不认为,这个错误可能是因为MAIN.h中缺少了一些头文件。“我还想在
void MAIN(void)
”中创建我的函数。你不能。把它放在
MAIN()
函数上面。非常感谢glglgl的评论。我得到了它。。。