初级会员

- 积分
- 69
- 金钱
- 69
- 注册时间
- 2019-7-21
- 在线时间
- 20 小时
|
1金钱
这真的是过不去的坎。。。我看了它的定义 也就是16位的0,但是让我疑惑的是:手册上说了这是一个接收协议,但是我在中断服务程序里面并没有看出对这个协议的具体说明。。
抛开这是一个协议不看 因为我们只知道它的定义就是初始值为0的16位的数值 所以,既然只知道这个,我们不能先入为主的说它就是一个接收协议吧!
下面是中断服务程序的代码:
void USART1_IRQHandler(void)
{
u8 Res;
#if SYSTEM_SUPPORT_OS
OSIntEnter();
#endif
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
Res =USART_ReceiveData(USART1);//(USART1->DR);
if((USART_RX_STA&0x8000)==0)
{
if(USART_RX_STA&0x4000)
{
if(Res!=0x0a)USART_RX_STA=0;
else USART_RX_STA|=0x8000;
}
else
{
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;
}
}
}
}
#if SYSTEM_SUPPORT_OS
OSIntExit();
#endif
}
#endif
可能表达的不是很清楚 说白了就是这段程序不足以支持这个接收协议的定义(因为初始定义只是16位的0),所以让我心里直接认为这是一个协议很难接收 麻烦大神指导一下!!谢谢了!!
|
|