#include #include "..\..\lib\7188xb.h" #include "..\..\lib\xc100.h" /*If the UserCANInt() function is not used, please don't remove it.*/ void UserCANInt(char CANInt){ if (CANInt) ; /*avoid complier warning*/ } void main(void) { int ret; unsigned char MsgMode,MsgRTR,MsgDataLen,MsgData[8]; unsigned long MsgID,MsgUpperTimeStamp,MsgLowerTimeStamp;//,MsgCnt=0; InitLib(); /********************************************************/ /* Initial all LEDs */ /********************************************************/ L1Off(); L2Off(); L3Off(); /*******************************************************/ /* initialize and configure the CAN controller */ /*******************************************************/ ret=XC100Init(0,2,125000UL,0,0,0x00000000UL,0xffffffffUL); /* XCANInit function Parameter descriptions 0 : for 7188XB(D) model number (7186EX(D) model number is 1) 2 : for transmission interrupt 125000UL : for CAN baud 0 : for BT0 of user defined baud 0 : for BT1 of user defined baud 0x00000000UL : for AccCode of CAN message filter 0xffffffffUL : for AccMask of CAN message filter */ switch (ret){ /*Check if configuration is OK*/ case CAN_ResetError: Print("Reset Error!\n\r"); return; case CAN_SetACRError: Print("\n\rSet ACR Error!"); return; case CAN_SetAMRError: Print("\n\rSet AMR Error!"); return; case CAN_SetBaudRateError: Print("\n\rSet Baud Rate Error!"); return; case CAN_BaudNotSupport: Print("\n\rBaud Rate Not Support!"); return; case CAN_ConfigError: Print("\n\rConfiguration Failure!"); return; default: if (ret >0){ Print("Default=%d\n\r",ret); return; } } /********************************************************/ /* Enable Irq */ /********************************************************/ CAN_CreateBuffer(1,1000); //Create TX Buffer CAN_InstallIrq(); Print("Press any key to exit the program.\n\r"); MsgData[0]=0x12; MsgData[1]=0x23; MsgData[2]=0x34; MsgData[3]=0x45; MsgData[4]=0x56; MsgData[5]=0x67; MsgData[6]=0x78; MsgData[7]=0x89; while(1){ /********************************************************/ /* Send CAN messages to CAN bus */ /********************************************************/ ret=SendCANMsg(1,0x12345678UL,0,8,MsgData); /* SendCANMsg function parameter descirptions: 1 : for Send message with 29-bit ID 0x12345678UL : for CAN message ID 0 : for CAN message RTR 8 : for CAN message data length MsgData : for CAN message output data */ if (ret){ switch(ret){ case CAN_DataLengthError: Print("Transmission Data Length Error!\n"); break; case CAN_TransmitIncomplete: Print("Transmission is incomplete!\n"); break; case CAN_TransmitBufferLocked: Print("CAN controller transmit Buffer is locked!\n"); break; } break; } DelayMs(500); ret=SendCANMsg(0,0x12345678UL,0,8,MsgData); /* SendCANMsg function parameter descirptions: 0 : for Send message with 11-bit ID 0x12345678UL : for CAN message ID (only 0x278 ID value will be send out) 0 : for CAN message RTR 8 : for CAN message data length MsgData : for CAN message output data */ if (ret){ switch(ret){ case CAN_DataLengthError: Print("Transmission Data Length Error!\n"); break; case CAN_TransmitIncomplete: Print("Transmission is incomplete!\n"); break; case CAN_TransmitBufferLocked: Print("CAN controller transmit Buffer is locked!\n"); break; } break; } DelayMs(500); if (Kbhit()){ /*if press any key, exit the program*/ Print("Exit this program!\n"); break; } } CAN_Restore(); }