qq9472044 发表于 2019-4-29 20:47:28

基于HAL库F4 V1.23下HAL_CAN_GetRxMessage接收函数的问题

本帖最后由 qq9472044 于 2019-4-29 20:48 编辑

最近升级到F4 V1.23的版本,发现CAN接收函数变了,非接收中断下 HAL_CAN_GetRxMessage函数只能接收到SID和数据长度 ,但是数据居然接收不到
而用接收中断时,才能正常接收 ,这是什么问题??了解情况的可以交流下
这是简单的接收函数

u8 CAN1_Receive_Msg(u8 *buf)
{
    if(HAL_CAN_GetRxFifoFillLevel(&CAN1_Handler,CAN_RX_FIFO0) != 0)
    {
      HAL_CAN_GetRxMessage(&CAN1_Handler,CAN_RX_FIFO0,&RxMessage,data);

      return RxMessage.DLC;   
    }
    return 0;
}


xmshao 发表于 2019-5-21 16:08:01

对于CAN信息的接收读取,可以使用 查询方式 或中断方式。

如果用查询方式的话,先通过HAL_CAN_GetRxFifoFillLevel()函数查看是否至少收到一个信息,否则调用 HAL_CAN_GetRxMessage()也没用。也就是说只有通过 HAL_CAN_GetRxMessage()得知有收到信息时去获取数据才有意义。

通过中断方式的话,CAN接收到信息后就可以触发中断,此时就可以直接获取数据。
页: [1]
查看完整版本: 基于HAL库F4 V1.23下HAL_CAN_GetRxMessage接收函数的问题