OpenEdv-开源电子网

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

向串口发送一个数组,总是丢失数组里的一些值,为什么?

[复制链接]

9

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2018-9-28
在线时间
16 小时
发表于 2018-9-30 13:57:17 | 显示全部楼层 |阅读模式
1金钱
比如这个程序,只是发送一串数字,但串口显示的时候总是丢失某几个数字

最佳答案

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

main函数如果不加while死循环,执行完毕后会再次从头开始。这就解释了你最后一个字节为什么没有了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

69

主题

978

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3772
金钱
3772
注册时间
2015-4-26
在线时间
765 小时
发表于 2018-9-30 13:57:18 | 显示全部楼层
main函数如果不加while死循环,执行完毕后会再次从头开始。这就解释了你最后一个字节为什么没有了
我有故事,你有酒吗
回复

使用道具 举报

9

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2017-8-3
在线时间
28 小时
发表于 2018-9-30 14:07:41 | 显示全部楼层
你这个发送5次后就会跳出,当然后面的数据就会漏掉
回复

使用道具 举报

9

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2018-9-28
在线时间
16 小时
 楼主| 发表于 2018-9-30 14:07:55 | 显示全部楼层
这样运行,串口里就少了最后一个数字,求问是什么原因造成的
回复

使用道具 举报

9

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2018-9-28
在线时间
16 小时
 楼主| 发表于 2018-9-30 14:09:54 | 显示全部楼层
Findaway 发表于 2018-9-30 14:07
你这个发送5次后就会跳出,当然后面的数据就会漏掉

不是,我就想要前五个,但它输出的不是前五个,可能是后面的几个,输出的数是不规律的
回复

使用道具 举报

9

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2018-9-28
在线时间
16 小时
 楼主| 发表于 2018-9-30 14:16:31 | 显示全部楼层
这样是少了最后一个数,但前面莫名其妙又多了一个数,不知道为什么
回复

使用道具 举报

9

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2017-8-3
在线时间
28 小时
发表于 2018-9-30 14:19:45 | 显示全部楼层
yxl869 发表于 2018-9-30 14:09
不是,我就想要前五个,但它输出的不是前五个,可能是后面的几个,输出的数是不规律的

你把两个语句兑换下顺序看看,
USART2->DR=test;
while((USART2->SR&0X40)==0);
回复

使用道具 举报

9

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2018-9-28
在线时间
16 小时
 楼主| 发表于 2018-9-30 14:25:27 | 显示全部楼层
Findaway 发表于 2018-9-30 14:19
你把两个语句兑换下顺序看看,
USART2->DR=test;
while((USART2->SR&0X40)==0);

换了,也是一样丢失某些数
回复

使用道具 举报

52

主题

247

帖子

0

精华

高级会员

Rank: 4

积分
997
金钱
997
注册时间
2017-8-19
在线时间
160 小时
发表于 2018-9-30 14:32:17 | 显示全部楼层
我猜是不是初始化有问题。或者\r\n
回复

使用道具 举报

69

主题

978

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3772
金钱
3772
注册时间
2015-4-26
在线时间
765 小时
发表于 2018-9-30 14:36:37 | 显示全部楼层
你没发现你丢的总是最后一个字节吗。这还不明显吗,你的程序再发送最后一个字节的时候要等他发送完成,而你并没有
我有故事,你有酒吗
回复

使用道具 举报

9

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2018-9-28
在线时间
16 小时
 楼主| 发表于 2018-9-30 14:37:11 | 显示全部楼层
bbq 发表于 2018-9-30 14:32
我猜是不是初始化有问题。或者\r\n

初始化是正点自带的程序,运行其他程序是好用的,就改了一下主函数,结果就出问题了,所以我感觉是不是我数组哪里设置的不对
回复

使用道具 举报

9

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2018-9-28
在线时间
16 小时
 楼主| 发表于 2018-9-30 14:39:11 | 显示全部楼层
来俩不甜的 发表于 2018-9-30 14:36
你没发现你丢的总是最后一个字节吗。这还不明显吗,你的程序再发送最后一个字节的时候要等他发送完成,而你 ...

并不是总丢最后一个字节,还有可能丢第一个,或者不丢字节但是显示的不是发送过去的字节
回复

使用道具 举报

9

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2017-8-3
在线时间
28 小时
发表于 2018-9-30 15:01:37 | 显示全部楼层
yxl869 发表于 2018-9-30 14:39
并不是总丢最后一个字节,还有可能丢第一个,或者不丢字节但是显示的不是发送过去的字节

while((USART2->SR&0X40)==0);
USART2->DR=test;
delay_ms(1);
你再试试这个
回复

使用道具 举报

9

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2018-9-28
在线时间
16 小时
 楼主| 发表于 2018-9-30 15:44:07 | 显示全部楼层
明白了,感谢感谢
回复

使用道具 举报

0

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2020-2-16
在线时间
26 小时
发表于 2020-4-22 22:05:36 | 显示全部楼层
yxl869 发表于 2018-9-30 15:44
明白了,感谢感谢

楼主,是因为什么啊
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-25 22:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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