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 }
23 test=0;
24 fq=1000000/test;
//脉冲的频率
25 }22 else 26 }