在线时间40 小时
UID357428
ST金币0
蝴蝶豆0
注册时间2014-10-31
高级会员
- 最后登录
- 2019-9-27
|
a0a.1 32b0c
NUCLEO-L476RG板子已经到我手里一个星期了,但是现在项目忙的紧,没时间弄它。打算再过半个月到一个月,休假的时候研究一下。看着介绍,觉得这个芯片的性能真的不错,有心在以后的项目中,看看能不能用到。
目前暂时没时间研究,就先分享一下板子以外的,关于串口协议解析的一点小技巧吧(只针对定长的协议)。
先定义一下串口协议的格式:
#program pack(1)//一个字节对齐 伪指令
typedef struct RX_STRUCT
{
uint16_t rxhead;//协议头
uint8_t lenght; //协议长度
uint8_t cmd; //协议命令
uint8_t data[4]; //协议数据
uint16_t check_data; //协议校验
}RX_STRUCT;
#program pack()//取消一个字节对齐
typedef union RX_DATA
{
RX_STRUCT rx;
rx_data_buf[sizeof(RX_STRUCT)];
}
/****************/
协议格式定义完毕
解析数据的时候,可以这么使用
RX_DATA rx_data;
当串口来数据的时候:
memcpy(rx_data.rx_data_buf,serial_data,sizeof(RX_STRUCT));
然后使用结构体,即可解析数据了。
if(rx_data.rx.rxhead == RX_HEAD)
{
switch(rx_data.rx.cmd)
{
...
}
}
一点小技巧,分享给大家。
NUCLEO-L476RG板开发笔记,过一段时间补上。
|
评分
-
查看全部评分
|