串口接收中断发生了很诡异的事情

2019-08-14 17:29发布

我用STM32F103C8T6写串口接收中断,将接收的数据,再通过串口发送出来。但是出了一个很奇怪的问题,不知道具体什么原因,请问有没有大神能给个答复呢?怎么都想不到为什么会这样。我用串口调试助手发送55 04 58 22,点一次发送,串口助手收到单片机回应只有一个55,再点一次发送,收到回应04 58 22,再点一次又是55 就是这样,每次都是分两次才接受得完,不知道这个是什么原因呢。
[mw_shl_code=c,true]        while(1)
        {
                if(ReceiveState==1)
                {
                        ReceiveState=0;
                        for(i=0;i<4;i++)
                        {
                                USART_SendData(USART1,Rec);
                                while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
                        }
                Rx_Counter=0;

                }
        }
void USART1_IRQHandler(void)
{
        u8 Clear=Clear;
        if (USART_GetITStatus(USART1,USART_IT_RXNE))
        {
                USART_ClearITPendingBit(USART1,USART_IT_RXNE);
               
                Rec[Rx_Counter++]=USART_ReceiveData(USART1);
                if(Rx_Counter==4)
                {
                        ReceiveState=1;       
                }
               
        }
}[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。