【STM32】定时器输入捕获
STM32 定时器输入捕获功能笔记
一、什么是输入捕获(Input Capture)
输入捕获是利用定时器的输入通道,在检测到信号电平变化(如上升沿或下降沿)时,立即将当前计数器的值捕获并保存到捕获寄存器(CCR)中。这一过程由硬件完成,不会受程序运行延迟影响,可用于精确测量信号的时间特性。
典型应用场景:测量脉冲宽度、频率、信号周期等。
二、输入捕获的基本原理
-
STM32 的通用定时器和高级定时器都支持输入捕获功能。
-
每个输入通道(TIx)都对应一个捕获寄存器 CCRx。
-
捕获过程:
TIx → 滤波器 → 边沿检测 → 捕获事件 → CCRx记录当前CNT值
当配置为上升沿捕获时:
→ 信号从低跳高时,CCRx 记录当前定时器 CNT 的值。
当配置为下降沿捕获时:
→ 信号从高跳低时,CCRx 同样记录 CNT 值。
📌 一个通道只能设置为上升沿或下降沿捕获,不能同时捕获两个。
三、直接模式与间接模式(重点)
输入捕获支持 直接模式 和 间接模式,用于灵活地测量信号宽度或周期。
模式 | 捕获通道 | 检测通道 | 用途举例 |
---|---|---|---|
直接模式 | CCR1 记录 TI1FP1 的边沿 | 用于周期或频率测量 | |
间接模式 | CCR1 记录 TI2FP1 的边沿 | 用于测量高/低电平宽度(PWM输入) |
⚠️ TI1/TI2 是一对可互相借用输入的通道,TI3/TI4 亦同理。
例如 CCR1 可以捕获 TI2(间接模式)输入的边沿,而不是 TI1。
示例说明:
-
PWM输入测量:
-
CCR1 配置为捕获上升沿(周期起点)
-
CCR2 配置为捕获下降沿(占空比终点)
-
得到的两次捕获值之差即可算出高电平持续时间或周期
-
四、通道映射说明
TI1 --> TI1FP1 → 捕获寄存器1(CCR1)
TI2 --> TI2FP2 → 捕获寄存器2(CCR2)
TI1 --> TI1FP2 → 捕获寄存器2(间接模式)
TI2 --> TI2FP1 → 捕获寄存器1(间接模式)TI3、TI4同理,支持直接与间接映射
五、CubeMX 设置步骤(以 TIM2 CH1 CH2 为例)
1.选择定时器 TIM2
2.选择 Channel 1 → Input Capture Direct Mode
(上升沿)
3.选择 Channel 2 → Input Capture Indirect Mode
(下降沿)
4.设置输入极性(上升沿/下降沿)
5.设置采样频率与滤波器(一般默认即可)
6.勾选 TIM2 global interrupt
7.生成代码并编辑中断回调函数
六、HAL库相关函数与代码示例
1. 启动捕获:
HAL_TIM_IC_Start_IT(&htim2, TIM_CHANNEL_1); // 启动通道1输入捕获(中断方式)
HAL_TIM_IC_Start_IT(&htim2, TIM_CHANNEL_2); // 启动通道2输入捕获
2. 中断回调处理:
uint32_t capture1 = 0, capture2 = 0, pulse_width = 0;void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1){capture1 = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_1); // 上升沿时间}else if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_2){capture2 = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_2); // 下降沿时间if(capture2 > capture1)pulse_width = capture2 - capture1;elsepulse_width = (0xFFFF - capture1 + capture2); // 溢出处理}
}
1;elsepulse_width = (0xFFFF - capture1 + capture2); // 溢出处理}
}
相关文章:
【STM32】定时器输入捕获
STM32 定时器输入捕获功能笔记 一、什么是输入捕获(Input Capture) 输入捕获是利用定时器的输入通道,在检测到信号电平变化(如上升沿或下降沿)时,立即将当前计数器的值捕获并保存到捕获寄存器(…...
spring-ai集成langfuse
1、pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.…...
SALOME源码分析: ParaVis
本文分析SALOME中ParaVis模块。 注1:限于研究水平,分析难免不当,欢迎批评指正。注2:文章内容会不定期更新。 一、核心组件 二、关键流程 三、FAQs 网络资料 SALOME Scientific visualisationPARAVIS Module - Architecture …...
Ubuntu 安装 MySQL8
在 Ubuntu 下安装 MySQL 服务,推荐使用 apt install 官方的 APT 仓库安装方式,这种方式最安全、最稳定、能自动处理依赖关系,也支持后续升级。不推荐在官网手动下载 .deb 包的方式。 配置 Ubuntu 服务器 1. 确认 Ubuntu 系统版本 使用如下命…...
MATLAB图像加密案例
下面是一个使用 MATLAB 编写的简单图像块置乱加密/解密程序,主要利用了函数来组织代码。 这个程序通过将图像分割成小块,然后根据一个密钥(用于随机数生成器种子)打乱这些块的顺序来实现加密。解密过程则使用相同的密钥恢复原始块顺序。 核心思想: 分块: 将图像划分为 …...
同构字符串(简单)
新建两个哈希表,构建s到t中的字母的映射以及t到s中的字母的映射。 class Solution {public boolean isIsomorphic(String s, String t) {Map<Character,Character> s2tnew HashMap<Character,Character>();Map<Character,Character> t2snew Hash…...
红米Note9 4G版拆开后盖操作细节
先把sim卡槽整个拔出 然后如下图做试,4个箭头的位置塞塑料片或者指甲插入,弄开,然后从图中右侧抠开(左侧不行,有排线连着后面手机主板) 如果不按照这种办法,会把后盖很多地方抠烂...
Qt通过QXlsx库文件写入到excl文件,读取excl文件
第一:下载QXlsx库文件 https://download.csdn.net/download/qq_32663053/90739425 第二:在Qt项目中引入QXlsx库,需要把QXlsx库文件放在项目文件夹下 第三:将tableview中的数据存入到excl文件 代码: void MainWindow…...
ESP32 在Platform Arduino平台驱动外部PSAM,进行内存管理
一,基本介绍 本文中主要介绍ESP32、ESP32S3系列单片机,基于Vscode Platform Arduino和Arduino框架下如何使用外部PSAM,以及必要的API调用函数进行内存分配和管理。 使用前提是开发板有外部PSRAM。 二,平台配置 2.1 Arduino平台 …...
【AI论文】WebThinker:赋予大型推理模型深度研究能力
摘要:大型推理模型(LRMs),如OpenAI-o1和DeepSeek-R1,展示了令人印象深刻的长期推理能力。 然而,他们对静态内部知识的依赖限制了他们在复杂的知识密集型任务上的表现,并阻碍了他们生成需要综合各…...
Python爬虫基础总结
Python爬虫基础总结 一、爬虫概述 1.1 什么是爬虫 网络爬虫(Web Crawler)是一种自动浏览万维网的程序或脚本,它按照一定的规则,自动抓取互联网上的信息并存储到本地数据库中。 1.2 爬虫工作流程 URL管理器࿱…...
如何构建跨平台可复用的业务逻辑层(Web、App、小程序)
从传统的Web应用到移动端的App,再到近年来快速崛起的小程序,用户的触点变得异常分散且多样化。这种多端并存的现状一方面为企业提供了更广阔的市场机会,另一方面也对开发团队提出了更高的要求:如何在不同平台间实现高效开发、降低…...
本地大模型编程实战(32)用websocket显示大模型的流式输出
在与 LLM(大语言模型) 对话时,如果每次都等 LLM 处理完毕再返回给客户端,会显得比较卡顿,不友好。如何能够像主流的AI平台那样:可以一点一点吐出字符呢? 本文将模仿后端流式输出文字,前端一块一块的显示文字…...
MySQL数据库上篇
#作者:允砸儿 #日期:乙巳青蛇年 四月初五 笔者好久没有更新。今天来写一下MySQL数据库的内容还是老样子分为上中下三篇来写,话不多说咱们直接进入正题。 什么是数据库 数据库是统一管理的、长期储存在计算机内非仍、有组织的相关数据集合…...
Webug4.0靶场通关笔记13- 第22关越权修改密码
目录 第22关 越权修改密码 1.打开靶场 2.源码分析 3.越权修改密码 (1)获取渗透账号 (2)越权修改aaaaa账号的密码 (3)修改aaaaa用户密码渗透成功 (4)水平越权修改mooyuan账号…...
Python 基于 lstm,cnn 算法的网络舆情可视化系统
大家好,我是Python徐师兄,一个有着7年大厂经验的程序员,也是一名热衷于分享干货的技术爱好者。平时我在 CSDN、掘金、华为云、阿里云和 InfoQ 等平台分享我的心得体会。 🍅文末获取源码联系🍅 2025年最全的计算机软件毕…...
【免费】2007-2021年上市公司对外投资数据
2007-2021年上市公司对外投资数据 1、时间:2007-2021年 2、指标:股票代码、统计截止日期、货币编码、货币类型、投资事件类型编码、投资事件类型、报告期末投资金额总计、占报告期对外投资总额的比例(%) 3、范围:上市公司 4、来源&#x…...
每天学一个 Linux 命令(33):uniq
每天学一个 Linux 命令(33):uniq 命令简介 uniq 是 Linux 系统中一个非常实用的文本处理命令,全称为 “unique”。它主要用于从已排序的文本文件中检测、过滤或统计重复的行。该命令通常与 sort 命令配合使用,是 Shell 脚本编程和日常文本处理中的常用工具之一。 命令语…...
WebRtc11:SDP详解
SDP规范 会话层(全局)媒体层(局部) 会话层 会话的名称和目的会话的存活时间会话中包含多个媒体信息 SDP媒体信息 媒体格式传输协议传输IP和端口媒体负载类型 SDP格式 由多个< type > < value > 组成一个会话级…...
51单片机驱动 矩阵键盘
连接方式为8-1顺序连接P1端口P10-P17,代码返回键值 0-15. // 矩阵键盘扫描 uchar key_scan(void) {u8 key_value 255;u8 row, col;// 设置P1.0-P1.3为输出,P1.4-P1.7为输入P1 0xF0; // 1111 0000if((P1 & 0xF0) ! 0xF0) { // 有按键按下delay_m…...
解决The‘InnoDB’feature is disabled; you need MySQL built with ‘InnoDB’ to have it
出现如下语句:The ‘InnoDB feature is disabled; you need MySQL built with ‘InnoDB to have it working; 是mysql配置文件禁掉了这个选项! 关闭mysql数据库 在mysql的安装目录中找到my.ini文件 找到skip-innodb,在前面加上#号…...
大模型压缩技术详解(2025最新进展)
在2025年的AI技术格局中,像DeepSeek这样的顶尖模型开源已成为现实。那是否存在一种可行路径,让企业能够使用专注于自身领域的强力AI模型,同时大幅降低部署成本,仅需一张普通的4090显卡?本文将深入探讨两种主流的模型压…...
第 5 篇:红黑树:工程实践中的平衡大师
上一篇我们探讨了为何有序表需要“平衡”机制来保证 O(log N) 的稳定性能。现在,我们要认识一位在实际工程中应用最广泛、久经考验的“平衡大师”——红黑树 (Red-Black Tree)。 如果你用过 Java 的 TreeMap 或 TreeSet,或者 C STL 中的 map 或 s…...
spring-- 事务失效原因及多线程事务失效解决方案
事务失效原因 类的自调用:直接调用本类的方法,没有通过代理对象来调用方法,代理对象内部的事务拦截器不会拦截到这次行为。则不可能开启事务 使用私有方法:因为spring的事务管理是基于AOP实现的,AOP代理无法拦截目标对…...
MLPerf基准测试工具链定制开发指南:构建领域特异性评估指标的实践方法
引言:基准测试的领域适配困局 MLPerf作为机器学习性能评估的"黄金标准",其通用基准集在实际科研中常面临领域适配鸿沟:医疗影像任务的Dice系数缺失、NLP场景的困惑度指标偏差等问题普遍存在。本文通过逆向工程MLPerf v3.1工具…...
深度理解linux系统—— 进程切换和调度
前言: 了解了进程的状态和进程的优先级,我们现在来看进程是如何被CPU调度执行的。 在单CPU的系统在,程序是并发执行的;也就是说在一段时间呢,进程是轮番执行的; 这也是说一个进程在运行时不会一直占用CPU直…...
【凑修电脑的小记录】vscode打不开
想把vscode的数据和环境从c盘移到d盘 大概操作和这篇里差不多 修改『Visual Studio Code(VS Code)』插件默认安装路径的方法 - 且行且思 - 博客园 在原地址保留了个指向新地址的链接文件。 重新安装vscode后双击 管理员身份运行均无法打开࿰…...
2025五一数学建模竞赛A题完整分析论文(共45页)(含模型、可运行代码、数据)
2025年五一数学建模竞赛A题完整分析论文 摘 要 一、问题分析 二、问题重述 三、模型假设 四、符号定义 五、 模型建立与求解 5.1问题1 5.1.1问题1思路分析 5.1.2问题1模型建立 5.1.3问题1参考代码 5.1.4问题1求解结果 5.2问题2 5.2.1问题2思路分析 …...
从0搭建Transformer
0. 架构总览: 1. 位置编码模块: import torch import torch.nn as nn import mathclass PositonalEncoding(nn.Module):def __init__ (self, d_model, dropout, max_len5000):super(PositionalEncoding, self).__init__()self.dropout nn.Dropout(pdrop…...
生物化学笔记:神经生物学概论07 躯体感受器 传入方式 自主神经系统
功能各异的躯体感受器 解释张力: 形形色色的传入方式 脑中的“倒立小人” 自主神经系统...
滑动窗口leetcode 209和76
一、leetcode 209. 长度最小的子数组 代码: class Solution { public:int minSubArrayLen(int target, vector<int>& nums) {int n nums.size();int left 0;int sum 0;int res 100001;for(int right 0;right <n;right){sum nums[right];while(s…...
FPGA:介绍几款高速ADC及其接口形式
本文介绍了几款采样率至少为500Msps的高速ADC芯片,并详细介绍ADC与FPGA之间的常见接口形式,以及FPGA如何正确读取高速ADC的输出数据。以下内容基于当前的高速ADC技术趋势和常见的工程实践。 一、推荐的高速ADC芯片(采样率≥500Msps࿰…...
未使用连接池或配置不当的性能陷阱与优化实践
目录 前言一、传统连接管理的性能缺陷与风险1. 未使用连接池的致命代价2. 连接池配置不当的典型表现 二、高性能连接池选型与核心参数优化1. HikariCP:零开销连接池的标杆2. Druid:功能完备的国产连接池 三、连接池性能调优的黄金法则1. 科学设定最大连接…...
亚马逊云服务器性能深度优化方案(2025版)
亚马逊云服务器性能深度优化方案(2025版) 一、计算架构全面升级 1. 新一代AI算力引擎 • Trn2 UltraServer实例:搭载64颗第二代Trainium芯片,单节点FP8算力达83.2 PFlops,支持千亿参数大模型训练,训…...
【IPMV】图像处理与机器视觉:Lec9 Laplace Blending 拉普拉斯混合
【IPMV】图像处理与机器视觉 本系列为2025年同济大学自动化专业**图像处理与机器视觉**课程笔记 Lecturer: Rui Fan、Yanchao Dong Lec0 Course Description Lec3 Perspective Transformation Lec7 Image Filtering Lec8 Image Pyramid Lec9 Laplace Blending 持续更新中 …...
【东枫电子】AMD / Xilinx Alveo™ UL3422 加速器
AMD / Xilinx Alveo™ UL3422 加速器 AMD / Xilinx Alveo™ UL3422 加速器提供超低延迟网络和灵活应变的硬件,支持纳秒级交易策略。AMD Virtex™ UltraScale™ VU2P FPGA 为 AMD / Xilinx Alveo UL3422 加速器提供强大的支持。该加速器采用延迟优化的收发器技术&am…...
Linux架构篇、第一章_03安装部署nginx
Linux_基础篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:安装部署nginx 版本号: 1.0,0 作者: 老王要学习 日期: 2025.05.02 适用环境: Centos7 文档说明 本文档聚焦于 CentOS 7 环境下 Nginx 的安装部…...
Semantic Kernel 快速入门
文章目录 Semantic Kernel 快速入门一、什么是 Semantic Kernel?1.1 核心特性 二、安装和配置2.1 安装 .NET SDK2.2 创建新的 .NET 项目2.3 安装 Semantic Kernel 三、快速入门3.1 导入依赖包3.2 添加 AI 服务3.3 添加企业服务3.4 生成内核并检索服务3.5 添加插件创…...
MySQL进阶(一)
一、存储引擎 1. MySQL体系结构 连接层: 最上层是一些客户端和链接服务,主要完成一些类似于连接处理、授权认证、及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作权限 服务层: 第二层架构主要完成大多数的核心服务…...
ThreadLocal理解
1.thread是线程,threadLocal是对象? 在 Java 中: Thread 是线程类,其实例代表线程:Thread 类用于创建和管理线程,每个线程都是 Thread 类的一个实例,用于执行具体的任务,例如&…...
PyTorch、Flash-Attn、Transformers与Triton技术全景解析+环境包
PyTorch、Flash-Attn、Transformers与Triton技术全景解析 包好难找 这里是下载链接 添加链接描述 摘要 本文系统性地介绍了深度学习领域的四大关键技术框架:PyTorch、Flash-Attn、Hugging Face Transformers和Triton,分别从核心特性、技术优势、应用场…...
mindyolo填坑
1、按照gitee上的文档跑预测代码,跑不通 更改: 将predict.py复制到跟目录。如果是cpu(本地测试比较常见),那么正确的命令行是: python predict.py --device_targetCPU --config ./configs/yolov7/yolov7.…...
【C++】平衡二叉树(AVL树)迭代版
目录 前言: 一:判断一棵树是否为平衡二叉树 二:明确思路 1.为什么使用平衡二叉树 2.旋转 2.1 左旋 2.2 右旋 3.冲突节点 4.平衡因子 5.双旋 5.1 左右双旋(LR) 5.2 右左双旋(RL) 6.平衡因子的更新 7.冲突节点问题补充 三&…...
双链表详解
一、双向链表介绍 二、实现双向链表 1.定义双向链表的结构 2.双向链表的初始化 3.双向链表的尾插 4.双向链表的头插 5.双向链表的打印 6.双向链表的尾删 7.双向链表的头删 8.查找指定位置的数据 9.在指定位置之后插入数据 10.删除指定位置的数据 11.链表的销毁 三、…...
6.9.单源最短路径问题-BFS算法
一.前言: 问题1: 以上述图片为例,比如从G港到Y城,可以是G港->R城->Y城,也可以是G港->P城->Y城等,有很多条路径都可以实现从G港到Y城,但要从中找出G港到Y城距离最短的那一条路径&am…...
react js 查看字体效果
起因, 目的: 想查看某个字体,对中英文的支持情况。 效果图: 完整项目见这里, 需要积分下载,不然的话,显得太水了。 过程: AI 对话, 生成代码。我检查运行, 来回修改。写个博客,…...
GZIPInputStream 类详解
GZIPInputStream 类详解 GZIPInputStream 是 Java 中用于解压缩 GZIP 格式数据的流类,属于 java.util.zip 包。它是 InflaterInputStream 的子类,专门处理 GZIP 压缩格式(.gz 文件)。 1. 核心功能 解压 GZIP 格式数据(RFC 1952 标准)自动处理 GZIP 头尾信息(校验和、时…...
数字智慧方案6206丨智慧园区大数据整体解决方案(45页PPT)(文末有下载方式)
资料解读:智慧园区大数据整体解决方案 详细资料请看本解读文章的最后内容。 在数字化快速发展的当下,智慧园区成为推动产业升级和城市发展的关键力量。这份智慧园区大数据整体解决方案,融合前沿技术与创新理念,为园区的高效管理、…...
Linux系统常用命令、标准C库函数和系统调用
目录 一、常用命令 env echo $name 键值 export name unset name gcc -c xxx.c ar 命令 ar -r libxxx.a xxx1.o xxx2.o gcc -c -fpic xxx.c gcc -shared -fpic xxx1.c xxx2.c -o libxxx.so kill [-信号] PID kill -l 软链接:ln -s xxx yyy 硬链接&…...
【Linux】基础指令(2)
man linux中有很多指令,我们不可能全部记住,man是linux/unix系统中的手册页指令,当我们遇到不熟悉的命令可以用man来查看命令,函数,配置文件的详细使用说明。 man手册分为多个章节,详情如下: …...