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

求助用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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版