实验三---红外超声波雷达测距

实验三—红外超声波雷达测距

实验内容与要求:

一. 采用stm32F103和HC-SR04超声波模块, 使用标准库或HAL库+ 定时器中断,完成1或2路的超声波障碍物测距功能。

1)测试数据包含噪声,程序需要进行滤波处理;将测距数值通过串口上传到上位机串口助手;

2)根据障碍物距离远近,控制一个蜂鸣器(可以用LED灯代替)发出频率不同的声音(或LED不同闪烁),即输出占空比变化的PWM波形;

3)在没有超声波模块硬件的场景下,先使用Keil中的仿真逻辑分析仪,观察分析对应管脚上的时序波形,判读是否符合协议规范。

HC-SR04基本工作原理:

(1)采用IO口TRIG触发测距,给最少10us的高电平信呈。

(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;

(3)有信号返回, 通过IO口ECHO输出一个高电平, 高电平持续的时间就是超声波从发射到返回的时间。

引脚连接:

VCC --> VCC
GND --> GND
Trig --> PA5
Echo --> PA0

CubeMX配置:

1、RCC配置外部高速晶振——HSE

2、SYS配置:Debug设置成Serial Wire

ADC1配置:配置ADC-IN1模数转换

TIM2配置:设置定时器TIM2每1us向上计数一次通道1为上升沿捕获并连接到超声波模块的ECHO引脚

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

GPIO配置:PA5接到了HC-SR04的TRIG触发引脚,默认输出低电平

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

TIM1配置:由上面可知HC-SR04的使用需要us级的延迟函数,HAL库自带只有ms的,所以需要自己设计一个定时器外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

超声波模块代码:

HC-SR04.h:

#ifndef HCSR04_H_
#define HCSR04_H_
 
#include "main.h"
#include "delay.h"
 
typedef struct
{
	uint8_t  edge_state;
	uint16_t tim_overflow_counter;
	uint32_t prescaler;
	uint32_t period;
	uint32_t t1;	//	上升沿时间
	uint32_t t2;	//	下降沿时间
	uint32_t high_level_us;	//	高电平持续时间
	float    distance;
	TIM_TypeDef* instance;
    uint32_t ic_tim_ch;
	HAL_TIM_ActiveChannel activ
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值