基于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;
}
对于CAN信息的接收读取,可以使用 查询方式 或中断方式。
如果用查询方式的话,先通过HAL_CAN_GetRxFifoFillLevel()函数查看是否至少收到一个信息,否则调用 HAL_CAN_GetRxMessage()也没用。也就是说只有通过 HAL_CAN_GetRxMessage()得知有收到信息时去获取数据才有意义。
通过中断方式的话,CAN接收到信息后就可以触发中断,此时就可以直接获取数据。
页:
[1]