stm32使用hc-sr04进行超声波测距并在串口输出

文章详细介绍了如何使用STM32微控制器配合HC-SR04超声波测距模块进行非接触式距离感测。通过配置定时器和中断,实现了对TRIG和ECHO引脚的控制,以测量并过滤距离数据。在GPIO6引脚接收到高电平时,系统会启动或停止测距功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测距精度可高达23mm。模块包括超声波发射器、接收器与控制电路
该模块引出四个接口:

VCC和GND为供电端,VCC接5V,GND必须和单片机共地(很重要,给单片机提供一个低电平参考,否则接下来的通信会错乱而导致读取到的数值无规律)
TRIG和ECHO为通信端,TRIG是触发控制信号输入,ECHO是回响信号输出
时钟配置:
在这里插入图片描述

分配trig引脚和按键控制输入,echo引脚我们通过tim计数器的ch1分配
在这里插入图片描述

设置定时器2并开启中断,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
为了能够进行GPIO中断,我们需要配置PA6引脚
在这里插入图片描述
在这里插入图片描述

超声波时序图
在这里插入图片描述

1.发送大于10us的触发信号。
2.检测超声波发出信号时产生的高电平。
3.检测超声波接收到信号时产生的低电平
显示超声波测出的距离,我这里就直接使用串口助手显示了
为了能够用输入电平控制测距的开启或者关闭,我们这里设置当输入为高电平时中断测距,再次输入高电平时重新测距。
main函数代码

int main(void)
{
   
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  MX_TIM2_Init();
  /* USER CODE BEGIN 2 */
	int a1=0;
	int p1=0;
	int time=0;
	int con=1;
	int resu=0;
	int good_en=0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值