你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
colice666 提问时间:2018-4-29 19:35 /
如题了,按照大佬的程序和配置做了一下,发现高电平信号都没给出来,很难受,不知道怎么继续了。。
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;
}

收藏 评论7 发布时间:2018-4-29 19:35

举报

7个回答
colice666 回答时间:2018-4-29 19:50:41
五哥1 回答时间:2018-4-29 20:24:11
跟踪调试的结果是啥?停止在哪了?我有STM32F407VE的系统板,也有EH04 超声波模块,把你的完整程序发来,共同探讨下。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

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

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

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

我今天晚上一定要搞出来
colice666 回答时间:2018-4-29 22:33:55
这个是我改了又改的程序,我已经凌乱了

超声测试.rar

下载

5.85 KB, 下载次数: 4, 下载积分: ST金币 -1

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);






做出来了。上面是主程序代码,但是很奇怪,值的确有变,不过根本不稳,这样的没法用,大佬给看看,我这样的能行吗

F407 hwtest.rar

下载

5.42 KB, 下载次数: 7, 下载积分: ST金币 -1

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版