第五节:STM32输入捕获(用CubeMX学习STM32)

本文详细解析STM32定时器输入捕获功能,介绍如何使用CubeMX进行配置,并通过HAL库函数实现脉宽测量。适用于超声波测距等应用场景,通过测量输入脉冲高电平宽度计算距离。

输入捕获学习


《用CubeMX学习STM32》
注释 点击上面蓝字进入完整专栏,这个系列所有文章都会整合到这个专栏

5、STM32定时器输入捕获

前言: STM32定时器输入捕获简介

STM32的输入捕获可以用于捕获脉宽, 测量时间 . 例如超声波测距模块就是需要用输入捕获功能, 通过测量输入脉冲的高电平脉宽 , 从而计算出测量物体的距离 ;
定时器PWM工作模式上篇博客讲过了, 上篇是输出PWM, 本篇是要输入, 即外面的信号送给单片机的引脚, 然后单片机测量出脉宽 ;

注: 下面根据正点原子的标准库函数教程分析, 并用CubeMX完成配置以及HAL库函数编程


在这里插入图片描述

如图所示 : 以测量高电平脉宽为例, 我们先设置定时器通道为上升沿捕获, 到1的时候触发定时器计数, 然后立刻设置为下降沿捕获, 到2的时候就捕获到下降沿, 再记录输入捕获寄存器的值, 两个时间差就是高电平时长tH;
需要注意的是, 在tH这段高电平时间内, 是由很多个向上计数的脉冲来计数的。在这里面计数可能溢出N多次; 下面是原子的库函数指南pdf里面讲解的图

在这里插入图片描述

  在tH这段高电平里面, 可能有多个向上计数的脉冲, 而那个三角向上计数脉冲也可能溢出多次。就是利用这N多个向上计数的脉冲来计算tH的值的。  ARR的值是我们自己设定的,所以可以知道溢出一次是多长时间, 每溢出一次, 都给溢出次数加一。 溢出次数以及检测高低电平的数据记录在自己设定的一个变量里面
  N*ARR + CCRx2即为CNT计数次数, 从而就可以算出计数时间, 算出高电平时长
  N: 溢出次数  ARR: 溢出一次的时间   在一个tH内,溢出的次数不一定正好是整数, 所以用记录下CCRx2的值, 用以补充, 这样tH的值就更精确了

在这里插入图片描述

这是一个八位的变量,可以将其看做8位寄存器,不同的位储存不同的数据


5.1 操作简介

   通过信号发生器给单片机对应引脚输入一个给定频率和占空比的矩形波信号, 单片机通过输入捕获测量出高电平时长; 通过串口发送至PC端的串口调试助手查看测量的脉宽是否准确


5.2 STM32CubeMX配置初始化+IAR编程

Step1 : Cube配置

  • (1) 新建工程
  •   RCC和SYS配置, 时钟树配置都同前面一样; 还要用串口打印数据, 测试用。
    • RCC和SYS配置

在这里插入图片描述

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值