我想在串口通信协议上面加上开始标志0XAA 0XAA,然后在例程的基础上改的代码,但改完后在串口助手中以十六进制发送板子一直不显示接收到的信息,不知道怎么回事,忘大神帮忙...
[mw_shl_code=c,true]#if EN_USART1_RX //??????????????
void USART1_IRQHandler(void) //?®??1????·??????ò
{
u8 Res;
u16 flag_head=0,flag_join=0;
#ifdef OS_TICKS_PER_SEC //
OSIntEnter();
#endif
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)//????????(??0XAA 0XAA ??????±ê??????0X0D 0X0A???á??±ê??)????
{
Res =USART_ReceiveData(USART1);//(USART1->DR); //????????????????
if(flag_head==1) //自己加的一部分....就是只有当开头为0XAA 0XAA的时候才接收并缓存数据
{
if(Res==0xAA)
flag_join=1;
else
flag_head=0;
}
if(Res==0xAA)
{
flag_head=1;
}
//////////////////////////////////////////////////////////////////////////////////////////////////
if(flag_join==1)
{
if((USART_RX_STA&0x8000)==0)//???????ê??
{
if(USART_RX_STA&0x4000)//????????0x0d(0x0d±ê????????±?±ê??)
{
if(Res!=0x0a)
{
USART_RX_STA=0;//?????í?ó,????????
flag_join=0;
flag_head=0;
}
else
{
USART_RX_STA|=0x8000; //?????ê????
flag_join=0;
flag_head=0;
}
}
else //????????0X0D
{
if(Res==0x0d)USART_RX_STA|=0x4000; //??????0X0D ??STA??14??????
else
{
USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ; //??????????
USART_RX_STA++; //?????????????????¤??
if(USART_RX_STA>(USART_REC_LEN-1))
{
USART_RX_STA=0;//?????????í?ó,????????????
flag_join=0;
flag_head=0;
}
}
}
}
}
}
}
#endif
[/mw_shl_code]
|