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 }
时间: 2024-10-14 11:35:42