OpenEdv-开源电子网

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

串口通信问题

[复制链接]

10

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2016-1-6
在线时间
7 小时
发表于 2016-3-11 11:19:36 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 time0.0 于 2016-3-11 11:21 编辑

注释里面讲u8 USART_RX_BUF[USART_REC_LEN];     这个数组是用来存放接受的数据,那么它里面存放的应该是字符串,但是单个字节是通过Res =USART_ReceiveData(USART1);    来接受的,请问Res的值又是如何写到数组 USART_RX_BUF,还有程序中好像没有USART_RX_BUF[]数组长度自加的部分,请问它是存放数据(字符串)的
(OBVK409@7%CN[8@PYM`IHF.png

~(%5M2)Y[79GPSKCZ`HUN52.png
J}%}_PS~(VSS[2W@[I%YA@S.png

最佳答案

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

原子哥的源代码你竟然看不懂。 那不是有赋值操作吗,不要告诉我说你竟然看不到xxx=Res这句。 还有就是字符串结束标志,这个又不是串口通信协议。原子哥已经注明的很清楚了, 接收到0x0D,0x0a才是接收停止。 0x0D 0x0a---这两个东东加在一起就是回车的意思。(就是你在串口调试助手里输入一个字符串,然后回车就能发送到stm32了,stm32接受到回车就认为这条字符串接受完毕) 如果你用丁丁的串口调试助手,0x0D 0x0a这样的 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

30

主题

705

帖子

1

精华

新手上路

积分
21
金钱
21
注册时间
2013-3-14
在线时间
52 小时
发表于 2016-3-11 11:19:37 | 显示全部楼层
time0.0 发表于 2016-3-17 12:54
这个我知道,问题是接收是一个字节一个字节接收的,当接收到一个字节以后又是怎样写到缓存数组里面的呢, ...

原子哥的源代码你竟然看不懂。
那不是有赋值操作吗,不要告诉我说你竟然看不到xxx=Res这句。
还有就是字符串结束标志,这个又不是串口通信协议。原子哥已经注明的很清楚了,
接收到0x0D,0x0a才是接收停止。
0x0D 0x0a---这两个东东加在一起就是回车的意思。(就是你在串口调试助手里输入一个字符串,然后回车就能发送到stm32了,stm32接受到回车就认为这条字符串接受完毕)
如果你用丁丁的串口调试助手,0x0D 0x0a这样的后缀是可以自动添加的。
原子哥是不是又要出黑科技了呀。^_^...
回复

使用道具 举报

1

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2015-9-4
在线时间
29 小时
发表于 2016-3-11 14:49:41 | 显示全部楼层
最后一张图,中断里面不是有res放到数组 USART_RX_BUF的语句吗?
回复

使用道具 举报

10

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2016-1-6
在线时间
7 小时
 楼主| 发表于 2016-3-12 13:30:13 | 显示全部楼层
这里是当接收出问题时才往里面放的吧,如果顺利接收呢
回复

使用道具 举报

30

主题

705

帖子

1

精华

新手上路

积分
21
金钱
21
注册时间
2013-3-14
在线时间
52 小时
发表于 2016-3-12 13:40:59 | 显示全部楼层
本帖最后由 fanghuiopenedv 于 2016-3-12 13:42 编辑
time0.0 发表于 2016-3-12 13:30
这里是当接收出问题时才往里面放的吧,如果顺利接收呢
不是接收出问题。
是判断没有接收到停止字符0x0D,没有接收到停止符当然累加缓冲了,接收到就不再累加了。
原子哥是不是又要出黑科技了呀。^_^...
回复

使用道具 举报

69

主题

978

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3772
金钱
3772
注册时间
2015-4-26
在线时间
765 小时
发表于 2016-3-12 21:54:58 | 显示全部楼层
time0.0 发表于 2016-3-12 13:30
这里是当接收出问题时才往里面放的吧,如果顺利接收呢

那叫接收寄存器非空中断
我有故事,你有酒吗
回复

使用道具 举报

10

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2016-1-6
在线时间
7 小时
 楼主| 发表于 2016-3-17 12:54:39 | 显示全部楼层
fanghuiopenedv 发表于 2016-3-12 13:40
不是接收出问题。
是判断没有接收到停止字符0x0D,没有接收到停止符当然累加缓冲了,接收到就不再累加了。

这个我知道,问题是接收是一个字节一个字节接收的,当接收到一个字节以后又是怎样写到缓存数组里面的呢,而且字符串写到数组里面的结束标记 \0 也没有啊
回复

使用道具 举报

10

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2016-1-6
在线时间
7 小时
 楼主| 发表于 2016-3-23 11:46:49 | 显示全部楼层
fanghuiopenedv 发表于 2016-3-11 11:19
原子哥的源代码你竟然看不懂。
那不是有赋值操作吗,不要告诉我说你竟然看不到xxx=Res这句。
还有就 ...

懂了 谢谢
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 17:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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