STM32 超声波模块(HC-SR04)
HC-SR04介绍
- 典型工作电压:5v (如果你的超声波模块没有工作,可以看一下是不是电压不够)
- 超小静态工作电流:<2mA
- 感应角度:<15° (超声波模块,是一个范围式的探索,所以在做测速等一些适合直线传播的项目的时候,不建议使用超声波模块)
- 探测距离:2cm-400cm
- 高精度:可以达到0.3cm
- 盲区:2cm (当物体和超声波模块的距离小于2cm,超声波模块失效)
工作原理
- 采用IO触发测距,给至少10us的高电平。
- 模块自动发送8个4kHz的方波,自动检测是否有信号返回。
- 有信号返回,通过IO输出一高电平,高电平的持续时间就是超声波从发射到返回的时间
测试距离=(高电平时间*声速)/2
因为声音会来回两段,所以要除以二,声速我们一般取340m/s

接口定义
Vcc,Trig(控制端),Echo(接收端),GND
向Trig发送10us以上的高电平,就可以在Echo等待高电平输出,一有输出就可以打开定时器计时,当Echo变为低电平时,就可以读定时器的值,此时就为此次测距的时间,就可以算出距离,不断周期性的测量,就可以达到你移动测量的值。
思路
- IO输出=》Trig,IO输入《=Echo
- 给Trig管脚一个>10us的高电平(启动)
- 启动后,Echo开启计时器计数,等待检验,进入while(Echo==1),当Echo不等于高电平的啥时候结束while,关掉计时器。
- 设开启定时器时间为T1,关闭定时器时间为T2,所得时间T即等于T2-T1,所以测距距离即为(T2-T1)*340/2
代码
配置Echo和Trig
void Echo_Configuration(void)
{GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOA, &GPIO_InitStructure);
}
void Trig_Configuration(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA, &GPIO_InitStructure);
}
然后配置TIM2
void TIM2_Count_Configuration(void)
{TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);TIM_TimeBaseStructure.TIM_Period = 0xFFFF; TIM_TimeBaseStructure.TIM_Prescaler = 71; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);TIM_Cmd(TIM2, ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, DISABLE);
}
在define几个等下用到的函数
#define TRIG_H GPIO_WriteBit(GPIOA,GPIO_Pin_9,Bit_SET)
#define TRIG_L GPIO_WriteBit(GPIOA,GPIO_Pin_9,Bit_RESET)#define ECHO GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_8)
main
int main(void)
{unsigned int time = 0;float distance = 0.00;void Echo_Configuration();void Trig_Configuration();void TIM2_Count_Configuration();RCC_APB2PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);while(1){TIM_Cmd(TIM2,ENABLE);TRIG_H;Delay_us(15);TRIG_L;while(ECHO == 0);TIM_SetCounter(TIM2,0);while(ECHO == 1);TIM_Cmd(TIM2,DISABLE);time = TIM_GetCounter(TIM2);distance = time * 0.017;printf("Distance = %.2fcm\n", distance);Delay_us(1000000);}
}
- 配置Echo,Trig和TIM2,使能RCC_APB1Periph_TIM2
- TIM_Cmd(TIM2,ENABLE) 使能TIM2
- TRIG_H 给TRIG高电平,等待15us,TRIG_L给TRIG低电平
- while(ECHO==0) 如果ECHO为低电平,就复位TIM2为0
- while(ECHO==1) 如果ECHO为高电平,TIM_Cmd(TIM2,DISABLE);关闭TIM2
- time = TIM_GetCounter(TIM2);记录时间为time
- 计算距离distance = time * 0.017;
相关文章:
STM32 超声波模块(HC-SR04)
HC-SR04介绍 典型工作电压:5v (如果你的超声波模块没有工作,可以看一下是不是电压不够)超小静态工作电流:<2mA 感应角度:<15 (超声波模块,是一个范围式的探…...
ELK+Filebeat
Filebeat概述 1.Filebeat简介 Filebeat是一款轻量级的日志收集工具,可以在非JAVA环境下运行。 因此,Filebeat常被用在非JAVAf的服务器上用于替代Logstash,收集日志信息。实际上,Filebeat几乎可以起到与Logstash相同的作用&…...
MySql之锁表、锁行解决方案
查询正在使用的表,没有跑业务,一般情况下是锁表了 show open tables where in_use > 0 ;查看进程,可以看到Command类型(Sleep为阻塞线程) show processlist;kill事务,kill 进程Id kill 8193583;其他 …...
2023年第十六届山东省职业院校技能大赛中职组“网络安全”赛项竞赛正式试题
第十六届山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题 目录 一、竞赛时间 二、竞赛阶段 三、竞赛任务书内容 (一)拓扑图 (二)A模块基础设施设置/安全加固(200分) (三…...
JAVA 整合 AWS S3(Amazon Simple Storage Service)文件上传,分片上传,删除,下载
依赖 因为aws需要发送请求上传、下载等api,所以需要加上httpclient相关的依赖 <dependency><groupId>com.amazonaws</groupId><artifactId>aws-java-sdk-s3</artifactId><version>1.11.628</version> </dependency&…...
记录:Unity脚本的编写9.0
目录 射线一些准备工作编写代码 突然发现好像没有写过关于射线的内容,我就说怎么总感觉好像少了什么东西(心虚 那就在这里写一下关于射线的内容吧,将在这里实现射线检测鼠标点击的功能 射线 射线是一种在Unity中检测碰撞器或触发器的方法&am…...
共享单车停放(简单的struct结构运用)
本来不想写这题的,但是想想最近沉迷玩雨世界,班长又问我这题,就草草写了一下 代码如下: #include<stdio.h> #include<math.h> struct parking{int distance;int remain;int speed;int time;int jud; }parking[50]; …...
【Java8系列07】Java8日期处理
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
为什么做CSGO搬砖的不直接去炒股呢?
首先,CS2并非只有一个交易平台,阿阳个人觉得像IGXE等交易平台一样是交易,况且我记得很早的时候我就开始用IGXE了,我记得最早的时候还是机器人发货,后来因为V社对于很多开箱网站的管控,所以让这种发货的方式…...
12月01日,每日信息差//阿里国际发布3款AI设计生态工具//美团买菜升级为“小象超市”//外国人永居证换新、6国游客免签来华
_灵感 🎖 阿里国际发布3款AI设计生态工具 🎄 AITO问界系列11月交付新车18827辆 🌍 美团买菜升级为“小象超市” 🌋 全球首个金融风控大模型国际标准出炉,由腾讯牵头制定 🎁 支付宝:支持外国人…...
ChatGPT探索:提示工程详解—程序员效率提升必备技能【文末送书】
文章目录 一.人工智能-ChatGPT1.1 ChatGPT简介1.2 ChatGPT探索:提示工程详解1.2 提示工程的优势 二.提示工程探索2.1 提示工程实例:2.2 英语学习助手2.3 Active-Prompt思维链(CoT)方法2.4 提示工程总结 三.文末推荐与福利3.1《Cha…...
Pytest做性能测试?
Pytest其实也是可以做性能测试或者基准测试的。是非常方便的。 可以考虑使用Pytest-benchmark类库进行。 安装pytest-benchmark 首先,确保已经安装了pytest和pytest-benchmark插件。可以使用以下命令安装插件: pip install pytest pytest-benchmark …...
Swagger各版本访问地址
2.9.x 访问地址: http://ip:port/{context-path}/swagger-ui.html 3.0.x 访问地址: http://ip:port/{context-path}/swagger-ui/index.html 3.0集成knife4j 访问地址: http://ip:port/{context-path}/doc.html...
docker-compose;私有镜像仓库harbor搭建;镜像推送到私有仓库harbor
docker-compose;私有镜像仓库harbor搭建;镜像推送到私有仓库harbor 文章目录 docker-compose;私有镜像仓库harbor搭建;镜像推送到私有仓库harbordocker-compose私有镜像仓库harbor搭建镜像推送到私有仓库harbor docker-compose D…...
OpenTSDB(CVE-202035476)漏洞复现及利用
任务一: 复现环境中的命令注入漏洞。 任务二: 利用命令注入执行whoami,使用DNS外带技术获取结果 任务三:使用反弹shell,将漏洞环境中的shell反弹到宿主机或者vps服务器。 任务一: 1.搭建好环境 2.先去了…...
Maven无法拉取依赖/构建失败操作步骤(基本都能解决)
首先检查配置文件,确认配置文件没有问题(也可以直接用同事的配置文件(记得修改文件里的本地仓库地址)) 1.file->Invalidate Caches清除缓存重启(简单粗暴,但最有效) 2.刷新maven以及mvn clean,多刷几次,看看还有没有报红的依赖…...
【数据库】数据库并发控制的目标,可串行化序列的分析,并发控制调度器模型
数据库并发控制 专栏内容: 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。 本专栏会定期更…...
带头结点的双向循环链表
目录 带头结点的双向循环链表 1.存储定义 2.结点的创建 3.结点的初始化 4.尾插结点 5.尾删结点 6.头插结点 7.头删结点 8.查找并返回结点 9.在pos结点前插入结点 10.删除pos结点 11.打印链表 12.销毁链表 13.头插结点2.0版 14.尾插结点2.0版 前言: 当…...
2023年11月下旬大模型新动向集锦
2023年11月下旬大模型新动向集锦 2023.12.1版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 1、微软将向中国大陆开放Windows Copilot服务 据微软发布的消息,微软将在 2023 年 12 月 1 日面向中国大陆的企业和教育机构推出 We…...
有IP没有域名可以申请证书吗?
一、IP证书是什么? ip证书是用于公网ip地址的SSL证书,与我们通常所讲的SSL证书并无本质上的区别,但由于SSL证书通常颁发给域名,而组织机构需要公共ip地址的SSL证书,这类SSL证书就是我们所说的ip证书。ip证书具有安全、…...
【全新 v 2.7.5 版本】Open Claw 本地环境一键部署教程
前言 2026 年开源圈爆火的「数字员工」OpenClaw(昵称小龙虾),GitHub 星标狂揽 28 万 ,凭「本地运行 零代码操作 自动干活」的核心优势圈粉无数!很多人误以为它是普通聊天 AI,实则是能真正操控电脑的自动…...
终极指南:如何快速实现Daz Studio到Blender的无缝资产迁移
终极指南:如何快速实现Daz Studio到Blender的无缝资产迁移 【免费下载链接】DazToBlender Daz to Blender Bridge 项目地址: https://gitcode.com/gh_mirrors/da/DazToBlender 还在为3D角色创作中的软件壁垒而烦恼吗?Daz Studio以其强大的角色创建…...
如何在Windows上实现高效屏幕标注:gInk免费工具完全指南
如何在Windows上实现高效屏幕标注:gInk免费工具完全指南 【免费下载链接】gInk An easy to use on-screen annotation software inspired by Epic Pen. 项目地址: https://gitcode.com/gh_mirrors/gi/gInk 你是否需要在演示时快速圈出重点,或在线…...
免费开源鼠标连点器:5分钟上手跨平台自动化点击完整指南
免费开源鼠标连点器:5分钟上手跨平台自动化点击完整指南 【免费下载链接】MouseClick 🖱️ MouseClick 🖱️ 是一款功能强大的鼠标连点器和管理工具,采用 QT Widget 开发 ,具备跨平台兼容性 。软件界面美观 ࿰…...
Qt5 super module多媒体模块详解:音频、视频、3D图形处理技术
Qt5 super module多媒体模块详解:音频、视频、3D图形处理技术 【免费下载链接】qt5 Qt5 super module 项目地址: https://gitcode.com/gh_mirrors/qt/qt5 Qt5 super module是一个功能强大的跨平台应用开发框架,其中的多媒体模块为开发者提供了全面…...
baffle.js自定义配置完全指南:字符集、速度、排除字符的深度优化
baffle.js自定义配置完全指南:字符集、速度、排除字符的深度优化 【免费下载链接】baffle A tiny javascript library for obfuscating and revealing text in DOM elements. :astonished: 项目地址: https://gitcode.com/gh_mirrors/ba/baffle baffle.js是一…...
基于知识图谱InsightGraph — 让数据开口说话。
从Palantir的ontology思路出发,我们踩了一遍知识图谱的坑让数据从"分散的资产",变成"会分析、会归因的业务伙伴"💼你一定遇到过这些问题这份数据和其他系统能不能关联?问了三个人有三个答案运营问"为什么…...
Frida-server魔改实战:Android native层反调试对抗七步法
1. 这不是“绕过检测”,而是让frida-server从“被识别对象”变成“系统一部分”在安卓逆向和安全测试一线干了十多年,我见过太多人把Frida检测对抗理解成一场猫鼠游戏:App加个检测逻辑,测试方就写个绕过脚本;检测逻辑升…...
一种三菱MXF100-8 走CC LINK IE TSN 网络控制单轴伺服的功能块(可控30+轴)
三菱电机去年新推出了MX系列的PLC,其中最吸引人的应该就是本体网口支持CC Link TSN总线了。但MXF100系列的轴控功能,只有8轴和16轴两个版本,为了充分应用TSN的强大性能,作者手搓了一个直接读写对象字典实现单轴伺服定位控制的功能…...
一幅精细绝伦的[城市或地点]微缩模型
提示词: 一幅精细绝伦的[城市或地点]微缩模型,无缝搭建于质朴的木桌之上,仿佛整个场景都是实时手工制作而成。场景囊括了[城市或地点]最具标志性的地标、建筑、街道、交通、文化元素和氛围,周围环绕着密 地址:https://…...
