中级会员
 
- 积分
- 495
- 金钱
- 495
- 注册时间
- 2016-12-31
- 在线时间
- 63 小时
|

楼主 |
发表于 2017-3-25 22:32:18
|
显示全部楼层
你好,我按照你的建议把它改成这样,然后老出问题,不知道哪里错了
float EXTI15_10_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line10) != RESET)
{
TIM_SetCounter(TIM2,0);
TIM_Cmd(TIM2, ENABLE);
while(GPIO_ReadInputDataBit(ECHO_PORT,ECHO_PIN));
TIM_Cmd(TIM2, DISABLE);
Ultrasonic_Distance=TIM_GetCounter(TIM2)*9.8*34/200.0;
EXTI_ClearITPendingBit(EXTI_Line10);
check_data_state=1;
}
return Ultrasonic_Distance;
}
while(1)
{
Ultrasonic_StartMeasure();
POINT_COLOR=BLUE;
if(check_data_state)
{
if(Ultrasonic_Distance>0)
{
printf("distance:%f cm",Ultrasonic_Distance);
LCD_ShowString(30,150,200,16,16,"Ultrasonic TEST is OK");
distance=Ultrasonic_Distance;
LCD_ShowxNum(157,170,distance,3,16,0x80);//显示距离值 显示整数部分
Ultrasonic_Distance-=distance;
Ultrasonic_Distance*=100; // 扩大10倍,显示小数 部分
LCD_ShowxNum(184,170,Ultrasonic_Distance,2,16,0x80);
}
else LCD_ShowString(30,150,200,16,16,"Ultrasonic TEST is error");
check_data_state=0;
} |
|