新手上路
- 积分
- 33
- 金钱
- 33
- 注册时间
- 2013-9-14
- 在线时间
- 0 小时
|
手册中描述:当接收到从电脑发过来的数据,把接收到的数据保存在USART_RX_BUF中,同时在接收状态寄存器(USART_RX_STA)中计数接收到
的有效数据个数,当收到回车(0X0D,0X0A)的第一个字节0X0D时,计数器将不再增加,等待0X0A的到来,而如果0X0A没有来到...
请问,USART_RX_STA是自定义的,那它是如何充当计数功能的?USART_RX_STA又是如何读取到USART_RX_BUF中的数据个数的?
代码:
if(USART1->SR&(1<<5))//接收到数据
{
res=USART1->DR; //传递数据字节到DR寄存器,#define USART1 ((USART_TypeDef *) USART1_BASE)
if((USART_RX_STA&0x8000)==0)//接收未完成;
{
if(USART_RX_STA&0x4000)//接收到了0x0d
{
if(res!=0x0a)USART_RX_STA=0;//接收错误,重新开始
else USART_RX_STA|=0x8000; //接收完成了
}
else //还没收到0X0D
{
if(res==0x0d)USART_RX_STA|=0x4000;
else
{
USART_RX_BUF[USART_RX_STA&0X3FFF]=res;
USART_RX_STA++;
if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//接收数据错误,重新开始接收
}
}
}
} |
|