STM32F4_HAL_CAN总线注意事项

发布时间 2024-01-12 11:08:55作者: realiot
/*
*********************************************************************************************************
*	函 数 名: 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
}