OpenEdv-开源电子网

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

串口通信(USART_Rx_State&0x80)==0为什么改成USART_Rx_State!=0x80就不行啊???求解??

[复制链接]

6

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2013-11-17
在线时间
9 小时
发表于 2014-5-16 20:57:42 | 显示全部楼层 |阅读模式
5金钱
void USART1_IRQHandler(void)   
{
   u8 Res;
   if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)
   {
       Res=USART_ReceiveData(USART1);
  if((USART_Rx_State&0x80)==0)  //判断是否完成,完成时USART_Rx_State=0x80;
  {
     if(USART_Rx_State&0x40)//判断接受到的数据是不是/n
 {  //是
    if(Res==0x0a) USART_Rx_State|=0x80;//判断第64个是不是换行0x0a ,是接受结束
else USART_Rx_State=0; //不是,接受错误,重新接受
 }
 else    //不是存储到 USART_Rx_Buffer
 {
    if(Res==0x0d) USART_Rx_State|=0x40;
else
{
      USART_Rx_Buffer[USART_Rx_State&0x3f]=Res;
  USART_Rx_State++;
  if(USART_Rx_State>63)USART_Rx_State=0;//判断下一次要接受的数据是不是第64,若是重新接受
  }
 } 
  }
   }
}

(USART_Rx_State&0x80)==0为什么改成USART_Rx_State!=0x80就不行啊???求解

最佳答案

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

因为USART_Rx_State,一定不会是 0X80...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-16 20:57:43 | 显示全部楼层
因为USART_Rx_State,一定不会是 0X80...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

6

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2013-11-17
在线时间
9 小时
 楼主| 发表于 2014-5-17 18:30:35 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
为什么呢??
回复

使用道具 举报

8

主题

222

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2013-11-21
在线时间
0 小时
发表于 2014-5-17 18:46:27 | 显示全部楼层
回复【3楼】loyforever:
---------------------------------
USART_Rx_State&0x80)==0   只是判断一位,判断是否接受完成。如果接受完成才标记为1
USART_Rx_State!=0x80   意思就完全不一样了
回复

使用道具 举报

6

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2013-11-17
在线时间
9 小时
 楼主| 发表于 2014-5-17 19:47:35 | 显示全部楼层
回复【4楼】苦竹2009:
---------------------------------
可是STM32接受到了0x0d表示接受完成,此时USART_Rx_State=0x80;那么判断USART_Rx_State!=0x80就表示没有接受完成,这样不是可以吗
回复

使用道具 举报

70

主题

6766

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13145
金钱
13145
注册时间
2012-11-26
在线时间
3816 小时
发表于 2014-5-17 20:03:40 | 显示全部楼层
回复【5楼】loyforever:
---------------------------------
完全就是俩逻辑!!!

一个判定最高位   一个判定就是等于0x80 !!
学无止境
回复

使用道具 举报

70

主题

6766

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13145
金钱
13145
注册时间
2012-11-26
在线时间
3816 小时
发表于 2014-5-17 20:04:04 | 显示全部楼层
回复【5楼】loyforever:
---------------------------------
你还是好好看看  这个State到底是什么意思吧!!!
学无止境
回复

使用道具 举报

11

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2011-8-18
在线时间
0 小时
发表于 2014-5-21 17:33:26 | 显示全部楼层
&0x80是在判定最高位的状态~。。不是寄存器数值的比较~
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-7 22:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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