串口进中断但是不判断?

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]

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
heiheihaha
1楼-- · 2019-08-13 23:20
1.png 我用串口助手发送16进制指令FF000200FF,然后单片机用串口中断接受这段指令,现在我用led灯来调试是否接受到指令,中断可以进去,并执行到判断标志位哪里,但是往下就不执行了,第一个FF不判断了



lvkanger
2楼-- · 2019-08-14 03:22
USART_ClearFlag(USART1,USART_FLAG_RXNE);这句不需要
heiheihaha
3楼-- · 2019-08-14 07:29
是这个问题导致的吗,我回去试试
wxjhby
4楼-- · 2019-08-14 09:13
那你看看到底收到的是什么?
heiheihaha
5楼-- · 2019-08-14 13:55
 精彩回答 2  元偷偷看……
heiheihaha
6楼-- · 2019-08-14 16:45
wxjhby 发表于 2017-10-10 15:51
那你看看到底收到的是什么?

用两个函数就可以吗
Res =USART_ReceiveData(USART1);
               
USART_SendData(USART1,Res);不管串口助手发送啥,单片机就发送啥吗,
               

一周热门 更多>