STM32定时器超声波测距实验手册

1. 实验目标

  • 使用STM32 HAL库和定时器实现超声波测距功能。

  • 当超声波模块前方障碍物距离 < 10cm 时,点亮板载LED。


2. 硬件准备

硬件模块说明
STM32开发板STM32F103C8T6
HC-SR04模块超声波测距模块
杜邦线若干连接模块与开发板

3. 硬件连接

HC-SR04引脚STM32引脚备注
VCC3.3V
TrigPA0GPIO_Output
EchoPA8GPIO_Input(建议串联1kΩ电阻)
GNDGND

4. STM32CubeMX配置

  • GPIO配置

  • 定时器配置TIM1

  • 设置通道模式参数

  • 设置通道参数

  • 设置板载LED参数

  • 设置时基单元参数

5.代码实现

功能流程分析

while (1)
  {
		//1.CNT归零
		__HAL_TIM_SET_COUNTER(&htim1,0);
		//1.CC1,CC2清除
		__HAL_TIM_CLEAR_FLAG(&htim1,TIM_FLAG_CC1);
		__HAL_TIM_CLEAR_FLAG(&htim1,TIM_FLAG_CC2);

		//2.启动输入捕获
		HAL_TIM_IC_Start(&htim1,TIM_CHANNEL_1);
		HAL_TIM_IC_Start(&htim1,TIM_CHANNEL_2);

		//3.向Trig发送脉冲
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET);
		for(uint32_t i = 0;i < 10;i++);
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_RESET);
		
		//4.等待测量结束
		uint8_t success = 0; // 测量是否成功,0 - 失败,1 - 成功
		uint32_t expireTime =  HAL_GetTick()+50; //最长等待时间
		
		while(expireTime > HAL_GetTick()){
			uint32_t cc1Flag = __HAL_TIM_GET_FLAG(&htim1, TIM_FLAG_CC1);
			uint32_t cc2Flag = __HAL_TIM_GET_FLAG(&htim1, TIM_FLAG_CC2);
			if(cc1Flag && cc2Flag){
				success = 1;
				break;
			}
		}
		
		//5.关闭定时器
		HAL_TIM_IC_Stop(&htim1,TIM_CHANNEL_1);
		HAL_TIM_IC_Stop(&htim1,TIM_CHANNEL_2);
		
		//6.计算测量结果
		if(success == 1){
			uint16_t ccr1 = __HAL_TIM_GET_COMPARE(&htim1, TIM_CHANNEL_1);
			uint16_t ccr2 = __HAL_TIM_GET_COMPARE(&htim1, TIM_CHANNEL_2);
			
			float pulseWidth = (ccr2 - ccr1) * 1e-6f;
			
			float distance = 340.0f * pulseWidth / 2.0f;
				
			if(distance < 0.2){
				HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_RESET);
			}else{
				HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_SET);
			}
		}
		   
    }
 
}

6.代码解析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/979622.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软件测试之白盒测试知识总结

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 概念与定义 白盒测试&#xff1a;侧重于系统或部件内部机制的测试&#xff0c;类型分为分支测试&#xff08;判定节点测试&#xff09;、路径测试、语句测试…

【NTN 卫星通信】低轨卫星通信需要解决的关键问题

1 低轨卫星通信需要考虑的关键问题 3GPP在开始阶段对低轨卫星通信需要面对的关键问题对架构的影响进行了探讨&#xff0c;主要在协议23.737中&#xff0c;我们来看看有哪些内容吧。 2 关键问题讨论 2.1 大型卫星覆盖区域的移动性管理 PLMN的覆盖区域受到HPLMN母国监管机构的限…

DE2115实现4位全加器和3-8译码器(FPGA)

一、配置环境 1、Quartus 18.1安装教程 软件&#xff1a;Quartus版本&#xff1a;Quartus 18.1语言&#xff1a;英文大小&#xff1a;5.78G安装环境&#xff1a;Win11/Win10/Win8/Win7硬件要求&#xff1a;CPU2.0GHz 内存4G(或更高&#xff09; 下载通道①百度网盘丨64位下载…

Distilling the Knowledge in a Neural Network(提炼神经网络中的知识)

蒸馏&#xff1a;把比较不纯净的水&#xff0c;通过加热&#xff0c;凝聚成水蒸气&#xff0c;然后再凝聚成纯净的蒸馏水。 知识蒸馏&#xff0c;也是把一个非常大的东西&#xff0c;蒸馏成一个小的&#xff0c;纯净的东西。 就是用大的教师网络&#xff0c;把知识传递给小的网…

【AI论文】MedVLM-R1:通过强化学习激励视觉语言模型(VLMs)的医疗推理能力

摘要&#xff1a;推理是推进医学影像分析的关键前沿领域&#xff0c;其中透明度和可信度对于赢得临床医生信任和获得监管批准起着核心作用。尽管医学视觉语言模型&#xff08;VLMs&#xff09;在放射学任务中展现出巨大潜力&#xff0c;但大多数现有VLM仅给出最终答案&#xff…

M4 Mac mini运行DeepSeek-R1模型

前言 最近DeepSeek大模型很火&#xff0c;实际工作中也有使用&#xff0c;很多人觉得需要很好的显卡才能跑起来&#xff0c;至少显存需要很高&#xff0c;但实际上一般的核显机器也能跑起来&#xff0c;只不过内存要求要大&#xff0c;对于个人而言&#xff0c;实际上Mac M芯片…

