初级会员

- 积分
- 71
- 金钱
- 71
- 注册时间
- 2012-10-28
- 在线时间
- 0 小时
|
思路是这样的:
首先:外部中断高电平触发,同时读取定时器的值(temp)
然后:等待低电平的到来,读取定时器的值(temp1)
最后:高电平的时间为 temp-temp1;
显示数据。
结果是:LED灯一直在闪,但是出来的数据是0。请大家帮帮忙,看看哪里出错了
//外部中断0服务程序
void EXTI0_IRQHandler(void)
{ u16 temp,temp1,distance ;
temp=TIM_GetCounter(TIM4); //同时读取定时器的值(temp)
while((GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==0)&&(TIM4->CNT<TIM4->ARR-10));//等待低电平的到来,
temp1=TIM_GetCounter(TIM4);//读取定时器的值(temp1)
distance=temp1-temp;
LCD_Clear();
if(distance<=200)
{
LCD_Show_Distance(44,4,distance);
}
delay_ms(50);//消抖
LED1=!LED1;//
EXTI_ClearITPendingBit(EXTI_Line0); //清除LINE0上的中断标志位
}
|
|