串口中断接收问题

2019-07-20 22:15发布

void USART2_IRQHandler(void)              
{
   if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)  
         {
           Re_buf[counter]=USART_ReceiveData(USART2);
           USART_ClearFlag(USART2, USART_FLAG_TC);       
          if(counter==0&& Re_buf[0]!=0x55) return;
                counter++;       
                if(counter==11)
                {       
                counter=0;
                sign=1;
                }
         }
  }
主函数里边对sign的值进行判断,判断后将其置0,但是中断函数只能执行2次,就再也不对sign置1了。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
秋天的枫叶
1楼-- · 2019-07-21 01:12
 精彩回答 2  元偷偷看……
秋天的枫叶
2楼-- · 2019-07-21 01:47
求助万能的贴吧啊,实在找不出问题出在哪了。
秋天的枫叶
3楼-- · 2019-07-21 07:45
int main(void)
{
          D1=1;
          D2=1;
          D3=1;
          D4=1;
        p=1;
        d=1;
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//éèÖÃÏμí3ÖD¶ÏóÅÏ輶·Ö×é2
        uart_init(9600);//′®¿ú3õê¼»ˉ2¨ìØÂêÎa9600
        uart2_init(9600);//óÃóú½óêÕà′×ÔMPU6050μÄêy¾Y
        delay_init(168);//Ñóê±3õê¼»ˉ
        LED_Init();       
        GPIO_4_init();
        TIM3_PWM_Init(500-1,84-1);        //84M/84=1MhzμļÆêyÆμÂê,ÖØ×°ÔØÖμ500£¬Ëùò&#212WMÆμÂêÎa 1M/500=2Khz.
        delay_ms(200);
        while(1)
        {
        LED0 =0;//0μÆáá
         if(sign)
         {
           memcpy(Temp,Re_buf,11);// memcpyÄú′濽±′oˉêyÔústring.hÖD,×÷óÃêÇ′óRe_bufÖD¸′ÖÆ11¸öêyμ½tempÖD
                 sign=0;
                 if(Re_buf[0]==0x55) //¼ì2éÖ¡í·
           {  
                   switch(Re_buf[1])
                         {
                                 case 0x51: //±êê¶Õa¸ö°üêǼóËù¶è°ü
           a[0] = ((short)(Temp[3]<<8 | Temp[2]))/32768.0*16;      //X&#214;á&#188;ó&#203;ù&#182;èshortè&#161;&#214;μ·&#182;&#206;§-32768&#161;¤32767
           a[1] = ((short)(Temp[5]<<8 | Temp[4]))/32768.0*16;      //Y&#214;á&#188;ó&#203;ù&#182;è
           a[2] = ((short)(Temp[7]<<8 | Temp[6]))/32768.0*16;      //Z&#214;á&#188;ó&#203;ù&#182;è
           T    = ((short)(Temp[9]<<8 | Temp[8]))/340.0+36.25;      //&#206;&#194;&#182;è
           break;
         case 0x52: //±êê&#182;&#213;a&#184;&#246;°üê&#199;&#189;&#199;&#203;ù&#182;è°ü
           w[0] = ((short)(Temp[3]<<8| Temp[2]))/32768.0*2000;      //X&#214;á&#189;&#199;&#203;ù&#182;è
           w[1] = ((short)(Temp[5]<<8| Temp[4]))/32768.0*2000;      //Y&#214;á&#189;&#199;&#203;ù&#182;è
           w[2] = ((short)(Temp[7]<<8| Temp[6]))/32768.0*2000;      //Z&#214;á&#189;&#199;&#203;ù&#182;è
           T    = ((short)(Temp[9]<<8| Temp[8]))/340.0+36.25;      //&#206;&#194;&#182;è
           break;
         case 0x53: //±êê&#182;&#213;a&#184;&#246;°üê&#199;&#189;&#199;&#182;è°ü
           angle[0] = ((short)(Temp[3]<<8| Temp[2]))/32768.0*180;   //X&#214;á1&#246;×a&#189;&#199;£¨x &#214;á£&#169;
           angle[1] = ((short)(Temp[5]<<8| Temp[4]))/32768.0*180;   //Y&#214;á&#184;&#169;&#209;&#246;&#189;&#199;£¨y &#214;á£&#169;
           angle[2] = ((short)(Temp[7]<<8| Temp[6]))/32768.0*180;   //Z&#214;á&#198;&#171;o&#189;&#189;&#199;£¨z &#214;á£&#169;
           T        = ((short)(Temp[9]<<8| Temp[8]))/340.0+36.25;   //&#206;&#194;&#182;è
                                   break;
                                 default: break;
                         }
//                USART_SendData(USART1,angle[0]);   //ó&#195;′&#174;&#191;ú1·¢&#203;íò&#187;&#184;&#246;×&#214;&#189;ú
//          while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);  //μè′y′&#174;&#191;ú1·¢&#203;ííê±&#207;
         
         if( angle[0]>0)//angle[0]:X&#214;á1&#246;×a&#189;&#199;£¨x &#214;á£&#169;, w[0]:X&#214;á&#189;&#199;&#203;ù&#182;è
                 TIM_SetCompare1(TIM3,2);//PA6DT&#184;&#196;±è&#189;&#207;&#214;μ£&#172;DT&#184;&#196;&#213;&#188;&#191;&#213;±è ,&#214;μ2&#187;&#196;ü3&#172;1y&#214;ü&#198;ú£o500
         else
                  TIM_SetCompare2(TIM3,10);
                 }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
         }
这是主函数
openedvadmin
4楼-- · 2019-07-21 13:08
 精彩回答 2  元偷偷看……

一周热门 更多>