深入浅出STM32 定时器输入捕获实验之四路超声波讲解(寄存器版)

输入捕获

定时器的输入捕获模式可以用来测量脉冲宽度或者测量频率。本教程通过测量脉冲宽度,实现四路超声波测量距离的目的。如图所示:
在这里插入图片描述
首先,我们设定定时器工作模式为向上计数模式,图中t1-t2时间间隔就是我们需要测量的脉宽时间(即高电平时间)。测量方法如下:
1:设定定时器某通道为上升沿捕获,这样在t1时刻,就会捕获到当前值CNT值,然后马上清零,同时设置该通道为下降沿捕获,这样到t2时刻,又发生捕获事件,得到此时的CNT值,记为CCRx2。这样,根据定时器的计数频率可以算出t1-t2的时间,从而得到高电平脉宽。
2:在t1-t2的时间段里,有可能发生N次溢出,我们需要对此进一步处理,防止高电平过长,导致数据不准确。因此,CNT计数的次数等于N*ARR+CCRx2,有了这个计数次数,再乘以 CNT 的计数周期,即可得到 t2-t1 的时间长度,即高电平持续时间。输入捕获的原理,我们就介绍到这。

超声测距

超声测距究竟是什么高大上的玩意呢???超声测距其实就是通过单片机控制超声波模块发出一系列超声波,当超声波遇到障碍物时反弹回来,根据声音在空气中的传播速率340m/s,再结合上述所讲的方法求得时间t,应用初高中物理知识,即可求解距离。
(驱动超声波模块需要给它一个10-20us高电平)

即 测量距离=(高电平持续时间(340M/S))/2*
至于为啥要除以2,自个慢慢思量啦!!!)
此外,还可以这样快速计算出距离:
由于,我们算出的高电平时间是以us为单位,因此我们可以把声波传输速度看成大约为340M/S,合34,000CM/S。 即34,000除以1,000,000CM/US。 即为:0.0340CM/US 换种角度:1/(0.0343 CM/US) 即:29.00 US/CM。 这就意味着,每290.0US表示10CM的距离。1厘米就是29.00US。 但是发送后到接收到回波,声音走过的是2倍的距离呀。 所以实际距离就是1厘米,对应58.0US。
即 测量距离=(高电平持续时间/58.0(CM))

超声测距实现步骤

1.使能定时器时钟(寄存器APB1ENR/APB2ENR)。
2.使能复用IO口时钟(寄存器AHB1ENR )配置相应IO 口,此教成不加以说明,欲想了解翻之前博客。
3.设置重装载值与预分频系数(寄存器ARR和PSC)
4.每个通道选择输入端,设置为输入;配置滤波器于分频器(CCMR1/CCMR2寄存器)
5.每个通道设置允许捕获计数器的值到捕获寄存器中,设置捕获模式(CCER寄存器),最后开启捕获中断(DIER寄存器),这样通道配置就完成了。
6.最后,使能捕获(DIER寄存器)和使能计数器(CR1寄存器),设置中断分组(MY_NVIC_Init();//中断分组函数)
7.编写中断服务函数,距离求解函数(公式)
注:相关寄存器请自行翻阅芯片数据手册。

程序部分

void TIM4_CapHC_Init(u32 arr,u32 psc)
{
	
				RCC->APB1ENR=1<<2;//使能TIM4时钟
				RCC->AHB1ENR|=1<<1;
				GPIO_S
  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值