OpenEdv-开源电子网

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

串口通信USART_RX_STA

[复制链接]

6

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2017-10-1
在线时间
10 小时
发表于 2017-10-1 19:27:52 | 显示全部楼层 |阅读模式
1金钱
STM32F1的UARST通信,为什么需要写一个USART_RX_STA的通信协议

最佳答案

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

USART_RX_STA主要是用来判断串口接收是否完成,判断有没有接收到"\r\n",这是回车换行符,如果接收到了就认为接收完成。这种方法主要用来接收不定长数据!如果直接接收的话你怎么知道一次发送完成了?当然了,也可以使用其它方法接收不定长数据。比如串口的IDLE中断+DMA的方式。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2017-10-1 19:27:53 | 显示全部楼层
USART_RX_STA主要是用来判断串口接收是否完成,判断有没有接收到"\r\n",这是回车换行符,如果接收到了就认为接收完成。这种方法主要用来接收不定长数据!如果直接接收的话你怎么知道一次发送完成了?当然了,也可以使用其它方法接收不定长数据。比如串口的IDLE中断+DMA的方式。
回复

使用道具 举报

11

主题

216

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1124
金钱
1124
注册时间
2015-2-27
在线时间
485 小时
发表于 2017-10-1 19:31:19 | 显示全部楼层
USART_RX_STA这个字面理解是串口_接受_状态,能有什么用?
回复

使用道具 举报

6

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2017-10-1
在线时间
10 小时
 楼主| 发表于 2017-10-2 12:30:17 | 显示全部楼层
在串口实验中,中断服务函数为什么要加一个判断(图1),而不是直接接受、发送(图2)

QQ截图20171002122718.png
QQ截图20171002122800.png
回复

使用道具 举报

6

主题

146

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1254
金钱
1254
注册时间
2016-11-30
在线时间
211 小时
发表于 2017-10-8 10:32:55 | 显示全部楼层
串口协议是用来判断是否接收到数据,如楼上所述一样,串口协议可以自己定义,最主要是确保数据接收完整,而USART_RX_STA只是一个变量,用来识别是否接收到的标志,也就是在接收完毕后将USART_RX_STA置1,即可通过判断USART_RX_STA的值来识别串口是否接收到数据。
回复

使用道具 举报

6

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2017-9-20
在线时间
27 小时
发表于 2017-10-8 11:24:18 | 显示全部楼层

添加USART_RX_STA

添加USART_RX_STA

串口输出结果

串口输出结果

请教下,我在main函数里面的打印输出地方添加了USART_RX_STA的值,然后向串口发送a后,USART_RX_STA输出为49153。这个值让我很困惑,在usart.c里面,执行了“if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;“这句后,USART_RX_STA的值就不会超过USART_REC_LEN-1了呀,也就是199.为什么会变成49153呢?
回复

使用道具 举报

2

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2014-4-10
在线时间
10 小时
发表于 2017-10-8 14:25:33 | 显示全部楼层
为什么会变成49153呢?   49 是什么
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-20 01:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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