串口进中断但是不判断?

2019-08-13 19:12发布

u8 buffer[3]; //¶¨òå′®¿ú»o3å½óêÕêy×é
u8 rec_flag=0; //¶¨òå′®¿ú½óêÕ±êÖ¾
void USART1_IRQHandler(void)                        //′®¿ú1ÖD¶Ï·tÎñ3ìDò
        {
        u8 Res;
                static u8 i;
       
       
//  if(USART_GetFlagStatus(USART1, USART_FLAG_RXNE)==1)
                if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
  {
    GPIO_ResetBits(GPIOC, GPIO_Pin_0);
//                Res =USART_ReceiveData(USART1);
               
                USART_ClearFlag(USART1,USART_FLAG_RXNE);
//                USART_SendData(USART1,Res);
               
    if(rec_flag==0)
    {
//                        USART_SendData(USART1,rec_flag);
//                        GPIO_ResetBits(GPIOC, GPIO_Pin_1);
      if(USART_ReceiveData(USART1)==0xff)
      {
                                GPIO_ResetBits(GPIOC, GPIO_Pin_1);
        rec_flag=1;       
//                                USART_SendData(USART1,rec_flag);
        i=0;

      }                       
    }
    else
    {
      if(USART_ReceiveData(USART1)==0xff)
      {
        rec_flag=0;       
//                                USART_SendData(USART1,rec_flag);
                               
        if(i==3)
        {
//          Communication_Decode();               
                                        if(buffer[0]==0x00)//êÖ¶ˉ¿ØÖÆ
         {
//        GPIO_SetBits(GPIOC,GPIO_Pin_0);
        
         switch(buffer[1])
           {
            case 0x01:GPIO_ResetBits(GPIOC, GPIO_Pin_1);break;//Ç°½ø

            }
         }
        }
        i=0;
      }
      else
      {
        buffer=USART_ReceiveData(USART1);
        i++;
      }
    }               
  }
  else
  {
    USART_ClearFlag(USART1,USART_FLAG_LBD);
  }       
[/mw_shl_code]

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