USART_RX_STA自定义寄存器

2019-07-20 22:59发布

 原子大哥   有个问题请教您一下   关于USART_RX_STA这个寄存器  是在哪个文件里面定义的   又是怎么定义每一位代表什么意思的     我找了好久没找到  谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
49条回答
sdjkjsdh
1楼-- · 2019-07-25 06:29
 精彩回答 2  元偷偷看……
ahwxa111
2楼-- · 2019-07-25 10:36
我也才学到这里,也是不怎么明白

u8 USART_RX_BUF[64];     //接收缓冲,最大64个字节.
//接收状态
//bit7,接收完成标志
//bit6,接收到0x0d
//bit5~0,接收到的有效字节数目
u8 USART_RX_STA=0;       //接收状态标记
第七位,我定义他是用来标记是否接收完成的标记,如果接收完成了就置1,如果没有,就是0.
第六位,我定义它用来标识是否接收到0X0D,如果收到,就置1,否则为0.
第5~0位,用来统计接收到的字符数,最大可以支持到64个字符.


以上这些原子哥写的都清楚,我也明白

if((USART_RX_STA&0x8000)==0)//接收未完成
{
if(USART_RX_STA&0x4000)//接收到了0x0d
{
if(res!=0x0a)USART_RX_STA=0;//接收错误,重新开始
else USART_RX_STA|=0x8000; //接收完成了

从这里 就不明白了,if(USART_RX_STA&0x4000)//接收到了0x0d
USART_RX_STA&0x4000  就是说USART_RX_STA &0100_0000_0000_0000 ==1
这句---只是说USART_RX_STA的第14位 是1啊,
那怎么知道 现在串口接收的数据 是0x0d????


原子哥,请指点迷津,多谢!!
正点原子
3楼-- · 2019-07-25 13:52
回复【38楼】ahwxa111:
---------------------------------
因为有:
if(res==0x0d)USART_RX_STA|=0x4000;
ahwxa111
4楼-- · 2019-07-25 16:28
 精彩回答 2  元偷偷看……
ahwxa111
5楼-- · 2019-07-25 17:45
 精彩回答 2  元偷偷看……
ahwxa111
6楼-- · 2019-07-25 19:28
谢谢原子哥!
代码没看仔细

一周热门 更多>