串口试验中 if((USART_RX_STA&0x8000)==0)接收未完成,if(USART_RX_STA&0x4000)接收到了0X0d 疑问

2019-07-21 06:07发布

我感觉这个问题点好多人都还没有弄清楚,我前思后想还是想不通,所以发图片求助,为什么用if((USART_RX_STA&0x8000)==0)来判断接收数据未完成。USART_RX_STA只是前面定义的一个全局变量,并且赋值为0,这个变量和串口中断中的一些寄存器位没有任何关系,并且这个USART_RX_STA全局变量在程序中又不会变化,永远是0,USART_RX_STA&0x8000的最后得到的值也就是始终为0X0000,这个数值又怎能判断接收数据完成?这里是不是应该用这个函数USART_GetITStatus(USART1, USART_IT_RXNE),这个函数才是接收数据中断完成标志。


还有这个if(USART_RX_STA&0x4000)接收到了0X0D是什么东西?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
learnone
1楼-- · 2019-07-21 18:08
我和你碰到同样的问题,假如if(USART_RX_STA&0x4000)接收到了0X0D我也知道是13,但如何对应0X4000>.
studen
2楼-- · 2019-07-21 18:54
 精彩回答 2  元偷偷看……
阳SS
3楼-- · 2019-07-21 21:16
0x8000,即二进制1000 0000 0000 0000,与变量USART_RX_STA,按位与(&),并与0比较,作用是判断USART_RX_STA数值第16位是否为0,0x4000是一样的道理,刚才明白,给萌新分享一下
阳SS
4楼-- · 2019-07-21 21:53

一周热门 更多>