STM3定时器输入捕获、超声波测距

2024-04-07 10:36

本文主要是介绍STM3定时器输入捕获、超声波测距,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、超声波测距模块介绍

    1、HC-SR04共四个引脚:VCC、GND、Trig、Echo,如下图
在这里插入图片描述
    2、使用
在这里插入图片描述
        1、通过gpio口向Trig引脚发送一个脉冲信号。
        2、HC-SR04接收到脉冲信号后,就会向外发送一段超声波,模块会将echo拉高。
        3、当模块接收到反射回来的超声波后,模块会将echo拉低。那么echo引脚高电平持续的时间,也就是超声波在往返途中消耗的时间。

     知道超声波往返的时间,我们就可以算出距离。

     给trig发送一个脉冲很简单。但是如何高效、精确的获取echo高电平持续的时间??答案是使用定时器输入捕获功能

2、输入捕获

2.1、什么是输入捕获

     1、当定时器输入通道上检测到上升沿或者下降沿时,立刻将此时刻计数器的数值记录到捕获寄存器中,以待程序稍后读取。
在这里插入图片描述

2.2、输入捕获的详细机制

在这里插入图片描述

     1、每个输入通道都有它自己的捕获寄存器。
     如上图,TI1FP1通过一个预分频器后接入捕获寄存器1上,TI2FP2通过一个预分频器后接入捕获寄存器2上。
在这里插入图片描述
     3、一个输入捕获通道只能设置为上升沿或者下降沿,不能设置为双边沿。
     4、假设我们启用了输入通道1的输入捕获模式,并且设置为上升沿捕获。定时器启动计数后,若输入到输入通道的TI1的信号出现了一个上升沿,边沿检测器就会立即检测到,随后触发信号就会通过TI1FP1传递到捕获寄存器1,捕获寄存器1编立刻将此时计数器的值复制到自身。这种叫做直接捕获。
     5、如果我们还为此输入捕获开启了中断,还会触发中断HAL_TIM_IC_CaptureCallback。这样我们在中断中读取捕获寄存器的值,就得到了上升沿出现时定时器的时刻。
     6、只要再获得到下降沿出现的时刻,就能够知道高电平持续的时间了,这里我们就要使用间接捕获了,借助TI2的输入捕获寄存器2来保存下降沿时定时器计数器的值即可。
     7、TI1和TI2可以相互借用,TI3和TI4可以相互借用。

3、使用

     超声波模块echo引脚接在单片机PA10上,Trig引脚接在PA11上。

3.1、配置

     1、设置TIM1的CH3为直接输入捕获,CH4为间接输入捕获:
在这里插入图片描述
     2、设置定时器预分频值为72,定时器的时钟频率为1MHz,方便计算,CH3为上升沿捕获,CH4为下降沿捕获
在这里插入图片描述
     3、开启捕获终中断
在这里插入图片描述

3.2、代码

int upEdge = 0;
int downEdge = 0;
float distance = 0;
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{if((htim == &htim1)&&(htim->Channel==HAL_TIM_ACTIVE_CHANNEL_4)){upEdge = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_3);downEdge = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_4);distance = (downEdge - upEdge) * 0.034 / 2;//340m/s = 0.034cm/us}
}
while (1)
{//启动测距HAL_GPIO_WritePin(Trig_GPIO_Port, Trig_Pin, 1);HAL_Delay(1);HAL_GPIO_WritePin(Trig_GPIO_Port, Trig_Pin, 0);__HAL_TIM_SET_COUNTER(&htim1, 0);//等待测距完成HAL_Delay(20);sprintf(message,"juli:%.2fcm",distance);OLED_PrintString(0, 0, message);HAL_Delay(500);
}

3.3、效果

在这里插入图片描述

4、总结

     使用STM32 TIM1 CH3 输入捕获中断,设置为上升沿捕获,来获取超声波模块echo变为高电平时刻;STM32 TIM1 CH4 输入捕获中断,设置为下降捕获,来获取超声波模块echo变为低电平时刻。计算高电平持续的时间进而算出距离。

这篇关于STM3定时器输入捕获、超声波测距的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/882373

相关文章

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

解决Office Word不能切换中文输入

