关于输入捕获的问题,总是有通道自动触发中断

2019-07-20 23:34发布

这是我的主程序,程序目的是捕获TIM5 CH1和CH2两个高电平的时间差 改的是开发板例程,TIM5_NUM是捕获次数,当他为2时进行显示,TIM5_FLAG是初次捕获标志,我在中断程序中设置了每个通道中断后就 失能这个通道,在主程序中显示后才重新使能,为了消抖我还在显示程序中加了延时。但奇怪的是每次复位后LED0都会亮也就是说TIM5_NUM 总是自动等于1;求教大神怎么解决
 while(1)
 {
  
 if(TIM5_NUM==2)
  {
   TIM5_FLAG=0; 
   TIM5_NUM=0; 
   LED1=0;                               
   LCD_ShowxNum(320,200,TIM5CH1_CAPTURE_VAL,10,24,0);
   LCD_ShowxNum(320,300,TIM5CH2_CAPTURE_VAL,10,24,0);    delay_ms(1000);
   TIM_ITConfig(TIM5,TIM_IT_CC1|TIM_IT_CC2,ENABLE);
   LED1=1;
   
  }
 if(TIM5_NUM==1)
 {
 LED0=0;
 }
 else
 {
 LED0=1;
 }
  }



这是中断函数
if (TIM_GetITStatus(TIM5, TIM_IT_CC1) != RESET)
  { 
    if(TIM5_FLAG==0)
    {
    TIM5CH1_CAPTURE_VAL=0;
     TIM_SetCounter(TIM5,0);
    TIM5_FLAG=1; 
   
    }
    else
    {
    
    TIM5CH1_CAPTURE_VAL=TIM_GetCounter(TIM5); 
    }
    TIM5_NUM++; 
    
    
    
    TIM_ITConfig(TIM5,TIM_IT_CC1,DISABLE);
        
  } 
  
  if (TIM_GetITStatus(TIM5, TIM_IT_CC2) != RESET)
  { 
    if(TIM5_FLAG==0)
    {
    TIM5CH2_CAPTURE_VAL=0;
     TIM_SetCounter(TIM5,0);
    TIM5_FLAG=1;  
    
    }else
    {
        
    TIM5CH2_CAPTURE_VAL=TIM_GetCounter(TIM5);
    
    }
    TIM5_NUM++;
    TIM_ITConfig(TIM5,TIM_IT_CC2,DISABLE);
  } 
TIM_ClearITPendingBit(TIM5, TIM_IT_CC1|TIM_IT_CC2|TIM_IT_CC3|TIM_IT_CC4);
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。