在进行脉冲技术计数实验时,选用外部中断计数法:
void EXIT_Config(void)
{
EXTI_InitStructure.EXTI_Line = EXTI_Line15; //线路15
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //触发模式为中断
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; //上升沿触发
EXTI_InitStructure.EXTI_LineCmd = ENABLE; //开外部中断
EXTI_Init(&EXTI_InitStructure);
}
void EXTI15_10_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line15) != RESET) //发动机转速
{
EXTI_ClearITPendingBit(EXTI_Line15);
Speed_NumberOfPulse++; //脉冲个数+1
}
}
累加五秒内的计数,然后Speed_NumberOfPulse*12,作为每分钟的个数进行输出;实验结果如下,
1Hz 60
2Hz 120
5Hz 300
10Hz 600
20Hz 12000
50Hz 30000
100Hz 60000
200Hz 11980
500Hz 29950
1kHz 59890
2kHz 54230
10kHz 90000
50kHz 44980/44970
从20HZ开始出现异常,对原因分辨不出来啊,,,菜鸟一枚,希望各位高手不吝赐教。 |