OpenEdv-开源电子网

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

新手求助,,,if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//这句话怎么理解

[复制链接]

5

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2014-8-18
在线时间
22 小时
发表于 2015-11-17 10:24:58 | 显示全部楼层 |阅读模式
5金钱
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //????????(????????????±?????0x0d 0x0a?á??)
{
Res =USART_ReceiveData(USART1);//(USART1->DR); //????????????????

if((USART_RX_STA&0x8000)==0)//???????ê??
{
if(USART_RX_STA&0x4000)//????????0x0d
{
if(Res!=0x0a)USART_RX_STA=0;//?????í?ó,????????
else USART_RX_STA|=0x8000; //?????ê???? 
}
else //????????0X0D
{
if(Res==0x0d)USART_RX_STA|=0x4000;
else
{
USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;
USART_RX_STA++;
if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//这句话怎么理解,为什么USART_RX_STA>(USART_REC_LEN-1)就是接受错误
}  
}
}    
     } 

最佳答案

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

接收超过最大接收值,重新接收
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-11-17 10:24:59 | 显示全部楼层
接收超过最大接收值,重新接收
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

5

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2014-8-18
在线时间
22 小时
 楼主| 发表于 2015-11-17 10:31:44 | 显示全部楼层
???????????????????
回复

使用道具 举报

85

主题

378

帖子

0

精华

高级会员

Rank: 4

积分
902
金钱
902
注册时间
2013-4-29
在线时间
87 小时
发表于 2015-11-17 12:18:18 | 显示全部楼层
#define USART_REC_LEN   200   //定义最大接收字节数 200
回复

使用道具 举报

85

主题

378

帖子

0

精华

高级会员

Rank: 4

积分
902
金钱
902
注册时间
2013-4-29
在线时间
87 小时
发表于 2015-11-17 12:19:29 | 显示全部楼层
此刻的长度  比 你规定的  缓存最大长度 还大,就错了呗
回复

使用道具 举报

0

主题

12

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-11-19
在线时间
3 小时
发表于 2015-11-19 13:00:24 | 显示全部楼层
接收字节数设置有一个最大限定值,程序设置的是200,超过200,数据无效的
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2019-5-28
在线时间
11 小时
发表于 2019-8-7 20:48:03 | 显示全部楼层
main_extern 发表于 2015-11-19 13:00
接收字节数设置有一个最大限定值,程序设置的是200,超过200,数据无效的

但是他这是大于199的呀,如果正好是200个字节的话是不是就算错了,但是该程序本意是最大接受的字节数是200啊,那是不是应该不需要减去1的啊
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2019-11-17
在线时间
4 小时
发表于 2019-12-31 13:10:28 | 显示全部楼层
本帖最后由 天行乾 于 2019-12-31 13:16 编辑
范思文 发表于 2019-8-7 20:48
但是他这是大于199的呀,如果正好是200个字节的话是不是就算错了,但是该程序本意是最大接受的字节数是20 ...

因为是从0-199,所以是两百个数。
回复

使用道具 举报

33

主题

218

帖子

0

精华

高级会员

Rank: 4

积分
568
金钱
568
注册时间
2015-1-12
在线时间
75 小时
发表于 2021-12-22 14:55:37 | 显示全部楼层
范思文 发表于 2019-8-7 20:48
但是他这是大于199的呀,如果正好是200个字节的话是不是就算错了,但是该程序本意是最大接受的字节数是20 ...

觉的你分析的很对,第200个字节是收不到的,收到第200个字节,马上就把USART_RX_STA变为0了,应该是不需要减1的
回复

使用道具 举报

33

主题

218

帖子

0

精华

高级会员

Rank: 4

积分
568
金钱
568
注册时间
2015-1-12
在线时间
75 小时
发表于 2021-12-22 14:56:32 | 显示全部楼层
天行乾 发表于 2019-12-31 13:10
因为是从0-199,所以是两百个数。

这个是元素个数200个,不是数组下标的第200个元素
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-17 16:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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