OpenEdv-开源电子网

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

usart串口实验输出乱码问题

[复制链接]

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2022-10-7
在线时间
7 小时
发表于 2022-11-12 22:22:58 | 显示全部楼层 |阅读模式
1金钱
以图中的输出,第二个函数的串口输出总是会乱码,连续使用两个printf函数输出时,第二个输出还是会乱码

输出结果.png
sendstring.png
printf重定向函数.png
main函数.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8462
金钱
8462
注册时间
2020-5-11
在线时间
3904 小时
发表于 2022-11-14 13:40:07 | 显示全部楼层
Usart_SendString是你写的?
感觉 do while会多发一个字节,你可以发个短一点的字符串然后用16进制显示验证一下。
另个就是usart_sendbyte的代码没见到,可能与fputc使用(等待)的标志位不同,
二者混用可能造成数据未发完就发送下一字节使得数据出错,建议两个函数之间加延时1ms。
专治疑难杂症
回复

使用道具 举报

13

主题

250

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2248
金钱
2248
注册时间
2019-8-7
在线时间
364 小时
发表于 2022-11-14 14:40:51 | 显示全部楼层
本帖最后由 远命 于 2022-11-14 14:48 编辑

do while是先执行后判断的 所以有的时候可以用 do while(0)来做跳转函数 字节数emmm看了一下这个循环这样用应该是对的 得看看usart_sendbyte这个函数咋写的
回复

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8462
金钱
8462
注册时间
2020-5-11
在线时间
3904 小时
发表于 2022-11-14 19:05:14 | 显示全部楼层
远命 发表于 2022-11-14 14:40
do while是先执行后判断的 所以有的时候可以用 do while(0)来做跳转函数 字节数emmm看了一下这个循环这样用 ...

比如第一字节就是0,你说它会不会发个0出来呢?
当然,这种特殊情况估计永远也不会遇到。
专治疑难杂症
回复

使用道具 举报

13

主题

250

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2248
金钱
2248
注册时间
2019-8-7
在线时间
364 小时
发表于 2022-11-14 19:40:50 | 显示全部楼层
LcwSwust 发表于 2022-11-14 19:05
比如第一字节就是0,你说它会不会发个0出来呢?
当然,这种特殊情况估计永远也不会遇到。

受教了,哈哈哈
回复

使用道具 举报

70

主题

6756

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12983
金钱
12983
注册时间
2012-11-26
在线时间
3787 小时
发表于 2022-11-15 08:14:03 | 显示全部楼层
发送和等待写反了     应该先等待   后发送
学无止境
回复

使用道具 举报

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2022-10-7
在线时间
7 小时
 楼主| 发表于 2022-11-15 19:52:45 | 显示全部楼层
LcwSwust 发表于 2022-11-14 13:40
Usart_SendString是你写的?
感觉 do while会多发一个字节,你可以发个短一点的字符串然后用16进制显示验证 ...

今天我有试了一下 发现发送的内容不同,情况也不一样,我上传的两个两组printf打印代码,一个可以正常显示一个就是乱码
正确的输出.png
再次实验.png
printf乱码.png
printf正确.png
回复

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8462
金钱
8462
注册时间
2020-5-11
在线时间
3904 小时
发表于 2022-11-15 19:59:08 | 显示全部楼层
老乐1985 发表于 2022-11-15 19:52
今天我有试了一下 发现发送的内容不同,情况也不一样,我上传的两个两组printf打印代码,一个可以正常显 ...

串口助手也可能有BUG,换为XCOM V2.6试一下,或SSCOM5.09.
还有就是,用16进制显示看看有没有缺什么或多出什么.
专治疑难杂症
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-24 23:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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