本帖最后由 potato520 于 2016-7-26 21:07 编辑
void TIM3_IRQHandler(void) {
if(TIM_GetITStatus(TIM3,TIM_IT_CC1)!=RESET)//TIM3CH2 {TIM_ClearITPendingBit(TIM3,TIM_IT_CC1);//清除中断标志 if(capture1_loop==0) {Ic1readvalue1=TIM_GetCapture1(TIM3);//得到第一次计数值 capture1_loop=1;} else{ if(capture1_loop==1) {Ic1readvalue2=TIM_GetCapture1(TIM3);//第二次计数值 if(Ic1readvalue2>Ic1readvalue1) {Capture1=(Ic1readvalue2-Ic1readvalue1);} else{Capture1=((0XFFFF-Ic1readvalue1)+Ic1readvalue2);} ch1freq=1000000/Capture1; capture1_loop=0; } usRegInputBuf[17]=ch1freq; } }
//不知道为何测得的频率一直都不稳定,误差也很大,完全不是我希望的情况 //我是用PWM当脉冲源的 //求大神提供意见,或者分享一下类似的代码。我主要的测量范围在100khz到300khz。 |