串口接受中断,在中断服务函数中写的控制等闪烁次数的代码。闪烁次数由串口接受的数据决定。为何运行时闪烁次数总是不对

2019-10-14 23:11发布

void USART1_IRQHandler(void)                        //′®¿ú1ÖD¶Ï·tÎñ3ìDò
        {
        u16 Res,i;
        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //½óêÕÖD¶Ï(½óêÕμ½μÄêy¾Y±ØDëêÇ0x0d 0x0a½áÎ2)
                {
                Res =USART_ReceiveData(USART1);        //¶á衽óêÕμ½μÄêy¾Y                 
    }
  for(i=0;i<Res;i++)
        {
                USART_SendData(USART1,Res);
                LED0=!LED0;
                delay_ms(300);
                LED0=!LED0;
                delay_ms(300);
        }               
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
11条回答
李广321
2019-10-15 18:38
1850334772qq 发表于 2017-2-25 15:47
你的清除中断标志位那里去了

void USART1_IRQHandler(void)                        //′&#174;&#191;ú1&#214;D&#182;&#207;·t&#206;&#241;3ìDò
        {
          if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //&#189;óê&#213;&#214;D&#182;&#207;(&#189;óê&#213;μ&#189;μ&#196;êy&#190;Y±&#216;D&#235;ê&#199;0x0d 0x0a&#189;á&#206;2)
                {
                   Res=USART_ReceiveData(USART1);        //&#182;áè&#161;&#189;óê&#213;μ&#189;μ&#196;êy&#190;Y       
       USART_SendData(USART1,Res);               
    }
                USART_ClearFlag(USART1,USART_FLAG_RXNE);
}

用串口调试助手,传入什么值返回什么值,但是这个数值用的时候就是不对

一周热门 更多>