STM32——HAL库开发笔记23(定时器4—输入捕获)(参考来源:b站铁头山羊)

定时器有四个通道,这些通道既可以用来作为输入,又可以作为输出。做输入的时候,可以使用定时器对外部输入的信号的时间参数进行测量;做输出的时候,可以使用定时器向外输出精确定时的方波信号。

一、输入捕获 的基本原理

假如有一个从低电压到高电压变化的外部信号,当检测到信号发生变化的时候,计数器CNT的值就会被拍照保存到CCR寄存器中,然后在读取CCR寄存器里面的值,这样我们就知道输入信号在何时发生变化的了,这就是输入捕获的基本原理。

输入捕获也就是捕捉信号变化的时间点,并且保存。

例子:用输入捕获测量脉冲的宽度。

一个脉冲宽度有一个上升沿和一个下降沿。我们让定时器的通道一捕获上升沿,通道二捕获下降沿。首先,闭合时基单元的开关来启动定时器,在启动后CNT的值会递增,加入在递增到4时捕获到上升沿,4这个值会被拍照保存到CCR1中,在CNT = 7时捕获到下降沿,7这个值会被拍照保存到CCR2中,因此脉冲宽度 = (CCR2 - CCR1) *分辨率。分辨率 = CNT每跳一次所需要的时间。

二、其他细节

将画红线的这部分放大就得到了如下图

具体结构如下

以通道一为例,分为四个阶段

首先外部信号从CH1输入,输入滤波滤除输入信号所带的毛刺,从而在节点2得到纯正的信号。

在阶段二,有上升沿脉冲和下降沿脉冲,上升沿脉冲是每检测到一个上升沿就发送一个脉冲,下降沿脉冲类似。

在阶段三,TRC代表从模式控制器,直接:信号来自于通道本身;间接:信号来自于对侧通道

在阶段四,进行分频,分频系数为1,2,4,8。比如在节点5每遇到一个上升沿会产生一个脉冲,那么经过分频之后在节点6需要每遇到两个上升沿才会产生一个脉冲。

在节点6产生的脉冲会触发一个CCx的事件,这个事件发生的时候CNT的值会被拍照保存到CCR寄存器中。这个时候我们只需要把CCR寄存器里面的值读出来,我们就知道信号发生变化的时间点了。全部过程如下图

用输入捕获测量脉冲的宽度的具体过程如下图:

相关推荐
喜欢你,还有大家7 分钟前
Linux笔记10——shell编程基础-4
linux·运维·服务器·笔记
神齐的小马10 分钟前
计算机网络学习笔记
笔记·学习·计算机网络
小郝 小郝20 分钟前
【51单片机】萌新持续学习中《矩阵 密码锁 点阵屏》
嵌入式硬件·学习·51单片机
胡萝卜3.043 分钟前
数据结构初阶:详解单链表(一)
数据结构·笔记·学习·单链表
猫猫的小茶馆2 小时前
【STM32】CubeMX(十三):RT-THREAD
stm32·单片机·嵌入式硬件·mcu·mongodb·51单片机·智能硬件
YJlio2 小时前
第17章|PowerShell 安全警报——高分学习笔记(运维实战向)
笔记·学习·安全
源远流长jerry3 小时前
STM32之DMA详解
linux·网络·c++·stm32·单片机·嵌入式硬件
牛亚肖3 小时前
plantsimulation知识点 RGV小车前端与后端区别
笔记
HAORChain4 小时前
Hyperledger Fabric官方中文教程-改进笔记(十四)-向通道中添加组织
笔记·区块链·fabric
专属熊熊先生4 小时前
Allegro17.4导出带有NET的PDF文档及组装样式图
笔记·嵌入式硬件·学习