AnsweredAssumed Answered

AN3034SW Error C2801 missing ';'

Question asked by Rachel Sanford on Aug 14, 2016

I'm trying to run the sample code from document AN3034 "Using MSCAN on the HCS12 Family". The code is in document AN3034SW. Both of these documents are provided by NXP.

I did modify an include statement and the pragma Link_Info so that it matched the development board I am working with, the MC9S12DG256 development board.


I tried to compile the code and I am getting "Error C2801 ';' missing", but it seems like I have all of the appropriate semicolons. It is also strange because the error happens on 4 very similar lines of code. It is during the CANInit function that this occurs. The CANInit function is shown below. The full code is attached. The code that I copied and minimally modified is from AN3034SW. The lines causing errors are in RED. They all cause the same error: "Error C2801 ';' missing". I am using CodeWarrior 5.9.0.

//CANInit Function

void CANInit(void){

  CAN0CTL0 = 0x01;  //Enter initialization mode


  while(!(CAN0CTL1&0x01)){}; //Wait for initialization mode ACK

  CAN0CTL1 = 0xA0;  //Enable MSCAN module and Loopback Mode

  CAN0BTR0 = 0xC7;  //Synch Jump = 3Tq clock cycles (re calculate?)

  CAN0BTR1 = 0x3A;  //Set number of samples per bit, TSEG1 and TSEG2

  CAN0IDAC = 0x10;  //set four 16-bit filters


  //Acceptance Filters

  CAN0IDAR0 = ACC_CODE_ID100_HIGH; //16-bit filter 0

  CAN0IDMR0 = MASK_CODE_ST_ID_HIGH; //Accepts Standard Data Frame Msg  ERROR Missing ;?

  CAN0IDAR1 = ACC_CODE_ID100_LOW; //with ID 0x100



  CAN0IDAC = 0x10; //Not sure why this is twice in code


  CAN0IDAR2 = 0x00; //16-bit filter 1

  CAN0IDMR2 = MASK_CODE_ST_ID_HIGH; //Accepts standard Data frame msg

  CAN0IDAR3 = 0x00;   //with ID 0x000



  CAN0IDAR4 = 0x00; //16-bit filter 2

  CAN0IDMR4 = MASK_CODE_ST_ID_HIGH; //Accepts standard Data frame msg

  CAN0IDAR5 = 0x00;   //with ID 0x000



  CAN0IDAR6 = 0x00; //16-bit filter 3

  CAN0IDMR6 = MASK_CODE_ST_ID_HIGH; //Accepts standard Data frame msg

  CAN0IDAR7 = 0x00;   //with ID 0x000



  CAN0CTL0 = 0x00; //Exit initialization mode request


  while((CAN0CTL1&0x01)!=0){}; //Wait for normal mode


}  //end void CANInit

Original Attachment has been moved to: