This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
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时