FreeRTOS中CAN输出的数据长长度动态控制

这是结构体的定义,

typedef struct {
    flexcan_msgbuff_id_type_t msg_id_type;  /*!< Type of message ID (standard or extended)*/
    uint32_t data_length;                   /*!< Length of Data in Bytes*/
#if FEATURE_CAN_HAS_FD
    bool fd_enable;                         /*!< Enable or disable FD*/
    uint8_t fd_padding;                     /*!< Set a value for padding. It will be used when the data length code (DLC)
                                                 specifies a bigger payload size than data_length to fill the MB */
    bool enable_brs;                        /*!< Enable bit rate switch inside a CAN FD format frame*/
#endif
    bool is_remote;                         /*!< Specifies if the frame is standard or remote */
} flexcan_data_info_t;

我们在输出和接收数据的时候都会定义一个这个类型的对象

flexcan_data_info_t xTxDataInfo =
{
    .data_length = 8,
    .msg_id_type = FLEXCAN_MSG_ID_STD,
    .enable_brs  = false,
    .fd_enable   = false,
    .fd_padding  = 0U
};

调用FLEXCAN_DRV_Send发送函数之前,我们只需要手动控制一下xTxDataInfo 里的长度,就可以控制发送的数据长了

    xTxDataInfo.data_length = ulLength;

    FLEXCAN_DRV_Send(INST_CANCOM1, TX_MAILBOX, &xTxDataInfo, msg_id, pvData);

FreeRTOS中CAN输出的数据长长度动态控制_第1张图片

 

你可能感兴趣的:(FreeRTOS中CAN输出的数据长长度动态控制)