STM32CubeMX——定时器输入捕获

本文介绍STM32定时器输入捕获功能的基本原理及应用,包括测量脉冲宽度与频率的方法,并提供了一段代码示例。

基础知识

  1. 定时器是一种特殊的计数器,它对周期已知的脉冲信号进行计数,通过计数次数来算出计数时间。对于已知的脉冲信号(内部时钟信号),可以使用定时器模式,对于未知的脉冲信号(外部脉冲信号),只能使用计数器模式。
    在这里插入图片描述
  2. 定时器使用时关注的三个问题:位宽、计数值、处理。
  3. STM32定时器分类:
    基本定时器只能用于定时/计数。一般用作时基。通用定时器在基本定时器的基础上增加了一个外部引脚,可以实现输入捕获与输出比较等功能。传感器数据采集主要用通用定时器的输入捕获功能。高级定时器TIM1与TIM8相比于通用定时器增加了电机控制与数字电源设计相关的功能。
    在这里插入图片描述
  4. 输入捕获一般应用在两个方面,一个方面是计算脉冲跳变沿时间的方式测量脉宽与频率,另一方面是用 PWM 输入的方式测量脉宽与频率。
  5. 测周期是通过相邻两次中断计数值之差来换算的。那么两次进入中断要将计数值保存在两个不同的变量中,必然导致中断里面要有分支。
  6. 一个外设有几类功能,HAL库就给它定义了几种初始化数据类型来初始化结构体。
  7. GPIO成为简单外设。定时器之类的属于复杂外设。HAL库对于复杂外设在程序中的描述,有三种基本的设计方法:句柄设计——设计了统一的外设句柄数据类型PPP_ HandleTypeDef。编程模型——设计了轮询、中断、DMA三种编程模型。通用接口函数——设计了四类通用的接口函数。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  8. 时基单元分为:预分频模块、计数模块、自动重载模块。
    在这里插入图片描述

测量脉冲宽度或者测量频率流程

  1. 设置TIM2 CH1为输入捕获功能;
  2. 设置上升沿捕获;
  3. 使能TIM2 CH1捕获功能;
  4. 捕获到上升沿后,存入capture_buf[0],改为捕获下降沿;
  5. 捕获到下降沿后,存入capture_buf[1],改为捕获上升沿;
  6. 捕获到上升沿后,存入capture_buf[2],关闭TIM2 CH1捕获功能;
  7. 计算:capture_buf[2] - capture_buf[0]就是周期,capture_buf[1] - capture_buf[0]就是高电平所占时间。

代码实现

main.c
只写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值