如题了,按照大佬的程序和配置做了一下,发现高电平信号都没给出来,很难受,不知道怎么继续了。。 void Echo_Wait(void) { uint16_t time=500; while(time--); } void For_Echo(void) { htim9.Instance ->CNT =0; HAL_GPIO_WritePin (GPIOE,GPIO_PIN_5,GPIO_PIN_SET); Echo_Wait(); HAL_Delay(1); HAL_GPIO_WritePin (GPIOE,GPIO_PIN_5,GPIO_PIN_RESET); Echo_State =Trig ; } uint16_t Get_Distance(uint16_t Test_Value) { uint16_t Distance_; Distance_ =17*Test_Value/100; return Distance_; } void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) { if(htim->Instance == htim9.Instance) { if(Echo_State==Trig) { Echo_Last =(uint16_t )HAL_TIM_ReadCapturedValue(&htim9,TIM_CHANNEL_2 ); Echo_State =Waiting; } else if(Echo_State ==Waiting ) { uint16_t temp =(uint16_t)HAL_TIM_ReadCapturedValue(&htim9,TIM_CHANNEL_2); if(temp>Echo_Last ) Echo_Last =temp-Echo_Last ; else Echo_Last =60000-temp+Echo_Last ; Echo_State =Finished; } else; } else; } |
评分
查看全部评分
评分
查看全部评分
我今天晚上一定要搞出来
è¶ å£°æµè¯.rar
2018-4-29 22:33 上传
点击文件名下载附件
下载积分: ST金币 -15.85 KB, 下载次数: 4, 下载积分: ST金币 -1
好的呀
{
printf("Error!\r\n");
}
HAL_GPIO_WritePin(Trig_GPIO_Port,Trig_Pin,GPIO_PIN_SET);
HAL_Delay(10);//20us+¸ßµçƽ´¥·¢ÐźÅ
HAL_GPIO_WritePin(Trig_GPIO_Port,Trig_Pin,GPIO_PIN_RESET);
while(!HAL_GPIO_ReadPin(Echo_GPIO_Port, Echo_Pin));//µÈ´ý»ØÓ¦Ïß±ä¸ß
v1=htim9.Instance->CNT;
while(HAL_GPIO_ReadPin(Echo_GPIO_Port, Echo_Pin));//µÈ´ý»ØÓ¦Ïß±äµÍ
v2=htim9.Instance->CNT;
htim9.Instance->CNT=0;//Çå0¼ÆÊýÆ÷
if(v1>v2)
distance=(v1-v2)*170/1000;
if(v2>v1)
distance=(v2-v1)*170/1000;
printf("distance=%d \r\n",distance);
HAL_Delay(200);
做出来了。上面是主程序代码,但是很奇怪,值的确有变,不过根本不稳,这样的没法用,大佬给看看,我这样的能行吗
F407 hwtest.rar
2018-4-30 00:28 上传
点击文件名下载附件
下载积分: ST金币 -15.42 KB, 下载次数: 7, 下载积分: ST金币 -1