【STM32嵌入式系统设计与开发拓展】——14_定时器之输入捕获

news2024/9/21 12:44:42

参考哔站:链接: 铁头山羊

一、微控制器的高级定时与控制功能集合

1、时基单元
2、输入捕获
3、输出比较
4、从模式控制器
5、高级定时器的输出控制
在这里插入图片描述

二、问题集合

1、什么是定时器
定时器是一种专门负责定时功能的片上外设GPI0AFI0EXTIUSART RCC I2C)
在这里插入图片描述
2、定时器基本结构框图
在这里插入图片描述
在这里插入图片描述

什么是通道?
在这里插入图片描述
在这里插入图片描述
CCRx:(Capture/Compare Register 捕获/比较寄存器

三、输入捕获

什么是输入捕获(就像通过获取通道的输入,进行拍照并存储到CCRx这个寄存器中)
在这里插入图片描述

拍照?
在这里插入图片描述
输入捕获的环节
1、输入滤波 ----> 边沿检测 ----> 信号选择 ---->分频
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
什么是输入滤波?
在这里插入图片描述
只有采集到一定次数的才能检测确定为高低电平,否则过滤掉
在这里插入图片描述
什么是边缘检测?
在这里插入图片描述

信号选择是什么?
在这里插入图片描述
分频是什么?
检测到N个信号变化拍一次照。
在这里插入图片描述
什么是CCx事件?
在这里插入图片描述

四、代码实现步骤

在这里插入图片描述

在这里插入图片描述

    /* TIM配置 */ 
    TIM_TimeBaseStructure.TIM_Period = arr;                          // 自动重装值 
    TIM_TimeBaseStructure.TIM_Prescaler = psc;                       // 时钟预分频器   
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;          // 时钟分频
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;      // 向上计数
    TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure);                  // 初始化TIM5输入捕获

在这里插入图片描述

    /* 输入捕获配置 */ 
    TIM5_ICInitStructure.TIM_Channel = TIM_Channel_1;                // IC1映射到TI1上
    TIM5_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Falling;    // 下降沿捕获
    TIM5_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; // 映射到TI1
    TIM5_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;	         // 不分频 
    TIM5_ICInitStructure.TIM_ICFilter = 0x00;                        // 不滤波
    TIM_ICInit(TIM5, &TIM5_ICInitStructure);	                       // 初始化TIM5输入捕获

    /* 允许中断 */
    TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,ENABLE);              // 允许更新中断、CC1IE捕获中断	
    
    /* 使能TIMx */
    TIM_Cmd(TIM5,ENABLE); 	

在这里插入图片描述

    /* NVIC 配置 */
    NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn;                  // 中断向量表为TIM5
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;        // 先占优先级2
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;               // 从优先级0
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                  // 使能中断
    NVIC_Init(&NVIC_InitStructure);                                  // 初始化NVIC

中断服务函数

在这里插入图片描述

步骤 1:检查是否成功捕获
通过 if((TIM5CH1_CAPTURE_STA&0X80)==0) ,若未成功捕获则继续。
例:如果 TIM5CH1_CAPTURE_STA 的值是 0011 0010 ,与 1000 0000 进行按位与运算的结果是 0 ,就表示捕获未成功。
如果 TIM5CH1_CAPTURE_STA 的值是 1011 0010 ,按位与运算结果不为 0 ,就表示捕获成功。

步骤 2:检查更新中断标志位
TIM_GetITStatus(TIM5,TIM_IT_Update)!= RESET 且已捕获低电平,进行后续处理。

if(TIM5CH1_CAPTURE_STA&0X40) // 如果已经捕获到低电平
如: TIM5CH1_CAPTURE_STA 的值是 0011 0010,与 0100 0000 按位与运算结果为 0,表明未捕获到低电平。
TIM5CH1_CAPTURE_STA 的值是 0111 0010,按位与运算结果不为 0,就表示已经捕获到低电平。

步骤 3:处理低电平持续情况
若低电平过长((TIM5CH1_CAPTURE_STA&0X3F)==0X3F),标记捕获成功并设捕获值最大;否则累加低电平时间。

步骤 4:检查捕获 1 事件
TIM_GetITStatus(TIM5, TIM_IT_CC1)!= RESET ,根据捕获沿情况处理。

步骤 5:处理已捕获上升沿
若已捕获上升沿和下降沿,标记捕获成功、记录值并设为下降沿捕获。

步骤 6:处理首次捕获下降沿
若首次捕获下降沿,进行初始化,包括清空状态和值、清计数器、标记下降沿并设为上升沿捕获。

步骤 7:清除中断标志位
通过 TIM_ClearITPendingBit(TIM5, TIM_IT_CC1|TIM_IT_Update) 清除标志位。

主函数实现

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2037442.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

飞越现实:3D可视化引领飞行体验新纪元

在浩瀚的蓝天之下,飞机以优雅的姿态划破长空,每一次起降、每一次盘旋,都是对速度与科技的完美诠释。而今,随着科技的飞速发展,我们不再仅仅满足于仰望天际的壮丽景象,而是能够借助先进的3D可视化技术&#…

JavaEE 第10节 线程池(Thread Pool)介绍

目录 一、线程池是什么 二、为什么线程池中取线程会比直接向操作系统申请来的高效? 三、JAVA标准库中的线程池 (1)类:ThreadPoolExecutor 1、int corePoolSize与int maximumPoolSize 2、long keepAlive和TimeUnit unit 3、Blo…

MySQL第6讲--DQL(数据查询语言)的基本操作之基本和条件查询

文章目录 前言DQL(数据查询语言)基本操作查询操作基本查询示例1:查询表格的name,age,并返回;示例2:查询表格中的所有字段;示例3:查询所有员工的工号并返回,起别名;示例4&…

