串口试验中 为什么(USART_RX_STA&0x80)==0就表示没接收完成数据

2019-10-14 23:31发布

为什么 (USART_RX_STA&0x80)==0表示接收数据未完成; if(USART_RX_STA&0x40)//接收到了0x0d,,,,这里接收到0x0d又是什么意思? 请问有相关的资料吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
正点原子
1楼-- · 2019-10-15 03:00
 精彩回答 2  元偷偷看……
zhulifeng
2楼-- · 2019-10-15 07:14
  因为这个资料里把USART_RX_STA当作变量用,自己设置的一个协议  如果有数据接收完  USART_RX_STA的最高位就置1
正点原子
3楼-- · 2019-10-15 07:26
回复【楼主位】stm32007:
---------------------------------
看注释就好了.
14884036
4楼-- · 2019-10-15 13:21
回复【楼主位】stm32007:
---------------------------------
u8 USART_RX_BUF[64];     //接收缓冲,最大64个字节. 
//接收状态 
//bit7,接收完成标志  
//bit6,接收到0x0d 
//bit5~0,接收到的有效字节数目 
u8 USART_RX_STA=0;       //接收状态标记 
第七位,用来标记是否接收完成的标记,如果接收完成了就置1,如果没有,就是0. 
第六位,用来标识是否接收到0X0D,如果收到,就置1,否则为0. 
第5~0位,用来统计接收到的字符数,最大可以支持到64个字符. 


USART_RX_STA&0x80取USART_RX_STA最高位也就是bit7
USART_RX_STA&0x40取次高位也就是bit6
feel
5楼-- · 2019-10-15 14:41
回复【3楼】 正点原子 : --------------------------------- 原子哥...    我最近才学这个,关于串口部分的通讯协议我认为算是看懂了。 但是还是遇到一些问题,我在MAIN里面利用串口接受一个字符当作开光用。发现不行。
遇到几个问题总结下: 软件调试的时候     一直开着HSE那个位置进不去....百度查询不到     硬件调试的时候     串口每次发送数据过来他每次都是获取到第一个字符串,第二个那些都没有。又卡在这里,所有没法设置到通讯完毕的标志位。就没法继续了。
实验问题: 串口发送一个Q,或者是W 控制一个U8 的KK 置为Q: 1 W:0 然后在循环下面写一个IF(kk){输出}else{关闭}
实际情况很神奇,系统运行提示的LED 会受到Q  和W的影响,Q就关闭了,W就闪。  而我要控制的PB05没有任何反应。






正点原子
6楼-- · 2019-10-15 16:27
 精彩回答 2  元偷偷看……

一周热门 更多>