串口试验中 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条回答
正点原子
1楼-- · 2019-07-21 11:54
0x0D(asc码是13) 指的是“回车” 是把光标置于本行行首0x0A(asc码是10) 指的是“换行” 是把光标置于下一行
正点原子
2楼-- · 2019-07-21 11:55
你仔细看串口中断服务函数代码,就明白了。
francischu
3楼-- · 2019-07-21 13:33
 精彩回答 2  元偷偷看……
caijie0513
4楼-- · 2019-07-21 16:44
没有接收完,他就会一直接收,并且存到xxxbuff数组里面
接收完毕之后,:   :  USART_RX_STA&0x80 = 1;  
caijie0513
5楼-- · 2019-07-21 16:55
就是自己定义的一个小协议
釜底抽筋
6楼-- · 2019-07-21 17:33
对,后面有两句给变量赋值的语句

一周热门 更多>