找回密码
 立即注册
查看: 304|回复: 3

请教关于CAN数据的先后顺序

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:350
  • 最近打卡:2025-05-01 00:57:45

35

主题

189

回帖

829

积分

高级会员

积分
829
发表于 2024-6-18 09:21:08 | 显示全部楼层 |阅读模式
在STC32G试验箱9.6的例程49中,CAN的结构是这样定义的:


typedef struct
{
        u8        DLC:4;          //Êý¾Ý³¤¶È, bit0~bit3
        u8        :2;             //¿ÕÊý¾Ý, bit4~bit5
        u8        RTR:1;          //Ö¡ÀàÐÍ, bit6
        u8        FF:1;           //Ö¡¸ñʽ, bit7
        u32        ID;             //CAN ID
        u8        DataBuffer[8];  //Êý¾Ý»º´æ
}CAN_DataDef;

CAN_DataDef CAN1_Tx;
CAN_DataDef CAN1_Rx[8];

在程序中是这样用的:

if(B_CanRead)
                {
                        B_CanRead = 0;
                       
            n = CanReadMsg(CAN1_Rx);    //¶ÁÈ¡½ÓÊÕÄÚÈÝ
            if(n>0)
            {
                for(i=0;i<n;i++)
                {
                    CanSendMsg(&CAN1_Rx[i]);  //CAN×ÜÏßÔ­Ñù·µ»Ø
                }
            }
                }



假设n=5,那么收到的数据放在CAN1_Rx[0]~CAN1_Rx[4]中,请问先收到的数据是放在CAN1_Rx[0]中还是CAN1_Rx[4]中,谢谢。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:350
  • 最近打卡:2025-05-01 00:57:45

35

主题

189

回帖

829

积分

高级会员

积分
829
发表于 2024-6-18 11:54:08 | 显示全部楼层
我感觉先收到的数据是放在CAN1_Rx[0]中,但是程序运行结果不对,有些疑惑。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6841

积分

论坛元老

积分
6841
发表于 2024-6-18 13:32:32 | 显示全部楼层
先收到的数据放在CAN1_Rx[0]中,可用例程将收取内容通过串口一一打印出来查看。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:350
  • 最近打卡:2025-05-01 00:57:45

35

主题

189

回帖

829

积分

高级会员

积分
829
发表于 2024-6-19 07:56:50 | 显示全部楼层
本帖最后由 newlined 于 2024-6-20 17:21 编辑

好的,谢谢乘风老师的解答。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:07 , Processed in 0.165494 second(s), 63 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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