CANA的初始化函数
void HAL_setupCAN()
{
//配置IO 30、31引脚
GPIO_setPinConfig(CANRXA_GPIO_CFG);
GPIO_setPinConfig(CANTXA_GPIO_CFG);
// 初始化CAN控制器
CAN_initModule(CANA_BASE);
// 设置CAN,使用CANA,系统时钟,波特率1MHz,位时序20Tq
CAN_setBitRate(CANA_BASE, DEVICE_SYSCLK_FREQ, 1000000, 20);
// 使能CAN中断
CAN_enableInterrupt(CANA_BASE, CAN_INT_ERROR|CAN_INT_STATUS|CAN_INT_IE0);
// 配置CANA0中断
Interrupt_register(INT_CANA0, &canISR);
// 使能CANA0中断
Interrupt_enable(INT_CANA0);
CAN_enableGlobalInterrupt(CANA_BASE, CAN_GLOBAL_INT_CANINT0);
//
// Initialize the transmit message object used for sending CAN messages.
// Message Object Parameters:
// Message Object ID Number: 邮箱ID
// Message Identifier: CAN_ID
// Message Frame: 数标准格式
// Message Type: 非远程发送
// Message ID Mask: 无消息拓展
// Message Object Flags: 发送中断标志位使能
// Message Data Length: 数据长度8字节
//
CAN_setupMessageObject(CANA_BASE, TX_MSG_OBJ_ID, CAN_ID, CAN_MSG_FRAME_STD,
CAN_MSG_OBJ_TYPE_TX, 0, CAN_MSG_OBJ_TX_INT_ENABLE,
Can_DATA_LENGTH);
//
// Initialize the receive message object used for receiving CAN messages.
// Message Object Parameters:
// Message Object ID Number: 邮箱ID
// Message Identifier: CAN_ID
// Message Frame: 数据标准格式
// Message Type: 非远程接收
// Message ID Mask: 无消息拓展
// Message Object Flags: 接收中断使能
// Message Data Length: 8 Bytes
//
CAN_setupMessageObject(CANA_BASE, RX_MSG_OBJ_ID, CAN_ID, CAN_MSG_FRAME_STD,
CAN_MSG_OBJ_TYPE_RX, 0, CAN_MSG_OBJ_RX_INT_ENABLE,
Can_DATA_LENGTH);
// 启动CAN模块
CAN_startModule(CANA_BASE);
}
CANB的初始化函数
void HAL_setupCANB(void)
{
//配置IO 30、31引脚
GPIO_setPinConfig(CANRXB_GPIO_CFG);//GPIO_17_CANRXB
GPIO_setPinConfig(CANTXB_GPIO_CFG);//GPIO_16_CANTXB
// 初始化CAN控制器
CAN_initModule(CANB_BASE);
// 设置CAN,使用CANA,系统时钟,波特率1MHz,位时序20Tq
CAN_setBitRate(CANB_BASE, DEVICE_SYSCLK_FREQ, 1000000, 20);
// 使能CAN中断
CAN_enableInterrupt(CANB_BASE, CAN_INT_ERROR|CAN_INT_STATUS|CAN_INT_IE0);
// 配置CANA0中断
Interrupt_register(INT_CANB0, &canBISR);
// 使能CANA0中断
Interrupt_enable(INT_CANB0);
CAN_enableGlobalInterrupt(CANB_BASE, CAN_GLOBAL_INT_CANINT0);
//
// Initialize the transmit message object used for sending CAN messages.
// Message Object Parameters:
// Message Object ID Number: 邮箱ID
// Message Identifier: CAN_ID
// Message Frame: 数标准格式
// Message Type: 非远程发送
// Message ID Mask: 无消息拓展
// Message Object Flags: 发送中断标志位使能
// Message Data Length: 数据长度8字节
//
CAN_setupMessageObject(CANB_BASE, TXB_MSG_OBJ_ID, CAN_ID, CAN_MSG_FRAME_STD,
CAN_MSG_OBJ_TYPE_TX, 0, CAN_MSG_OBJ_TX_INT_ENABLE,
Can_DATA_LENGTH);
//
// Initialize the receive message object used for receiving CAN messages.
// Message Object Parameters:
// Message Object ID Number: 邮箱ID
// Message Identifier: CAN_ID
// Message Frame: 数据标准格式
// Message Type: 非远程接收
// Message ID Mask: 无消息拓展
// Message Object Flags: 接收中断使能
// Message Data Length: 8 Bytes
//
CAN_setupMessageObject(CANB_BASE, RXB_MSG_OBJ_ID, CAN_ID, CAN_MSG_FRAME_STD,
CAN_MSG_OBJ_TYPE_RX, 0, CAN_MSG_OBJ_RX_INT_ENABLE,
Can_DATA_LENGTH);
// 启动CAN模块
CAN_startModule(CANB_BASE);
}
接入CANA时

接入CANB时
