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板开发笔记,过一段时间补上。 |
感谢分享 |
感谢分享 |
谢谢分享 |
学习 |
|