野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 304|回复: 1

超声波HCSR04卡死

[复制链接]
发表于 2023-10-30 16:53:50 | 显示全部楼层 |阅读模式
初学32,最近尝试做一个小车
用到超声波模块HCSR04,
单模块使用没有问题,整合整个小车就会出现卡死,
DEBUG中显示在第一个while陷入循环
求大佬告知改进方法,感激不尽
  1. int16_t sonar_mm(void)                                                        
  2. {
  3.      uint32_t Distance,Distance_mm = 0;
  4.              GPIO_SetBits (GPIOA,Trig);                                       
  5.              Delay_us(15);                                                               
  6.              GPIO_ResetBits (GPIOA,Trig);                                
  7.              while (GPIO_ReadInputDataBit(GPIOA,Echo)==0);//debug显示此处卡死
  8.              time=0;                                                                                
  9.              while (GPIO_ReadInputDataBit(GPIOA,Echo)==1);
  10.              time_end=time;                                                               

  11.              Distance=(time_end*346)/2;                                       
  12.              Distance_mm=Distance/100;                                       
  13.         
  14.              return Distance_mm;                                                        
  15. }
复制代码


  1. void TIM2_IRQHandler(void)                                       
  2. {                                                                                                
  3.      if (TIM_GetITStatus(TIM2, TIM_IT_Update) == SET)
  4.      {
  5.          time++;
  6.          TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
  7.      }
  8. }
复制代码




回复

使用道具 举报

发表于 2023-11-1 15:13:38 | 显示全部楼层
用万用表或示波器看下 要接给输入的模块信号脚没有能变高变低
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-4-28 21:58 , Processed in 0.115165 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表