首页 > 代码库 > STM32 输入捕获的脉冲宽度及频率计算

STM32 输入捕获的脉冲宽度及频率计算

 1 TIM8_Cap_Init(0XFFFF,72-1);    //以1Mhz的频率计数
 2 voidTIM8_CC_IRQHandler(void)
 3 {  
 4     if(TIM_GetITStatus(TIM8,TIM_IT_CC4)!=RESET)   
 5     {       
 6         TIM_ClearITPendingBit(TIM8, TIM_IT_CC4);    //清除中断标志位
 7         if(state==0)                                                 //捕获第一个上升沿          
 8         {               
 9             state=1;          
10             timecount=TIM_GetCapture4(TIM8);          //记录第一次上升沿的CNT值       
11         }       
12         else if(state==1)                                           //捕获第二个上升沿      
13         {                  
14            state=0;          
15            timecount1=TIM_GetCapture4(TIM8);         //记录第二次上升沿的CNT值
16            if(timecount//两次上升沿的差值           
17         }           
18         else if(timecount>timecount1)          
19        {                
20            test=(0xffff-timecount)+timecount1;          //两次上升沿的差值           
21         }           
22        else             
23            test=0;             
24        fq=1000000/test;                                        //脉冲的频率       
25    }
26 }

 

STM32 输入捕获的脉冲宽度及频率计算