OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4206|回复: 1

stm32 f407 串口粘包问题

[复制链接]

17

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2015-9-24
在线时间
14 小时
发表于 2016-8-7 17:04:57 | 显示全部楼层 |阅读模式
2金钱
本帖最后由 笨鸟先飞鱼 于 2016-8-7 17:06 编辑

1、因为单片机串口与上位机进行大量交互动作,所以当上位机发送命令的时候经常有命令没有执行,自己一条一条指令用串口工具测试大部分时间是正常的,偶尔不正常。

问题来了: 当上位机发送数据粘包时,下位机应该怎么处理?或者以怎样一个思路处理? 有源程序见鉴更好。


因为主程序有其他任务执行,所以串口接收使用的是中断,串口解析也是实用的定时器去解析。

最佳答案

查看完整内容[请看2#楼]

协议,是用来解决上位机与下位机之间沟通问题的。 你这种情况至少有以下几种方法解决。 1、单片机使用FIFO来管理和执行来到的多条命令, 2、协议约束:上位机发送命令的间隔应不小于多少ms 3、单片机如果有命令尚未执行完成,则给上位机发送忙信息。(参见I2C协议、LCD1602等如何实现忙检测)
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2016-8-7 17:04:58 | 显示全部楼层
协议,是用来解决上位机与下位机之间沟通问题的。

你这种情况至少有以下几种方法解决。


1、单片机使用FIFO来管理和执行来到的多条命令,
2、协议约束:上位机发送命令的间隔应不小于多少ms
3、单片机如果有命令尚未执行完成,则给上位机发送忙信息。(参见I2C协议、LCD1602等如何实现忙检测)
坚决不用寄存器,拒绝重复造轮子。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-28 00:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表