结构体定义如下:
typedef struct
{
uint32_t StdId;
uint32_t ExtId;
uint8_t IDE;
uint8_t RTR;
uint8_t DLC;
uint8_t Data[8];
uint8_t FMI;
} CanRxMsg;
uint32_t StdId; 标准帧的ID,按照CAN协议,标准帧ID占11bit,所以该成员变量取值从0到0x7FF,
uint32_t ExtId; 扩展帧ID,按照CAN协议,扩展帧ID占29bit(非连续,第11bit后穿插SRR和IDE),取值从0到0x1FFFFFFF;
uint8_t IDE; 消息标识符类型,CAN协议中标准帧为显性,扩展帧隐形,STM32中标准帧该字段为0x0,扩展帧为0x4,定义有宏;
uint8_t RTR; 远程帧标识,正常帧值为0x0,远程帧为0x2;定义有宏CAN_RTR_DATA和CAN_RTR_REMOTE;
uint8_t DLC; 消息长度,0到8个字节。
uint8_t Data[8]; 消息的具体内容。
uint8_t FMI; 过滤模式,总共有14中,定义有宏,其值依次为0x1,0x2,0x4,0x8,0x10,0x20,0x40……