/*********************************************************************//** * @brief CAN_IRQ Handler, control receive message operation * param[in] none * @return none **********************************************************************/ void CAN_IRQHandler() { uint8_t IntStatus; uint32_t data1; /* get interrupt status * Note that: Interrupt register CANICR will be reset after read. * So function "CAN_IntGetStatus" should be call only one time */ IntStatus = CAN_IntGetStatus(LPC_CAN2); //check receive interrupt if((IntStatus>>0)&0x01) { CAN_ReceiveMsg(LPC_CAN2,&RXMsg); PrintMessage(&RXMsg); CANRxCount++; //count success received message //increase data for next TX Message TXMsg.id ++; data1 = (TXMsg.dataA[0])|(((TXMsg.dataA[1]))<<8)|((TXMsg.dataA[2])<<16)|((TXMsg.dataA[3])<<24); if(data1 == 0xFFFFFFFF) data1 = 0; else data1++; *((uint8_t *) &TXMsg.dataA[0])= *((uint8_t *) &TXMsg.dataB[0])= data1 & 0x000000FF; *((uint8_t *) &TXMsg.dataA[1])= *((uint8_t *) &TXMsg.dataB[1])=(data1 & 0x0000FF00)>>8;; *((uint8_t *) &TXMsg.dataA[2])= *((uint8_t *) &TXMsg.dataB[2])=(data1 & 0x00FF0000)>>16; *((uint8_t *) &TXMsg.dataA[3])= *((uint8_t *) &TXMsg.dataB[3])=(data1 & 0xFF000000)>>24; CAN_SendMsg(LPC_CAN1, &TXMsg); } }
/*********************************************************************//** * @brief CAN IRQ Handler * @param[in] none * @return none **********************************************************************/ void CAN_IRQHandler(void) { uint8_t IntStatus; //check FullCAN interrupt enable or not if(CAN_FullCANIntGetStatus(LPC_CANAF)== SET) { //check is FullCAN interrupt occurs or not if ((CAN_FullCANPendGetStatus(LPC_CANAF,FULLCAN_IC0)) ||(CAN_FullCANPendGetStatus(LPC_CANAF,FULLCAN_IC1))) { //read received FullCAN Object in Object Section FCAN_ReadObj(LPC_CANAF, &AFRxMsg[CANRxCount]); CANRxCount++; } } /* get interrupt status * Note that: Interrupt register CANICR will be reset after read. * So function "CAN_IntGetStatus" should be call only one time */ IntStatus = CAN_IntGetStatus(LPC_CAN2); //check receive interrupt if((IntStatus>>0)&0x01) { CAN_ReceiveMsg(LPC_CAN2, &AFRxMsg[CANRxCount]); CANRxCount++; } }