STM32 学习之旅 输入捕获

本文介绍了STM32的输入捕获功能,用于测量脉冲宽度和频率。通过配置定时器和相关寄存器,设置上升沿或下降沿捕获,当信号变化时记录计数器值,从而计算脉宽。文中提供了实验思路和代码示例,实现了简单的LED灯闪烁验证捕获功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

捕获输入,按字面意思便是捕获输入的信号,它可以用来测量脉冲宽度或者测量频率,通过检测 TIMx_CHx 上的边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定时器的值(TIMx_CNT)存放到对应的通道的捕获/比较寄存器(TIMx_CCRx)里面,完成一次捕获。同时还可以配置捕获时是否触发中断/DMA 等。通俗点形容,最简单的:某个GPIO口一直是低电平,突然来了一个高电平,你想要知道高电平的时间到底有多长,这就是输入捕获。STM32里面,除开基本定时器TIM6和TIM7外,其他的定时器都有输入捕获功能,接下来开始捕获实验。
实验思路:初始化计数器,定时器向上或向下开始计数,设置某通道为上升沿捕获,等待高电平的到来,高电平一来,把计数器的值记录下来,再设置为下降沿捕获,等低电平一来,记录此时的计数器的值,这样,两次的差值就是脉宽了,同时定时器的计数频率我们是知道的,所以时间也可以求。
附上通道一捕获输入的工作图:在这里插入图片描述其中的相关的寄存器有圈出来,从左往右的配置为:
TIMx_CCMR1的ICF【3:0】:输入捕获 1 滤波器,用来设置输入采样频率和数字滤波器长度。
TIMx_CCER的CC1P:设置极性,0为上升沿捕获,1为下降沿捕获
TIMx_CCMR1的CC1S【1:0】:这两个位用于 CCR1 的通道方向配置, 这里我们设置 IC1S[1:0]=01,即是配置为输入,且 IC1 映射在 TI1 上, CC1 即对应 TIMx_CH1。
TIMx_CCMR1的ICPS【1:0】:输入捕获 1 预分频器。这里是 1 次边沿就触发 1 次捕获,所以选择 00 就是了。
TIMx_CCER的CC1E位:通道使能,0关闭输出通道,1开启输出通道
附上代码:
#include “Time.h”

void Time_Init()
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值