我们在使用WORD的时可能会经常碰到WORD中无法输入中文的情况。因为,虽然我们安装了搜狗输入法,但是到我们在WORD中使用搜狗的输入法的切换中英文的按键的时候会发现根本没有效果,无法将输入法切换成中文的。下面我就介绍一下如何在WORD中把搜狗输入法切换到中文。

当你输入一个网址后都发生什么

原文:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/  作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。 本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~

【Qt】定时器事件

定时器事件 在之前学习QTimer中实现了定时器的功能,而在QTimer背后是QTimerEvent定时器事件进行支撑的。在QObject中提供了一个timeEvent这个函数。 startTimer启动定时器killTimer关闭定时器 Qt 中在进⾏窗⼝程序的处理过程中,经常要周期性的执⾏某些操作,或者制作⼀些动画效果,使⽤定 时器就可以实现。所谓定时器就是在间隔⼀定时间后,去执⾏某⼀

独立按键单击检测(延时消抖+定时器扫描)

目录 独立按键简介 按键抖动 模块接线 延时消抖 Key.h Key.c 定时器扫描按键代码 Key.h Key.c main.c 思考  MultiButton按键驱动 独立按键简介 ​ 轻触按键相当于一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通与断开。  ​ 按键抖动 由于按键内部使用的是机

在 Qt Creator 中,输入 /** 并按下Enter可以自动生成 Doxygen 风格的注释

在 Qt Creator 中,当你输入 /** 时,确实会自动补全标准的 Doxygen 风格注释。这是因为 Qt Creator 支持 Doxygen 以及类似的文档注释风格,并且提供了代码自动补全功能。 以下是如何在 Qt Creator 中使用和显示这些注释标记的步骤: 1. 自动补全 Doxygen 风格注释 在 Qt Creator 中,你可以这样操作: 在你的代码中,将光标放在

如何使用Selenium捕获控制台日志

Selenium是一个流行的开源工具,用于自动化Web浏览器。其中一个关键功能是能够与浏览器的开发者控制台交互。本文将向您展示如何在Selenium中使用Java获取控制台日志。这些日志对于调试和解决Selenium脚本的问题非常有用。 如何查看任何网页的控制台日志 首先,打开浏览器的开发者控制台。在大多数浏览器中,您可以通过右键点击页面并选择“检查”来做到这一点。我们将在我们的测试网站——h

八、我们应当怎样做需求调研:需求捕获(下)

前面我们讨论了,需求分析工作是一个迭代的过程:需求捕获->需求整理->需求验证->再需求捕获······需求捕获是这个迭代过程的开始,也是整个需求分析工作中最重要的部分。没有捕获哪来后面的整理与验证工作?但是,非常遗憾,按照我以往的经验,需求捕获是我们最薄弱的环节。前面我提到的许许多多项目开发的问题都可以归结为需求分析的问题,而许许多多需求分析的问题又都可以归结为需求捕获不完整的问题。需求捕获是整

七、我们应当怎样做需求调研:需求捕获(上)

前面我们讨论了,需求分析工作是一个迭代的过程:需求捕获->需求整理->需求验证->再需求捕获······需求捕获是这个迭代过程的开始,也是整个需求分析工作中最重要的部分。没有捕获哪来后面的整理与验证工作?但是,非常遗憾,按照我以往的经验,需求捕获是我们最薄弱的环节。前面我提到的许许多多项目开发的问题都可以归结为需求分析的问题,而许许多多需求分析的问题又都可以归结为需求捕获不完整的问题。需求捕获是整

超声波清洗机哪个品牌比较好一点的?清洁力强的超声波清洗机品牌

随着生活水平的不断提升和幸福感的增强,珠宝、饰品和眼镜等物品已成为许多家庭的常备之物。然而,这些贵重细小的物件易于积聚微尘与隐形细菌,长此以往可能悄悄影响家人的健康,毕竟细菌是肉眼难以察觉的隐患。超声波清洗机应运而生,它以高科技手段有效地解决了这一隐忧,深层清洁,守护家人免受微小污染物的潜在威胁。不过现在市面上超声波清洗机品牌挺多的,究竟有哪些品牌的超声波清洗机比较好一点呢?接下来就为大家带来四款