OpenEdv-开源电子网

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

关于串口通信数据错位的问题

[复制链接]

3

主题

14

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2021-3-4
在线时间
10 小时
发表于 2021-5-4 14:05:10 | 显示全部楼层 |阅读模式
2金钱
就是我的串口程序会遇到这种情况,当我发送的数据长度比前一个数据长度长的时候没有问题,但是当我发送的数据长度比前一个数据长度短的时候,只会覆盖前一个数据的前几位然后输出出来,不懂为什么会这样,大佬们帮帮忙,帮我看看是哪里的问题,谢谢大家了。 1111.png 22222.png

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

25

主题

180

帖子

0

精华

高级会员

Rank: 4

积分
596
金钱
596
注册时间
2015-1-14
在线时间
152 小时
发表于 2021-5-8 16:35:06 | 显示全部楼层
发送完成清空接收buffer
回复

使用道具 举报

11

主题

2154

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4957
金钱
4957
注册时间
2015-1-10
在线时间
621 小时
发表于 2021-5-8 22:52:24 | 显示全部楼层
发送用发送的buf,接收用接收的buf,不要混用,每次发送前清空一下发送buf
回复

使用道具 举报

13

主题

643

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2432
金钱
2432
注册时间
2019-12-28
在线时间
527 小时
发表于 2021-5-10 11:30:03 | 显示全部楼层
while((USART1->SR&0X40)==0);//循环发送,直到发送完毕
可以加上这个等待发送完毕,再去进行下一次的发送
回复

使用道具 举报

4

主题

915

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4537
金钱
4537
注册时间
2019-9-4
在线时间
918 小时
发表于 2021-5-10 12:04:59 | 显示全部楼层
因为你上一次接收到的数据没有清楚,而第二次接收到的数据又比上一次的短,覆盖了一部分,而后部分没有覆盖到。把缓冲清除了就行了
回复

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2021-3-4
在线时间
10 小时
 楼主| 发表于 2021-7-22 22:19:10 | 显示全部楼层
噢噢,解决啦解决啦!!谢谢大家
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-25 21:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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