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寄存器里面的值读出来,我们就知道信号发生变化的时间点了。全部过程如下图

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

相关推荐
yoothey2 小时前
异常学习笔记:为什么自定义异常后还要 throw?
笔记·学习
sulikey2 小时前
数据库系统概论4 - 更新与视图 期末速成课笔记
数据库·笔记·考试·期末速成·数据库系统概论
望眼欲穿的程序猿2 小时前
Hello World
嵌入式硬件·rust
bkspiderx2 小时前
Windows DLL核心技术:深入理解__declspec(dllexport)与__declspec(dllimport)
windows·stm32·单片机·dllimport·dllexport·windows dll·__declspec
m0_547486663 小时前
《ARM Cortex-M4嵌入式应用技术——基于STM32F407、STM32CubeMX与Proteus》全套PPT课件
arm开发·stm32·proteus
ACP广源盛139246256733 小时前
GSV5600@ACP#多接口协议转换芯片,物理 AI 便携终端的互联核心
大数据·人工智能·分布式·嵌入式硬件·spark
لا معنى له3 小时前
NeoVerse: Enhancing 4D World Model with in-the-wild Monocular Videos
人工智能·笔记·机器学习·语言模型
黄毛火烧雪下3 小时前
Java 基础笔记:文件、递归与字符编码
java·开发语言·笔记
学计算机的计算基3 小时前
链表算法上篇:LeetCode 206/234/141/142/160/21 题解与易错点
java·笔记·算法·链表
望眼欲穿的程序猿3 小时前
ESP32-S3 定时器中断
单片机·嵌入式硬件