接收15位帧数据
void USARTx_IRQHandler(void) //串口1中断服务程序-解析串口接收帧数据
{
if(USART_GetIntStatus(USARTx, USART_INT_RXDNE) != RESET)
{
// USART_ClrFlag(USARTx,USART_INT_RXDNE);
ucCh = USART_ReceiveData(USARTx);
processing_data();
USART_ClrFlag(USARTx,USART_FLAG_RXDNE);
}
}
void processing_data(void)
{
switch(rec_flag)
{
case 0://帧头
UART6_RX_BUF[0]= ucCh;
if(UART6_RX_BUF[0] == 0x7F)
{
rec_flag=1;
}
else
{
rec_flag=0;
}
break;
case 1://长度
UART6_RX_BUF[1]= ucCh;
rec_flag=2;
UART6_RX_STA=2;
break;
case 2:
UART6_RX_BUF[UART6_RX_STA]= ucCh;
UART6_RX_STA++;
if(UART6_RX_STA > UART6_RX_BUF[1])
{
rec_flag=3;
}
else
{
rec_flag=2;
}
break;
case 3://帧尾
UART6_RX_BUF[UART6_RX_STA]= ucCh;
if(UART6_RX_BUF[UART6_RX_STA]== 0x7E)
{
UART6_RX_STA=0;
rec_flag=0;
UART6ReceFullFlag=1;
}
else
{
rec_flag=0;
}
break;
default:
break;
}
}