// Coldfire Initial C Source File #include "xstdsys.h" main() { // TODO: Add your source code here while(1); } void _interrupt IVN_CAN_BUFFER0 CanBuffer0Handler() { if (g_pCAN->IFLAG & IFLAG_BUF0I) { // reading and writing IFLAG clears the interrupt flag g_pCAN->IFLAG = IFLAG_BUF0I; _CAN_BUFFER* pBuffer = &g_pCAN->MBUFF[0]; unsigned char nCode = pBuffer->CONTROL_STATUS >> 4; if ((nCode & 0X08) != 0) { // buffer is in transmit mode // add your CAN buffer 0 transmit mode interrupt handler code here } else { // buffer is in receive mode unsigned char nBytesReceived = pBuffer->CONTROL_STATUS & 0X000F; // add your CAN buffer 0 receive mode interrupt handler code here // the received data is in pBuffer->DATA[0]..pBuffer->DATA[nBytesReceived - 1] } // optionally read the free-running timer to unlock the message buffer unsigned short nTime = g_pCAN->TIMER; } } void _interrupt IVN_CAN_BUFFER1 CanBuffer1Handler() { if (g_pCAN->IFLAG & IFLAG_BUF1I) { // reading and writing IFLAG clears the interrupt flag g_pCAN->IFLAG = IFLAG_BUF1I; _CAN_BUFFER* pBuffer = &g_pCAN->MBUFF[1]; unsigned char nCode = pBuffer->CONTROL_STATUS >> 4; if ((nCode & 0X08) != 0) { // buffer is in transmit mode // add your CAN buffer 0 transmit mode interrupt handler code here } else { // buffer is in receive mode unsigned char nBytesReceived = pBuffer->CONTROL_STATUS & 0X000F; // add your CAN buffer 0 receive mode interrupt handler code here // the received data is in pBuffer->DATA[0]..pBuffer->DATA[nBytesReceived - 1] } // optionally read the free-running timer to unlock the message buffer unsigned short nTime = g_pCAN->TIMER; } } // CAN buffer 2 interrupt not enabled, handler not generated // CAN buffer 3 interrupt not enabled, handler not generated // CAN buffer 4 interrupt not enabled, handler not generated // CAN buffer 5 interrupt not enabled, handler not generated // CAN buffer 6 interrupt not enabled, handler not generated // CAN buffer 7 interrupt not enabled, handler not generated // CAN buffer 8 interrupt not enabled, handler not generated // CAN buffer 9 interrupt not enabled, handler not generated // CAN buffer 10 interrupt not enabled, handler not generated // CAN buffer 11 interrupt not enabled, handler not generated // CAN buffer 12 interrupt not enabled, handler not generated // CAN buffer 13 interrupt not enabled, handler not generated // CAN buffer 14 interrupt not enabled, handler not generated // CAN buffer 15 interrupt not enabled, handler not generated void _interrupt IVN_CAN_ERROR CanErrorHandler() { // read and write ERRINT or read error bits in ESR to clear the interrupt flag unsigned short nEstat = g_pCAN->ESTAT; g_pCAN->ESTAT = ESTAT_ERRINT; if (nEstat & (ESTAT_BITERR1 | ESTAT_BITERR0)) { // add your bit error interrupt handler code here } if (nEstat & ESTAT_ACKERR) { // add your ACK error interrupt handler code here } if (nEstat & ESTAT_CRCERR) { // add your CRC error interrupt handler code here } if (nEstat & ESTAT_FORMERR) { // add your form error interrupt handler code here } if (nEstat & ESTAT_STUFFERR) { // add your stuff error interrupt handler code here } if (nEstat & ESTAT_TXWARN) { // the transmit error count exceeds 95 if here } if (nEstat & ESTAT_RXWARN) { // the receive error count exceeds 95 if here } } void _interrupt IVN_CAN_BUS_OFF CanBusOffHandler() { // write BOFFINT to clear the interrupt flag g_pCAN->ESTAT = ESTAT_BOFFINT; // add your CAN bus off interrupt handler code here } // CAN wake-up interrupt not enabled, handler not generated