你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
qq9472044 提问时间:2019-4-29 20:47 /
本帖最后由 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;
}


收藏 评论1 发布时间:2019-4-29 20:47

举报

1个回答
xmshao 回答时间:2019-5-21 16:08:01
对于CAN信息的接收读取,可以使用 查询方式 或  中断方式。

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

通过中断方式的话,CAN接收到信息后就可以触发中断,此时就可以直接获取数据。

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版