stm32hal超声波雷达
在 STM32 上使用 HAL 库驱动超声波测距模块(如常见的 HC-SR04)实现类似“雷达”的距离检测功能,主要涉及精确测量超声波发出到接收回波的时间差。以下是关键步骤和代码示例(使用 STM32CubeIDE/HAL 库):
核心原理
- 触发信号 (Trig): 发送一个 >10µs 的高电平脉冲启动模块。
- 回波信号 (Echo): 模块检测到回波后输出高电平,其持续时间正比于距离。
距离 = (高电平时间 × 声速) / 2
硬件连接
| HC-SR04 引脚 | STM32 引脚 | 功能 |
|---|---|---|
| VCC | 5V | 电源 |
| Trig | PA0 (输出) | 触发信号 |
| Echo | PA1 (输入) | 回波信号 |
| GND | GND | 地 |
代码实现 (C语言/HAL库)
// 1. 定义变量
uint32_t start_time = 0, end_time = 0;
float distance_cm = 0.0f;
extern TIM_HandleTypeDef htim2; // 假设使用TIM2测量时间
// 2. 触发函数 (发送10us高电平)
void Trigger_Ultrasonic(void) {
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET); // Trig=1
delay_us(12); // 延时12us (>10us)
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET); // Trig=0
}
// 3. Echo引脚中断回调 (捕获上升沿/下降沿)
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
if (GPIO_Pin == GPIO_PIN_1) { // PA1(Echo)中断
if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1) == GPIO_PIN_SET) { // 上升沿:回波开始
start_time = TIM2->CNT; // 记录定时器计数
} else { // 下降沿:回波结束
end_time = TIM2->CNT;
uint32_t pulse_width = (end_time - start_time) & 0xFFFF; // 计算时间差 (防溢出)
distance_cm = pulse_width * 0.017; // 时间(us)转距离(cm: 34000cm/s / 2)
}
}
}
// 4. 主循环
while (1) {
Trigger_Ultrasonic(); // 发送触发信号
HAL_Delay(50); // 等待测量完成(模块需60ms间隔)
// 此时distance_cm已更新
printf("Distance: %.1f cm\n", distance_cm);
}
关键配置
-
定时器 (TIM2)
- 时钟源:内部时钟
- 预分频:
(SystemCoreClock / 1e6) - 1→ 计数频率1MHz (1计数=1µs) - 计数模式:向上计数,周期65535
-
Echo引脚 (PA1)
- 模式:GPIO输入,开启双边沿中断
- 在CubeMX中配置:
- 选择EXTI线 → 触发方式: Rising/Falling
高级优化
- 温度补偿:声速受温度影响 (
v = 331.4 + 0.6 * T°Cm/s),添加温度传感器校正计算。 - 多次采样滤波:连续测量3-5次取中值,减少噪声干扰。
- 超时处理:定时器溢出时强制结束测量,防阻塞。
- 非阻塞式:用状态机+中断替代
HAL_Delay,提高系统响应。
常见问题解决
-
测量结果波动大
- ✅ 添加采样滤波
- ✅ 确保供电稳定(模块VCC接5V,避免3.3V供电不足)
- ✅ 检查声波反射面(避免软质吸声材料)
-
超时无回波
- ✅ 增加中断超时保护(若500ms无下降沿,强制结束)
- ✅ 确保Trig信号宽度>10µs(用示波器确认)
完整代码框架已覆盖基础功能。根据具体场景选择优化策略(如需要扫描雷达效果,需搭配舵机或步进电机旋转模块)。
第七章-V1.5 STM32超声波测距STM32F103C8t6超声波避障小车 超声波避障模块 STM32超声波测距
5STM32超声波测距STM32F103C8t6超声波避障小车
2024-08-15 16:25:10
HAL实现多个超声波测距(输入捕获实现)
超声波工作原理可参考博客:(2条消息) HAL库实现定时器实现多个超声波(HC-SR04)测距_XiaoCaiDaYong的博客-CSDN博客环
资料下载
李杰
2021-11-23 18:07:06
HAL库实现定时器实现多个超声波(HC-SR04)测距
超声波工作原理可参考博客:(2条消息) HAL库实现定时器实现多个超声波(HC-SR04)测距-CSDN博客环境:1.
怎么实现基于超声波检测的倒车雷达设计?
本文所设计的倒车雷达系统是保障汽车倒车安全的辅助系统,通过超声波探头发出超声波,使用高速单片机计算距离,并加入了温度补偿电路,提高了距离计算的精
elmos E524.09超声波雷达配置问题
最近在做超声波雷达驱动这部分工作,发现用MEAS_STEUP命令配置雷达不成功。不知道大家在实际操作中有没有遇到过这种问题,或许是我哪里的操作有
毫米波雷达VS激光雷达VS超声波雷达
近年来,随着雷达技术的发展和普及,科技大片中的无人驾驶离我们越来越近。全球很多中高档汽车已经开始配备汽车雷达。目前用于汽车上的雷达分为
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机