newlined 发表于 2024-6-18 09:21:08

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

在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;//Êý¾Ý»º´æ
}CAN_DataDef;

CAN_DataDef CAN1_Tx;
CAN_DataDef CAN1_Rx;

在程序中是这样用的:

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



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

newlined 发表于 2024-6-18 11:54:08

我感觉先收到的数据是放在CAN1_Rx中,但是程序运行结果不对,有些疑惑。

乘风飞扬 发表于 2024-6-18 13:32:32

先收到的数据放在CAN1_Rx中,可用例程将收取内容通过串口一一打印出来查看。

newlined 发表于 2024-6-19 07:56:50

本帖最后由 newlined 于 2024-6-20 17:21 编辑

好的,谢谢乘风老师的解答。
页: [1]
查看完整版本: 请教关于CAN数据的先后顺序