OpenEdv-开源电子网

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

编串口程序时遇到神奇的现象

[复制链接]

5

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-7-9
在线时间
14 小时
发表于 2017-11-5 02:48:23 | 显示全部楼层 |阅读模式
1金钱
先贴出我的代码1.串口1的配置

串口1.jpg
2.发送函数
360截图20171105023349023.jpg
3.调用
360截图20171105023452664.jpg
4.串口助手的显示
360截图20171105023657542.jpg 360截图20171105023505328.jpg

波特率都是9600没错,为什么会错乱呢?删掉发送一个字符的0xfd,后面那条字符串显示锤子就就正常!!!




360截图20171105023657542.jpg
360截图20171105023505328.jpg
360截图20171105023452664.jpg
360截图20171105023349023.jpg
串口1.jpg
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

25

主题

161

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
269
金钱
269
注册时间
2017-7-17
在线时间
149 小时
发表于 2017-11-5 08:01:31 | 显示全部楼层
本帖最后由 王建峰 于 2017-11-5 08:04 编辑

可能是解码的时候出了问题,对于串口助手接收到的数据 并没有严格的区分。。不管是汉字还是字符码,都是以一个字节一个字节存储。然后发送到串口,另一端再对获取的数据解码。都换做字符格式发送,应该就没有问题了吧!?
回复

使用道具 举报

25

主题

161

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
269
金钱
269
注册时间
2017-7-17
在线时间
149 小时
发表于 2017-11-5 08:20:48 | 显示全部楼层
好像跟字符串的编码方式也有关系系,,UTF-8是可变长度的字符编码,如果这样的话,串口助手会把 0Xfd跟后边的汉字码连到一起,解码成一个新的字符。
解决方案.参考链接:https://zhidao.baidu.com/question/391552480668719325.html
不忘初心,方得始终!
回复

使用道具 举报

32

主题

171

帖子

0

精华

高级会员

Rank: 4

积分
697
金钱
697
注册时间
2017-1-7
在线时间
75 小时
发表于 2017-11-5 10:48:24 | 显示全部楼层
一个汉字是2个字节,你发FD B4 B8 D7 D3 换格式看,肯定是把FD B4进行转化
回复

使用道具 举报

1

主题

430

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1461
金钱
1461
注册时间
2011-12-1
在线时间
110 小时
发表于 2017-11-5 20:10:08 | 显示全部楼层
你要是发汉字与字符混合的话,要注意2字节的要求,因为汉字是2字节的,你的FD B4 B8 D7 D3如果连续发就会把FD B4当做一个汉字,后面两个两个当做一个,所以就出现你这种情况了。你可以在FD前面或者后面加一个字节,或者用printf输出,这个可以混合。
回复

使用道具 举报

5

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-7-9
在线时间
14 小时
 楼主| 发表于 2017-11-5 22:27:14 | 显示全部楼层
王建峰 发表于 2017-11-5 08:20
好像跟字符串的编码方式也有关系系,,UTF-8是可变长度的字符编码,如果这样的话,串口助手会把 0Xfd跟后边 ...

那为什么FD换成其他 就行了呢
回复

使用道具 举报

5

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-7-9
在线时间
14 小时
 楼主| 发表于 2017-11-5 22:27:40 | 显示全部楼层
Jevin乐动 发表于 2017-11-5 10:48
一个汉字是2个字节,你发FD B4 B8 D7 D3 换格式看,肯定是把FD B4进行转化

那为什么FD换成其他就没问题了呢
回复

使用道具 举报

5

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-7-9
在线时间
14 小时
 楼主| 发表于 2017-11-5 22:27:56 | 显示全部楼层
xlong_06 发表于 2017-11-5 20:10
你要是发汉字与字符混合的话,要注意2字节的要求,因为汉字是2字节的,你的FD B4 B8 D7 D3如果连续发就会把 ...

那为什么FD换成其他就没问题了呢
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2017-11-6 00:44:13 | 显示全部楼层
你得看看FD是怎么发出去的,仿真看看了
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

5

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-7-9
在线时间
14 小时
 楼主| 发表于 2017-11-6 14:12:05 | 显示全部楼层
正点原子 发表于 2017-11-6 00:44
你得看看FD是怎么发出去的,仿真看看了

请问这是怎么仿真来看他怎么发呢?我还没买stlink,所以没学,正准备买一个
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2017-11-7 01:10:25 | 显示全部楼层
895855647 发表于 2017-11-6 14:12
请问这是怎么仿真来看他怎么发呢?我还没买stlink,所以没学,正准备买一个

等仿真器到了仿真吧
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

5

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-7-9
在线时间
14 小时
 楼主| 发表于 2018-3-1 00:07:46 | 显示全部楼层
正点原子 发表于 2017-11-7 01:10
等仿真器到了仿真吧

好的谢谢
回复

使用道具 举报

6

主题

153

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1323
金钱
1323
注册时间
2016-12-27
在线时间
156 小时
发表于 2018-3-1 08:12:17 | 显示全部楼层
有时候工程中的芯片型号没选对也会出现这种状况;我之前就遇到过
回复

使用道具 举报

5

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-7-9
在线时间
14 小时
 楼主| 发表于 2018-3-7 16:37:07 | 显示全部楼层
大瓶子凌凌漆 发表于 2018-3-1 08:12
有时候工程中的芯片型号没选对也会出现这种状况;我之前就遇到过

回复

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
发表于 2018-3-7 20:15:52 | 显示全部楼层
我觉得不是字符编码的问题,乱码应该是因为显示了内存里面的垃圾数据
没有脑袋
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 18:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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