跪谢!!!!一个简单的串口解析,结果露掉一位,大家帮忙一看

2019-07-21 00:04发布

u8 USARTFlag = 0;

void USART3_IRQHandler()
{

        static u8 Count3 = 0; //计数
        static u8 Rec3 = 0;     //标记
       
        if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)// 如果有中断
        {
                 USART_ClearITPendingBit(USART3,USART_IT_RXNE);
                 Receive3=USART_ReceiveData(USART3);      //存储数据

                 
                        switch(Rec3)        //rec开始是0,先进入case0
                        {
                                case 0:
                                        if(Receive3 == 0xff)  //是不是包头
                                                Rec3 = 1;   //是,置1
                                        else           
                                                Rec3 = 0; //不是,清零
                                        break;
                                case 1:
                                        Rx3Buffer[Count3] = Receive3;   //存到数组中
                                  Count3++;
                                                if(Count3 > 8)       //一串结束了。
                                        {
                                                Rec3 = 0;    //标记位清零
                                                        Flag3 = 1; //标志位为1
                                                Count3 = 0;//计数清零
                                        }
                                        break;
                               
                                }




不知道哪里错了,把接收的数组输出,正好数组第一个元素不是包头了,包头跑到最后一个去了
FF 04 00 00  00 01 D8 B4   变成了
04  00 00 00 01 D8 B4 FF
小弟跪谢了

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。