STM32CubeMX实战:用定时器3实现HC-SR04超声波测距(附完整代码)
在嵌入式开发中,精确测量距离是一个常见需求,而超声波测距因其非接触、成本低和精度适中等特点,成为许多项目的首选方案。本文将详细介绍如何利用STM32CubeMX图形化配置工具和HAL库,通过定时器3的输入捕获功能实现HC-SR04超声波模块的高精度测距。
1. 硬件准备与原理分析
1.1 硬件组成
实现超声波测距需要以下硬件组件:
- 主控芯片:STM32F407ZET6(本文示例,其他STM32系列类似)
- 超声波模块:HC-SR04
- 调试工具:ST-Link调试器
- 其他:杜邦线、电源等
HC-SR04模块有四个引脚:
- VCC:5V电源输入
- GND:地线
- Trig:触发信号输入(需至少10μs高电平)
- Echo:回响信号输出(高电平持续时间与距离成正比)
1.2 测距原理
超声波测距的基本原理是测量声波从发射到反射回来的时间差(Time of Flight, ToF)。具体步骤如下:
- 触发阶段:向Trig引脚发送至少10μs的高电平脉冲
- 发射阶段:模块自动发射8个40kHz的超声波脉冲
- 接收阶段:模块检测回波并通过Echo引脚输出高电平
- 计算距离:高电平持续时间t(μs)与距离d(cm)的关系为:d = t × 0.017
注意:0.017这个系数来源于声速(340m/s)和单位换算。实际应用中可能需要根据环境温度进行校准。
2. CubeMX工程配置
2.1 定时器3输入捕获配置
定时器输入捕获是测量脉冲宽度的关键功能。以下是具体配置步骤:
-
时钟配置:确保系统时钟正确,TIM3挂载在APB1总线上
-
定时器基础配置:
- Prescaler(预分频器):71(72MHz时钟分频为1MHz,每个计数周期1μs)
- Counter Mode(计数模式):Up(向上计数)
- Counter Period(自动重装载值):65535(16位最大值)
- Clock Division(时钟分频):No division
- Auto-reload preload(自动重载预装载):Disable
-
输入捕获通道配置:
- Channel1:Input Capture direct mode
- Polarity:Rising Edge(初始设置为上升沿捕获)
- IC Selection:Direct
- IC Prescaler:No

9711

被折叠的 条评论
为什么被折叠?



