STM32F4_HAL_CAN总线注意事项
如果CAN总线没有连接其他设备,即HL是悬空状态,则发送会失败,下图的Error_Handler需要屏蔽,否则会造成系统卡顿,或影响其他功能模块的使用
/*
*********************************************************************************************************
* 函 数 名: can1_SendPacket
* 功能说明: 发送一包数据
* 形 参:_DataBuf 数据缓冲区,_Len 数据长度 0 - 8字节
* 返 回 值: 无
*********************************************************************************************************
*/
void can1_SendPacket(uint8_t* _DataBuf, uint32_t _Len)
{
#if CAN1_EN
CAN1TxHeader.StdId = 0x111;
CAN1TxHeader.ExtId = 0x1111;
CAN1TxHeader.RTR = CAN_RTR_DATA; /* 数据帧 */
CAN1TxHeader.IDE = CAN_ID_STD; /* 标准ID */
CAN1TxHeader.DLC = _Len;
CAN1TxHeader.TransmitGlobalTime = DISABLE;
/* 启动发送 */
if (HAL_CAN_AddTxMessage(&Can1Handle, &CAN1TxHeader, _DataBuf, &CAN1TxMailbox) != HAL_OK) {
// Error_Handler(__FILE__, __LINE__);
}
#endif
}
/*
*********************************************************************************************************
* 函 数 名: can2_SendPacket
* 功能说明: 发送一包数据
* 形 参:_DataBuf 数据缓冲区,_Len 数据长度 0 - 8字节
* 返 回 值: 无
*********************************************************************************************************
*/
void can2_SendPacket(uint8_t* _DataBuf, uint32_t _Len)
{
#if CAN2_EN
CAN2TxHeader.StdId = 0x222;
CAN2TxHeader.ExtId = 0x2222;
CAN2TxHeader.RTR = CAN_RTR_DATA;
CAN2TxHeader.IDE = CAN_ID_STD;
CAN2TxHeader.DLC = _Len;
CAN2TxHeader.TransmitGlobalTime = DISABLE;
/* 启动发送 */
if (HAL_CAN_AddTxMessage(&Can2Handle, &CAN2TxHeader, _DataBuf, &CAN2TxMailbox) != HAL_OK) {
// Error_Handler(__FILE__, __LINE__);
}
#endif
}

浙公网安备 33010602011771号