void CANController::enableInterrupts(uint32_t interruptFlags) { unsigned long INT; switch (_channel) { #ifdef HAS_CAN_CHANNEL_0 case CAN::channel_0: INT = INT_CAN0; break; #endif #ifdef HAS_CAN_CHANNEL_1 case CAN::channel_1: INT = INT_CAN1; break; #endif #ifdef HAS_CAN_CHANNEL_2 case CAN::channel_2: INT = INT_CAN2; break; #endif default: while(1); break; } MAP_CANIntEnable(_base, interruptFlags); MAP_IntPrioritySet(INT, configDEFAULT_SYSCALL_INTERRUPT_PRIORITY); IntEnable(INT); }
void cans_init( void ) { MAP_SysCtlPeripheralEnable( SYSCTL_PERIPH_CAN0 ); MAP_CANInit( CAN0_BASE ); CANBitRateSet(CAN0_BASE, LM3S_CAN_CLOCK, 500000); MAP_CANIntEnable( CAN0_BASE, CAN_INT_MASTER | CAN_INT_ERROR | CAN_INT_STATUS ); MAP_IntEnable(INT_CAN0); MAP_CANEnable(CAN0_BASE); // Configure default catch-all message object can_msg_rx.ulMsgID = 0; can_msg_rx.ulMsgIDMask = 0; can_msg_rx.ulFlags = MSG_OBJ_RX_INT_ENABLE | MSG_OBJ_USE_ID_FILTER; can_msg_rx.ulMsgLen = 8; MAP_CANMessageSet(CAN0_BASE, 1, &can_msg_rx, MSG_OBJ_TYPE_RX); }