人工智能在新药研发领域中发挥着至关重要的作用

本综述主要介绍机器学习和深度学习方法在药物发现领域的应用进展以及相关企业。 声明:本文为火石创造原创文章,欢迎个人转发分享,网站、公众号等转载需经授权。 本文选自《药学进展》2021年第7期,作者黄芳 1,杨红飞 1…

武汉流星汇聚:中国卖家亚马逊显威,供应链创新引领全球电商潮

在全球电商的浩瀚星空中,亚马逊无疑是最耀眼的那颗星,其庞大的用户基础、广泛的销售网络以及强大的品牌影响力,为无数商家提供了通往成功的快车道。而在这片充满机遇的蓝海中,中国卖家以其独特的优势,正逐渐成为一股不…

钢铁百科:SA572Gr60应用领域、SA572Gr60热处理状态、SA572Gr60常用规格

一、SA572Gr60材质与执行标准 SA572Gr60钢板是一种美标高强度低合金铌-钒结构钢板,执行标准为ASTM A572/A572M。此外,该钢板也符合ASME标准SA-572/SA-572M。 二、SA572Gr60化学成分 SA572Gr60钢板的主要化学成分包括: 碳C:0.16-…

haproxy高级功能及配置

目录 1.基于cookie的会话保持: 2.HAProxy状态页: 3.IP透传 1.基于cookie的会话保持: cookie value:为当前server指定cookie值,实现基于cookie的会话黏性,相对于基于 source 地址 hash 调度算法对客户端…

msgqueue.hpp队列模块

一.MsgQueue相关类介绍 二.MsgQueue类的实现 成员变量 MsgQueue 结构体用于描述一个消息队列的基本属性。 std::string _name; // 队列名称 bool _durable; // 队列是否持久化 bool _exclusive; // 队列是否独占 bool _auto_del; // 队列是否自动删除 google::pro…

版本控制基础理论

一、本地版本控制 在本地记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人使用,如RCS. 二、集中式版本控制(代表SVN) 所有的版本数据都保存在服务器上,协同开发者从…

在HTML中固定表格表头的简单方法

在HTML中,表格元素自身无法提供滚动以及固定表头的配置。借助第三方工具(如jQuery的表头固定插件)或者结合JavaScrip,是可以实现表格的表头固定的,除此之外,本文还想讨论一种更简单的方式来实现。 从思路上…

【初阶数据结构】详解顺序表(下)(顺序表的代码实现)

文章目录 前言1. 项目文件的配置1.1 顺序表的项目的文件配置(仅供参考) 2. 顺序表的代码实现2.1 SeqList.h:2.2 SeqList.c:2.2.1 顺序表初始化的代码实现:2.2.2 顺序表销毁的代码实现:2.2.3 顺序表尾插数据的代码实现:2.2.4 顺序表…

【国赛必看!】数学建模python基础教学及常用算法代码包分享

一、内容介绍 Python在各个编程语言中比较适合新手学习,Python解释器易于扩展,可以使用C、C或其他可以通过C调用的语言扩展新的功能和数据类型。 Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统…

opencv-python图像增强六:低光照增强

文章目录 一:简介二、低光照图像增强方案:三、算法实现步骤3.1 CLAHE直方图均衡化:3.2 伽马变换:3.3 对亮度通道做伽马变换 四:整体代码实现五,效果: 一:简介 低光照图像增强是一种…

Flink 常见问题汇总:反压积压,checkpoint报错,窗口计算,作业报错,无产出,流批不一致,调优等。

Flink 常见问题汇总 0 如何分析日志0.1作业内部重启异常, 作业正常运行0.2 作业内部重启, 但作业已经手动 kill 整个 yarn-application0.3 作业失败,整个 yarn application 结束运行 1 Flink 作业积压排查流程及解决思路1 反压原因2 反压的危…

Windows下搭建Telegraf+Influxdb+Grafana(详解一)

InfluxDB(时序数据库),常用使用场景:监控数据统计。 grafana,用作监控页面的前端展示。 telegraf,数据采集器。 所有的安装包都上传到网盘 链接: https://pan.baidu.com/s/1Lv6UnfueK7URx7emAatoYg 提取…

oracle 数据中lsnrctl 是干啥的

突然发现lsnrctl stop 之后,依然可以启动数据库 就感觉怪怪的,一直以为这个是数据库的守护进程,原来不是。。。。 lsnrctl 是 Oracle 监听器控制实用程序的命令行界面工具,用于管理 Oracle Net 服务监听器。监听器是 Oracle 网络…

map和set的应用

map、set 1. 序列式和关联式容器2.set和multiset2.1 构造2.2 迭代器2.3 修改 3. map和multimap3.1 map3.2. multimap 1. 序列式和关联式容器 序列式容器:比如:vector、list、deque、forward_list等,这些容器统称为序列式容器,因为…

Vue3+Echarts+饼图环形图

记得给容器宽高 <div id"leftChartguawang" style"height: 28vh"></div> 配置函数 const leftChartguawang () > {const chartBox echarts.init(document.getElementById(leftChartguawang))let datas [[{ name: 居民节能建筑, value…

SmartEDA电路仿真软件革新力作:重塑电子设计界,揭秘其爆红背后的秘密武器!

在这个日新月异的科技时代&#xff0c;每一场技术革新都是推动行业进步的强劲动力。而在电子设计领域&#xff0c;一款名为SmartEDA的电路仿真软件正以前所未有的姿态&#xff0c;颠覆传统设计模式&#xff0c;成为众多工程师和设计师争相追捧的新宠。今天&#xff0c;就让我们…