我编写了一个tm5定时器输入捕获,中断是进去了,可是输出不了,

2019-07-21 01:05发布

请问一下,我编写了一个tm5定时器输入捕获,中断是进去了,可是输出不了,单步调试的时候赋值不对     Time = IC3ReadValue2 - IC3ReadValue1; IC3ReadValue1 = TIM_GetCapture1(TIM5);简单的赋值左右数值都不一样,右边经常等于0.请问是什么原因呢代码如下,printf输出f=0
void TIM5_IRQHandler (void) 
{CaptureNumber =0;
   if(TIM_GetITStatus(TIM5, TIM_IT_CC1) == SET)
  {
     /* Clear TIM3 Capture compare interrupt pending bit */
     TIM_ClearITPendingBit(TIM5, TIM_IT_CC1);
     if(CaptureNumber == 0)
     {
       /* Get the Input Capture value */
       IC3ReadValue1 = TIM_GetCapture1(TIM5);
       CaptureNumber = 1;
     }
     else if(CaptureNumber == 1)
      //处理第二次捕获
       {
         if(TIM_GetFlagStatus(TIM5,TIM_FLAG_Update) != SET)//两次捕获间没有发生溢出的处理
         {
         IC3=3;
           IC3ReadValue2= TIM_GetCapture1(TIM5);
           Time = IC3ReadValue2 - IC3ReadValue1;
         }
         else
         {
           TIM_ClearFlag(TIM5,TIM_FLAG_Update);   //产生了更新事件
           Time = 0xFFFFFFFF - IC3ReadValue1 + TIM_GetCapture1(TIM5)+1;  //如果有更新事件产生时候的计算方式
         }
         CaptureNumber = 0;
         if(Time!=0)
         {
           freq= 500000/Time;
        //计算频率
         }
         freq = freq;  //避免变量freq被编译器优化掉 
      
 }
       }   printf(" f = %4.5fV ", freq);
//           TIM_Cmd(TIM5,DISABLE ); 
    }
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。