if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //????????(????????????±?????0x0d 0x0a?á??)
{
Res =USART_ReceiveData(USART1);//(USART1->DR); //????????????????
if((USART_RX_STA&0x80)==0)//???????ê??
{
if(USART_RX_STA&0x40)//????????0x0d
{
if(Res!=0x0a)USART_RX_STA=0;//?????í?ó,????????
else USART_RX_STA|=0x80; //?????ê????
}
else //????????0X0D
{
if(Res==0x0d)USART_RX_STA|=0x40;
else
{
UartRxBuf.RxBuf[USART_RX_STA&0X3FFF]=Res ;
USART_RX_STA++;
if(USART_RX_STA>63)USART_RX_STA=0;//?????????í?ó,????????????
}
}
}
}
当我把红色部分的63改为21就需要发送14次才能接收到一次。
01 05 12 00 00 00 05 00 00 00 00 00 00 00 0B 01 00 00 00 00 00 00
01 05 12 00 00 00 05 00 00 00 00 00 00 00 0B 01 00 00 00 00 0B 01
01 05 12 00 00 00 05 00 00 00 00 00 00 00 0B 01 00 00 00 00 0B 01
01 05 12 00 00 00 05 00 00 00 00 00 00 00 0B 01 00 00 00 00 0B 01
01 05 12 00 00 00 05 00 00 00 00 00 00 00 0B 01 00 00 00 00 0B 01
当用63时候发送四次收到一次
01 05 12 00 00 00 05 00 00 00 00 00 00 00 0B 01 00 00 00 00 00 00
01 05 12
00 00 00 05 00 00 00 00 00 00 00 0B 01 01 05 12 00 00 00
01 05 12 00 00 00 05 00 00 00 00 00 00 00 0B 01 01 05 12 00 00 00
01 05 12 00 00 00 05 00 00 00 00 00 00 00 0B 01 01 05 12 00 00 00
01 05 12 00 00 00 05 00 00 00 00 00 00 00 0B 01 01 05 12 00 00 00
01 05 12 00 00 00 05 00 00 00 00 00 00 00 0B 01 01 05 12 00 00 00
|