硬汉嵌入式论坛

 找回密码
 立即注册
查看: 636|回复: 0
收起左侧

[CAN/FDCAN] STM32H7的CANFD Rx Buffer回调函数处理方法

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2023-5-9 01:18:48 | 显示全部楼层 |阅读模式

HAL库没有提供Rx Buffer的检索API,需要用户自己简单检索位置读取,实现代码如下:

[C] 纯文本查看 复制代码
void HAL_FDCAN_RxBufferNewMessageCallback(FDCAN_HandleTypeDef *hfdcan)
{
        HAL_StatusTypeDef Status;
        uint8_t i, off;
        
        if (hfdcan == &hfdcan1)
        {
                for(i = 0; i < 32; i++)
                {
                        off = (hfdcan->Instance->NDAT1 & (1<<i) ) >> i;
                        if(off == 1)
                        {
                                /* 从RX Buffer读取数据, i值等同于FDCAN_RX_BUFFER */
                                Status = HAL_FDCAN_GetRxMessage(hfdcan, i, &g_Can1RxHeader, g_Can1RxData);

                                if(Status == HAL_OK)
                                {
                                        bsp_PutMsg(MSG_CAN1_RxBuffer, 0);        /* 发消息收到数据包,结果在g_Can1RxHeader, g_Can1RxData */                        
                                }                
                        }
                }
                
                for(i = 0; i < 32; i++)
                {
                        off = (hfdcan->Instance->NDAT2 & (1<<i) ) >> i;
                        if(off == 1)
                        {
                                /* 从RX Buffer读取数据, i值等同于FDCAN_RX_BUFFER */
                                Status = HAL_FDCAN_GetRxMessage(hfdcan, i+31, &g_Can1RxHeader, g_Can1RxData);

                                if(Status == HAL_OK)
                                {
                                        bsp_PutMsg(MSG_CAN1_RxBuffer, 0);        /* 发消息收到数据包,结果在g_Can1RxHeader, g_Can1RxData */                        
                                }                
                        }
                }
        }

}


下载.png

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-14 05:31 , Processed in 0.156257 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表