STEP1::定义用来接收串口数据的buffer
u8 USART_RX_BUF[USB_USART_REC_LEN]; //接收缓冲,最大USART_REC_LEN个字节.
STEP2::定义一个结构体
typedef __packed struct _Stm32Packet
{
u32 count; //结构总长度
u8 kind; //message kind
u16 index; //message index
u32 timeout;
u32 stateValue;
u8 version[4];
u8 reserve[20];
u16 checksum; //校验位
} SStm32Packet;
STEP3::然后定义一个SStm32Pack类型的结构体P,
SStm32Packet* p;
p = (SStm32Packet*)USART_RX_BUF;//串口接收到的数据存放在USART_RX_BUF中,按照SStmPack 里面的数据成员格式存放
此时,p指向串口USART_RXBUF的第一个元素,具体就是USART_RXBUF[0]的地址。
STEP4::那么现在,如果你想知道刚刚从串口接收到的数据中,是那种信息,直接判断kind就可以了。
p->kind;
同理,想知道校验位
p->checksum;