380091044 发表于 2024-4-28 16:10:20

已解决:RTR==1是远程帧,远程帧数据段是无效的??下面数据段还是定义8个字节,

本帖最后由 380091044 于 2024-4-28 16:14 编辑

CAN总线标准帧收发测试例程中:

RTR==1是远程帧,远程帧数据段是无效的??下面数据段还是定义8个字节,这是怎么理解的?



/*************本地变量声明    **************/

typedef struct
{
      u8      DLC:4;          //数据长度, bit0~bit3
      u8      :2;             //空数据, bit4~bit5
      u8      RTR:1;          //帧类型, bit6 这里RTR==1是远程帧,远程帧数据段是无效的??
      u8      FF:1;         //帧格式, bit7
      u32      ID;             //CAN ID
      u8      DataBuffer;//数据缓存;看上面问号处,这里数据段还是8个字节?
}CAN_DataDef;


380091044 发表于 2024-4-28 16:16:03

我看错了,其实是占1bit,不是RTR==1;理解有误造成的。

乘风飞扬 发表于 2024-4-28 16:18:11

这不是赋值,而是结构体位段定义。
DLC:4表示DLC变量占用4bit空间
RTR:1表示RTR变量占用1bit空间

380091044 发表于 2024-4-28 16:25:06

乘风飞扬 发表于 2024-4-28 16:18
这不是赋值,而是结构体位段定义。
DLC:4表示DLC变量占用4bit空间
RTR:1表示RTR变量占用1bit空间 ...

谢谢老师指点
页: [1]
查看完整版本: 已解决:RTR==1是远程帧,远程帧数据段是无效的??下面数据段还是定义8个字节,