Chart.js 电商数据可视化实战:构建企业级销售仪表盘(附完整源码)

副标题:零配置开发多维度商业看板,掌握动态数据联动与性能调优 📝 文章摘要 本文通过 Chart.js 4.x 实现电商场景下的 多维度销售数据可视化看板,包含: ✅ 实时更新的柱状趋势图 ✅ 商品类目占比动态饼图 ✅ 企业级功能:自动刷新、响应式布局、内存管理 ✅ 生产环境最佳…

【常见BUG】Spring Boot 和 Springfox(Swagger)版本兼容问题

???欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老…

高频面试题(含笔试高频算法整理)基本总结回顾5

目录 一、基本面试流程回顾 二、基本高频算法题展示 三、基本面试题总结回顾 &#xff08;一&#xff09;Java高频面试题整理 &#xff08;二&#xff09;JVM相关面试问题整理 &#xff08;三&#xff09;MySQL相关面试问题整理 &#xff08;四&#xff09;Redis相关面试…

【数据挖掘】Pandas

Pandas 是 Python 进行 数据挖掘 和 数据分析 的核心库之一&#xff0c;提供了强大的 数据清洗、预处理、转换、分析 和 可视化 功能。它通常与 NumPy、Matplotlib、Seaborn、Scikit-Learn 等库结合使用&#xff0c;帮助构建高效的数据挖掘流程。 &#x1f4cc; 1. 读取数据 P…

Linux相关概念和易错知识点(33)(基于阻塞队列和环形队列的生产消费模型实现、sem的应用)

目录 1.基于阻塞队列的生产消费模型 &#xff08;1&#xff09;生产消费模型实现的条件 &#xff08;2&#xff09;初始化模型 &#xff08;3&#xff09;生产和消费 &#xff08;3&#xff09;所有代码 ①test.cc ②myBlockQueue.hpp 2.基于环形的生产消费模型、sem的应…

[SAP MM] 标准价格和移动平均价格

在SAP MM模块中&#xff0c;移动平均价格与标准价格是两种重要的物料计价方式 1.标准价格(S价格) 以一个固定的价格表示物料在一段期间的价值 如果物料主数据维护了标准价格(S价格)&#xff0c;那么不论物料的采购订单价格与标准价格的差异有多大&#xff0c;都不会改变物料…

计算机毕业设计Python+DeepSeek-R1大模型期货价格预测分析 期货价格数据分析可视化预测系 统 量化交易大数据 机器学习 深度学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

【AIGC系列】5:视频生成模型数据处理和预训练流程介绍(Sora、MovieGen、HunyuanVideo)

AIGC系列博文&#xff1a; 【AIGC系列】1&#xff1a;自编码器&#xff08;AutoEncoder, AE&#xff09; 【AIGC系列】2&#xff1a;DALLE 2模型介绍&#xff08;内含扩散模型介绍&#xff09; 【AIGC系列】3&#xff1a;Stable Diffusion模型原理介绍 【AIGC系列】4&#xff1…

推进断裂力学:深入研究工程模拟中的 UMM

揭秘高级断裂分析&#xff1a;UMM 在 Ansys Mechanical 中的作用 工程模拟已成为产品设计和开发中不可或缺的一部分&#xff0c;尤其是用于评估材料在各种条件下的行为和耐久性。该领域的前沿是断裂分析&#xff0c;它在确保从日常工具到桥梁和飞机等复杂结构的安全性和耐用性…

dify绑定飞书多维表格

dify 绑定飞书和绑定 notion 有差不多的过程&#xff0c;都需要套一层应用的壳子&#xff0c;而没有直接可以访问飞书文档的 API。本文记录如何在dify工具中使用新增多条记录工具。 创建飞书应用 在飞书开放平台创建一个应用&#xff0c;个人用户创建企业自建应用。 自定义应…

C++ ++++++++++

初始C 注释 变量 常量 关键字 标识符命名规则 数据类型 C规定在创建一个变量或者常量时&#xff0c;必须要指定出相应的数据类型&#xff0c;否则无法给变量分配内存 整型 sizeof关键字 浮点型&#xff08;实型&#xff09; 有效位数保留七位&#xff0c;带小数点。 这个是保…

如何通过rust实现自己的web登录图片验证码

在进行web系统开发时&#xff0c;为保障系统登录安全&#xff0c;登录页面中的验证码必不可少。在java中&#xff0c;我们可以利用相应的2D图像库快速生成图形验证码&#xff0c;而对于rust&#xff0c;我们没有合适的标准库进行图像验证码的生成。今天&#xff0c;我们通过使用…

Python中文自然语言处理库SnowNLP

SnowNLP 介绍 SnowNLP 是一个基于 Python 的中文自然语言处理库&#xff0c;专为处理中文文本而设计。它受到 TextBlob 的启发&#xff0c;但与 TextBlob 不同的是&#xff0c;SnowNLP 没有使用 NLTK&#xff0c;所有的算法都是自己实现的&#xff0c;并且自带了一些训练好的字…

【网络】数据链路层(以太网帧格式、MTU、ARP)、NAT、内网穿透

文章目录 1. 数据链路层2. 以太网帧格式3. MTU3.1 认识MTU3.2 MTU 对于 TCP 协议的影响 4. 局域网通信原理5. ARP协议5.1 基本概念5.2 原理5.3 ARP 数据报的格式 6. NAT技术7. 内网穿透8. 内网打洞9. 代理服务器9.1 正向代理9.2 反向代理9.3 NAT VS 代理服务器 10.网络总结 1. …