登录/注册

stm32hal超声波雷达

更多

在 STM32 上使用 HAL 库驱动超声波测距模块(如常见的 HC-SR04)实现类似“雷达”的距离检测功能,主要涉及精确测量超声波发出到接收回波的时间差。以下是关键步骤和代码示例(使用 STM32CubeIDE/HAL 库):


核心原理

  1. 触发信号 (Trig): 发送一个 >10µs 的高电平脉冲启动模块。
  2. 回波信号 (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);
}

关键配置

  1. 定时器 (TIM2)

    • 时钟源:内部时钟
    • 预分频:(SystemCoreClock / 1e6) - 1计数频率1MHz (1计数=1µs)
    • 计数模式:向上计数,周期65535
  2. Echo引脚 (PA1)

    • 模式:GPIO输入,开启双边沿中断
    • 在CubeMX中配置:
      • 选择EXTI线 → 触发方式: Rising/Falling

高级优化


常见问题解决

  1. 测量结果波动大

    • ✅ 添加采样滤波
    • ✅ 确保供电稳定(模块VCC接5V,避免3.3V供电不足)
    • ✅ 检查声波反射面(避免软质吸声材料)
  2. 超时无回波

    • ✅ 增加中断超时保护(若500ms无下降沿,强制结束)
    • ✅ 确保Trig信号宽度>10µs(用示波器确认)

完整代码框架已覆盖基础功能。根据具体场景选择优化策略(如需要扫描雷达效果,需搭配舵机或步进电机旋转模块)。

超声波雷达和360影像有什么用

超声波雷达和360影像是两种不同的技术,它们在不同的领域有着广泛的应用。以下是对这两种技术的介绍。 一、超声波

2024-08-16 10:22:52

第七章-V1.5 STM32超声波测距STM32F103C8t6超声波避障小车 超声波避障模块 STM32超声波测距

5STM32超声波测距STM32F103C8t6超声波避障小车

2024-08-15 16:25:10

超声波(Ultrasound,又称超声波雷达)定位

超声波(Ultrasound,又称超声波雷达)定位,即使用发射探头发出频率大于20KHz的

2022-03-11 19:29:37

科力超声波清洗机132KHz超声波换能器图纸

科力超声波清洗机132KHz超声波换能器图纸

资料下载 Kelisonic 2023-07-08 03:05:46

STM32HAL库微秒延时(μs)

STM32HAL库微秒(μs)延时

资料下载 李志静 2022-01-18 10:39:24

STM32HAL库学习==》1.工具

STM32HAL库学习==》1.工具

资料下载 而无返还 2021-12-07 12:36:10

HAL实现多个超声波测距(输入捕获实现)

超声波工作原理可参考博客:(2条消息) HAL库实现定时器实现多个超声波(HC-SR04)测距_XiaoCaiDaYong的博客-CSDN博客环

资料下载 李杰 2021-11-23 18:07:06

超声波倒车雷达的源代码程序免费下载

本文档的主要内容详细介绍的是超声波倒车雷达的源代码程序免费下载。

资料下载 杨海清 2019-08-07 17:33:00

HAL库实现定时器实现多个超声波(HC-SR04)测距

超声波工作原理可参考博客:(2条消息) HAL库实现定时器实现多个超声波(HC-SR04)测距-CSDN博客环境:1.

2021-12-06 07:06:51

毫米波/激光/超声波雷达的区别是什么?

毫米波/激光/超声波雷达的区别是什么?

2021-09-29 06:23:42

基于STM32超声波测距设计

基于STM32F103的超声波测距(定时器)使用的硬件设备:stm32f103c8t6,0.96寸OLED,

2021-07-22 08:53:51

怎么实现基于超声波检测的倒车雷达设计?

本文所设计的倒车雷达系统是保障汽车倒车安全的辅助系统,通过超声波探头发出超声波,使用高速单片机计算距离,并加入了温度补偿电路,提高了距离计算的精

2021-05-14 06:04:41

超声波液位计和雷达液位计的区别

超声波液位计和雷达液位计都是液位测量仪表。顾名思义,一种采用超声波,一种采用电磁波,除此之外,

2020-06-24 14:59:31

elmos E524.09超声波雷达配置问题

最近在做超声波雷达驱动这部分工作,发现用MEAS_STEUP命令配置雷达不成功。不知道大家在实际操作中有没有遇到过这种问题,或许是我哪里的操作有

2020-05-22 13:32:45

毫米波雷达VS激光雷达VS超声波雷达

近年来,随着雷达技术的发展和普及,科技大片中的无人驾驶离我们越来越近。全球很多中高档汽车已经开始配备汽车雷达。目前用于汽车上的雷达分为

2019-09-19 09:05:02
7天热门专题 换一换
相关标签