colice666 发表于 2018-4-29 19:35:19

求助用cubemx 调超声波测距(F407)

如题了,按照大佬的程序和配置做了一下,发现高电平信号都没给出来,很难受,不知道怎么继续了。。
void Echo_Wait(void)
{
uint16_ttime=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_tDistance_;
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;
}

colice666 发表于 2018-4-29 19:50:41

:(:(:(:(

五哥1 发表于 2018-4-29 20:24:11

跟踪调试的结果是啥?停止在哪了?我有STM32F407VE的系统板,也有EH04 超声波模块,把你的完整程序发来,共同探讨下。

斜阳__ 发表于 2018-4-29 21:17:09

楼主可以参考一下我的这个工程https://www.stmcu.org.cn/module/forum/thread-611454-1-1.html

colice666 发表于 2018-4-29 22:25:55

五哥1 发表于 2018-4-29 20:24
跟踪调试的结果是啥?停止在哪了?我有STM32F407VE的系统板,也有EH04 超声波模块,把你的完整程序发来,共 ...

我今天晚上一定要搞出来

colice666 发表于 2018-4-29 22:33:55

这个是我改了又改的程序,我已经凌乱了

colice666 发表于 2018-4-29 22:34:21

斜阳__ 发表于 2018-4-29 21:17
楼主可以参考一下我的这个工程https://www.stmcu.org.cn/module/forum/thread-611454-1-1.html

好的呀

colice666 发表于 2018-4-30 00:28:17

if(HAL_TIM_Base_Start(&htim9)!=HAL_OK)
{
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);






做出来了。上面是主程序代码,但是很奇怪,值的确有变,不过根本不稳,这样的没法用,大佬给看看,我这样的能行吗
页: [1]
查看完整版本: 求助用cubemx 调超声波测距(F407)