请问做串口试验时 if(USART_RX_STA&0X80)是什么意思

2019-08-17 08:08发布

请问做串口试验时 if(USART_RX_STA&0X80)是什么意思? USART_RX_STA代表什么,把谁的值付给了USART_RX_STA?为什么在程序里找不到aa
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
32条回答
xyz1015231411
1楼-- · 2019-08-17 08:40
本帖最后由 xyz1015231411 于 2017-2-26 15:44 编辑

我感觉这个问题点好多人都还没有弄清楚,我前思后想还是想不通,所以发图片求助,为什么用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),这个函数才是接收数据中断完成标志。
zhulifeng
2楼-- · 2019-08-17 10:49
 精彩回答 2  元偷偷看……
正点原子
3楼-- · 2019-08-17 12:03
1,串口中断,STM32有串口这个外设,在收到合法的数据后,就会置位中断标志,stm32开启中断的话,就可以响应,从而执行中断程序.串口中断不同于IO的外部中断,不是上升沿也不是下降沿.
2,汉字=2个字节.收2个字节就是个汉字了.
3,都要判断.
4,你可以这么写.
longoliver
4楼-- · 2019-08-17 16:01

仔细看一下这个吧,我也在这疑惑了两天才看明白。建议原子哥也多注释一下,让大家更清楚。
5498折戟沉沙
5楼-- · 2019-08-17 19:14
楼主应该把程序看完的,那只是一个标志位

另外要学习论坛的搜索功能啊
hqgboy
6楼-- · 2019-08-17 21:03
 if((USART_RX_STA&0x8000)==0)//接收未完成

判断接收是否完成。

一周热门 更多>