【CUBEide】定时器4,输入捕获 超声波测距

前言

本来就是要学输入捕获的,把前面学了一下,第三节感觉有点用不到了,直接开始4的学习吧

还是得再看一遍,学到后面东西杂一块就模糊了

一、原理

输入捕获:【输入通道】捕获到“边沿的时候”,计数器值可以记到【捕获寄存器里面】(←硬件,没有程序的啰嗦)

右下绿色就是对应的模块,对他进行设置边可以,让TI1---例如上升边沿--触发中断--记录到绿色模块中

为了记录时间,TI1和TI2一个管记上,一个管记下,记到两个【捕获寄存器】中,两个硬件一减就是时间啦! 

一二是一对,三四是一对

注意:34是没有接到从模式控制器,及编码器上

二、程序编写------------例子为超声波测距,超声波模块我没有就只写代码了

1、 超声波模块有trig脚用来,启动。另一个脚用来持续高电平

pa11--trig,我们输出来让其干活

pa10--用来接收持续的高电平---我们给它接入定时器来计时

注意结合逻辑分析:

#pa10对应为定时器1的通道3,那就去开启tim1,时钟为内部时钟(计数)

#PA10是通道3,那么就让TIM1的通道三为直接模式,用来计数开始的那个数,通道四就是间接了,用来记录结束的counter数。

2、通道34的属性设置,首先时钟需要分频,我是250Mhz那我摄制250分频(填入的是250-1),1us计数器会加1 (中断读出的计数值就等同于过了1us)

ARR自动重装不需要动,我们要计时呢,不能让它没记完直接归零了

这里通道4要和3不一样,同时也是记录下降的那个时间,所以要改一下为falling。

3、 别漏 输入捕获NVIC中断开启                (检测到下降时,)

4、 代码

初始化oled

开启tim1用来计时

再通道3,4来捕获上,下的计数值(其中下得中断出来,来计数)

while里面先把trig拉高后,模马上重置counter的值

5、 记录计数多少,开始写中调回调函数

###上节说的,找回调函数方法

①来核心core里面,找it函数

往下翻就都是,我们再mx里面配置这些中断,找到IRQ

↑这个函数对应↓就是我们开启的NVIC函数

进入:

里面有先判断,再分类判断,来分类操作不同的回调函数(看第三个框是直接)

系统就是,判断是哪个通道后,再操作

###如上图所示,结论:::判断通道的是 < HAL_TIM_ACTIVE_CHANNEL_2; >

6、因此中断函数我们先 1确保是这个定时器,2确保是这个通道

通道4触发,触发函数里是,读取两个计数值,计算

7、while里面拼一起,显示出来

OK !

#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值