#define Fcpu 23040000 //11.0592 xtal, M=100, N=6, CPU_D=4 => 2*xtal*M/N/CPU_D/4 = MIPS void CAN_IRQHandler(void) { unsigned char myvar[60]; CAN_ReceiveMsg(LPC_CAN1,&RXMsg); SendString0("CAN Int\r\n"); sprintf(myvar,"RID is %x and ICR is %x and RDA is %x and RFS is %x\r\n",LPC_CAN1->RID,LPC_CAN1->ICR,LPC_CAN1->RDA,LPC_CAN1->RFS); SendString0(myvar); LPC_CAN1->CMR = CAN_CMR_AT | CAN_CMR_RRB | CAN_CMR_CDO; } void SendCANMsg() { TXMsg.id = 46; TXMsg.dataA[0] = 5; TXMsg.dataA[1] = 6; TXMsg.dataA[2] = 7; TXMsg.dataA[3] = 8; TXMsg.len = 4; TXMsg.format = STD_ID_FORMAT; TXMsg.type = DATA_FRAME; CAN_SendMsg(LPC_CAN1,&TXMsg); } int main (void) { unsigned int i; unsigned char myvar[30]; baudrate=986040; CAN_Init(LPC_CAN1, baudrate); //((int) 983040) //Enable Interrupt CAN_IRQCmd(LPC_CAN1, CANINT_RIE, ENABLE); CAN_IRQCmd(LPC_CAN1, CANINT_DOIE, ENABLE); CAN_ModeConfig(LPC_CAN1,CAN_OPERATING_MODE , ENABLE); //CAN_OPERATING_MODE CAN_MOD_STM CAN_SetAFMode(LPC_CANAF,CAN_AccBP); NVIC_EnableIRQ(CAN_IRQn); while(1) { if(doProcess) //every 1 second is activated by timer 0 { doProcess=0; sprintf(myvar,"GSR is %x and SR is %x\r\n",LPC_CAN1->GSR,LPC_CAN1->SR); SendString0(myvar); sprintf(myvar,"RID is %d and DATA is %x\r\n",LPC_CAN1->RID,LPC_CAN1->RDA); LPC_CAN1->CMR = CAN_CMR_AT | CAN_CMR_RRB | CAN_CMR_CDO; SendString0(myvar);/**/ SendCANMsg(); } } } |