本帖最后由 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; } |
如果用查询方式的话,先通过HAL_CAN_GetRxFifoFillLevel()函数查看是否至少收到一个信息,否则调用 HAL_CAN_GetRxMessage()也没用。也就是说只有通过 HAL_CAN_GetRxMessage()得知有收到信息时去获取数据才有意义。
通过中断方式的话,CAN接收到信息后就可以触发中断,此时就可以直接获取数据。
评分
查看全部评分