你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 1899|回复: 5

[STM32L476] NUCLEO-L476RG板开发笔记----串口协议解析方案

[复制链接]

23

主题

222

回帖

0

蝴蝶豆

高级会员

最后登录
2019-9-27
发表于 2015-11-12 21:41:20 | 显示全部楼层 |阅读模式
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板开发笔记,过一段时间补上。















评分

参与人数 1ST金币 +5 收起 理由
沐紫 + 5

查看全部评分

回复

使用道具 举报

47

主题

1210

回帖

5

蝴蝶豆

论坛元老

最后登录
2020-8-13
发表于 2015-11-12 22:10:22 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

3

主题

144

回帖

0

蝴蝶豆

高级会员

最后登录
2019-11-29
发表于 2015-11-12 22:45:10 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

1

主题

63

回帖

0

蝴蝶豆

中级会员

最后登录
2016-11-3
发表于 2015-11-12 23:30:34 | 显示全部楼层
谢谢分享
stmcu.org.png
回复 支持 反对

使用道具 举报

1

主题

629

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-3-7
发表于 2015-11-13 08:52:29 | 显示全部楼层
学习                  
回复 支持 反对

使用道具 举报

33

主题

1243

回帖

0

蝴蝶豆

论坛元老

最后登录
2019-3-9
发表于 2015-11-13 08:57:44 | 显示全部楼层
谢谢分享.png
回复 支持 反对

使用道具 举报

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版