STM32——通用计时器

通用计时器框图

在这里插入图片描述

1.时钟源

1)内部时钟(CK_INT)
2)外部时钟模式 1:外部输入引脚(TIx),x=1,2(即只能来自于通道 1 或者通道 2)
3)外部时钟模式 2:外部触发输入(ETR)
4)内部触发输入(ITRx):使用一个定时器作为另一定时器的预分频器
在这里插入图片描述

1.1.外部时钟模式 1(TI1、TI2)

在这里插入图片描述
外部时钟源进入定时器的流程以通道2为例:
1)外部时钟源信号→IO→TIMx_CH1(或者 TIMx_CH2),其中,外部时钟模式 1 下,时钟源信号只能从 CH1 或者 CH2 输入到定时器,CH3 和 CH4 都是不可以的。
2)TI2 首先经过一个滤波器,由 ICF[3:0]位来设置滤波方式,也可以设置不使用滤波器。
3)接着经过边沿检测器,由 CC2P 位来设置检测的边沿,可以上升沿或者下降沿检测。
4)然后经过触发输入选择器,由 TS[4:0]位来选择 TRGI(触发输入信号)的来源。 TI1F_ED、TI1FP1 和 TI2FP2 三个触发输入信号(TRGI),
5)最后经过模式选择器,由 ECE 位和 SMS[2:0]位来选择定时器的时钟源。外部时钟模式 1,ECE 位置 0,SMS[2:0] = 111。
6)CK_PSC 需要经过定时器的预分频器分频后,最终就能到达计数器进行计数了。

1.2.外部时钟模式 2(ETR)

在这里插入图片描述
1)外部时钟源信号→IO→TIMx_ETR,需配置 IO 的复用功能,才能使IO 和定时器相连通
2)经过外部触发极性选择器,由 ETP 位来设置上升沿有效还是下降沿有效,选择下降沿有效的话,信号会经过反相器。
3)然后经过外部触发预分频器,由 ETPS[1:0]位来设置预分频系数,系数范围:1、2、4、8。
4)紧接着经过滤波器器,由 ETF[3:0]位来设置滤波方式,也可以设置不使用滤波器。fDTS 由TIMx_CR1 寄存器的 CKD 位设置。
5)从模式选择器,由 ECE 位置 0和 SMS[2:0]位来选择定时器的时钟源
6)CK_PSC 需要经过定时器的预分频器分频后,最终就能到达计数器进行计数了

1.3.内部触发输入(ITRx)

1)内部触发输入是使用一个定时器作为另一个定时器的预分频器,即实现定时器的级联。
在这里插入图片描述
TIM1 作为 TIM2 的预分频器,需要完成的配置步骤:
1,TIM1_CR2 寄存器的 MMS[2:0]位设置为 010,即 TIM1 的主模式选择为更新(选择更新事件作为触发输出 (TRGO))。
2.TIM2_SMCR 寄存器的 TS[2:0]位设置为 000,即使用 ITR1 作为内部触发。TS[2:0]位用于配置触发选择,除了 ITR1,还有其他的选择,
3.TIM2_SMCR 寄存器的 SMS[2:0]位设置为 111,即从模式控制器选择外部时钟模式 1。
4,TIM1 和 TIM2 的 CEN 位都要置 1,即启动计数器。
注意:最常用的是内部时钟

2 控制器

控制器包括:从模式控制器、编码器接口和触发控制器(TRGO)。从模式控制器可以控制计数器复位、启动、递增/递减、计数。

3 时基单元

时基单元包括:计数器寄存器(TIMx_CNT)、预分频器寄存器(TIMx_PSC)、自动重载寄存器(TIMx_ARR)。通用定时器的计数模式有三种:递增计数模式、递减计数模式和中心对齐模式。

4 输入捕获

在这里插入图片描述
测量输入信号的脉冲宽度、测量 PWM 输入信号的频率和占空比,一般先要设置输入捕获的边沿检测极性,通过上下升沿的检测来达到目的。
1)待测量信号到达 TIMx_CH1 后,这个待测量信号用 TI1 表示,TI1 首先经过一个滤波器,由 ICF[3:0]位来设置滤波方式,也可以设置不使用滤波器。fDTS由 TIMx_CR1 寄存器的 CKD 位设置。
2)接着经过边沿检测器,由 CC1P 位来设置检测的边沿,可以上升沿或者下降沿检测。CC1NP是配置互补通道的边沿检测的,在高级定时器才有,通用定时器没有。
3)然后经过输入捕获映射选择器,由 CC1S[1:0]位来选择把 IC1 映射到 TI1、TI2 还是 TRC。这里我们的待测量信号从通道 1 进来,所以选择 IC1 映射到 TI1 上即可
4)紧接着经过输入捕获 1 预分频器,由 ICPS[1:0]位来设置预分频系数,范围:1、2、4、8。
5)最后需要把 CC1E 位置 1,使能输入捕获,IC1PS 就是分频后的捕获信号

5输入捕获和输出比较公用部分

在这里插入图片描述
当上升沿到来时,IC1PS 信号就会触发输入捕获事件发生,计数器的值就会被锁存到捕获/比较影子寄存器里。

6 输出比较

在这里插入图片描述
1)首先程序员写 CCR1 寄存器,即写入比较值。这个比较值需要转移到对应的捕获/比较影子寄存器后才会真正生效
2)比较值转移到影子寄存器的条件
CCR1 不在写入操作期间、
CC1S[1:0] = 0 配置为输出、
OC1PE 位置0
3)当 CCR1 寄存器的值转移到其影子寄存器后,新的值就会和计数器的值进行比较
在这里插入图片描述

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

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

相关文章

ARCGIS PRO SDK 访问Geometry对象

一、Geometry常用对象 二、主要类 1、ReadOnlyPartCollection:Polyline 和 Polygon 使用的 ReadOnlySegmentCollection 部件的只读集合,属性成员:​ 名字描述Count获取 ICollection 中包含的元素数。TIEM获取位于指定索引处的元素。Spatial…

mac中excel条件格式找到每一列的最大值并标红

假设现在excel有A1:R24组数据,最终效果如下 先选择要处理数据的第一列,然后点击【条件格式】-【新建规则】 style选择【classic】以及【Use a formula to determine which cells to format】,输入规则【C3MAX(C$3:C$24)】 注意这里C$3前面没…

Rust开发⼲货集(1)--迭代器与消费器

本内容是对 Rust开发干货集[1] 的实践与扩展. iter() 不转移所有权 先简单解释下什么叫"转移所有权": 在 Rust 中,"转移所有权"(Ownership Transfer)是一种核心概念,它涉及变量和数据的所有权从一个实体转移…

3D视觉-结构光测量-线结构光测量

概述 线结构光测量中,由激光器射出的激光光束透过柱面透镜扩束,再经过准直,产生一束片状光。这片光束像刀刃一样横切在待测物体表面,因此线结构光法又被成为光切法。线结构光测量常采用二维面阵 CCD 作为接受器件,因此…

QT上位机开发(乘法计算小软件)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面一篇文章,我们学习了怎么创建qt的第一个工程,怎么用designer给qt修改界面。虽然我们到目前为止,还没有编写…

C#使用switch语句更改窗体颜色

目录 一、示例 二、生成 用switch多路选择语句及窗体的BackColor属性更改窗体的BackColor属性。该属性用于获取或设置控件的背景颜色。 可以使用Color结构的静态属性获取Color对象,如Color.Red;也可以使用Color结构的静态方法Color.FromArgb()&#xf…

Linux权限的基本理解

一:🚩Linux中的用户 1.1🥦用户的分类 🌟在Linux中用户可以被分为两种用户: 超级用户(root):可以在Linux系统中做各种事情而不被约束普通用户:只能做有限的事情被权限约束 在实际操作时超级用户的命令提示符为#,普通用户的命令提示符为$,可…

python观察图像的直流分量——冈萨雷斯数字图像处理

原理 在数字图像处理中,图像的直流分量(DC分量)是指图像中的平均亮度水平。这个概念源自于傅里叶变换,其中信号可以分解为多个频率成分。在这个上下文中,直流分量对应于频率为零的成分,即信号的平均值。 在…

CSS一个纯样式花里胡哨的动态渐变背景块

使用SASS或CSS纯样式花里胡哨的动态渐变背景块 鼠标放在小方块上会放大并挤压周围方块&#xff0c;背景颜色会动态改变。 效果如下 HTML结构 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"vie…

基于JWT的用户token验证

1. 基于session的用户验证 2. 基于token的用户身份验证 3. jwt jwt代码实现方式 1. 导包 <dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>3.18.2</version> </dependency> 2. 在登录…

Spring Data Redis对象缓存序列化问题

相信在项目中&#xff0c;你一定是经常使用 Redis &#xff0c;那么&#xff0c;你是怎么使用的呢&#xff1f;在使用时&#xff0c;有没有遇到同我一样&#xff0c;对象缓存序列化问题的呢&#xff1f;那么&#xff0c;你又是如何解决的呢&#xff1f; Redis 使用示例 添加依…

C++/CLI——1简介

C/CLI——1简介 如果你是.net程序员&#xff0c;不免会用到C/C写的库。对于简单的调用&#xff0c;可以直接使用DllImport来完成就可以&#xff0c;详情可参考C#调用C/C从零深入讲解。但是对于复杂的C类和对象&#xff0c;尤其是类似于OCC的大型C项目&#xff0c;DllImport可能…

初识大数据,一文掌握大数据必备知识文集(6)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

三子棋(c语言)

前言&#xff1a; 三子棋是一种民间传统游戏&#xff0c;又叫九宫棋、圈圈叉叉棋、一条龙、井字棋等。游戏规则是双方对战&#xff0c;双方依次在9宫格棋盘上摆放棋子&#xff0c;率先将自己的三个棋子走成一条线就视为胜利。但因棋盘太小&#xff0c;三子棋在很多时候会出现和…

Android Studio配置国内镜像源和HTTP代理/解决:Android Studio下载gradle速度慢的问题

&#xff08;方案一&#xff09;Android Studio配置国内镜像源和HTTP代理 一、配置国内镜像源/依赖库 1.1 打开项目的setting.gradle.kts文件 配置进去 pluginManagement {repositories {maven { urluri ("https://www.jitpack.io")}maven { urluri ("https:…

【Matlab】CNN卷积神经网络时序预测算法

资源下载&#xff1a; https://download.csdn.net/download/vvoennvv/88681558 一&#xff0c;概述 CNN&#xff08;Convolutional Neural Network&#xff0c;卷积神经网络&#xff09;是一种前馈神经网络&#xff0c;主要用于处理具有类似网格结构的数据&#xff0c;例如图像…

神经网络中的分位数回归和分位数损失

在使用机器学习构建预测模型时&#xff0c;我们不只是想知道“预测值(点预测)”&#xff0c;而是想知道“预测值落在某个范围内的可能性有多大(区间预测)”。例如当需要进行需求预测时&#xff0c;如果只储备最可能的需求预测量&#xff0c;那么缺货的概率非常的大。但是如果库…

【机器学习合集】深度生成模型 ->(个人学习记录笔记)

深度生成模型 深度生成模型基础 1. 监督学习与无监督学习 1.1 监督学习 定义 在真值标签Y的指导下&#xff0c;学习一个映射函数F&#xff0c;使得F(X)Y 判别模型 Discriminative Model&#xff0c;即判别式模型&#xff0c;又称为条件模型&#xff0c;或条件概率模型 生…

【Linux】chage命令使用

chage命令 chage用来更改linux用户密码到期信息&#xff0c;包括密码修改间隔最短、最长日期、密码失效时间等。 语法 chage [参数] 用户名 chage命令 -Linux手册页 选项及作用 执行令 &#xff1a; chage --help 执行命令结果 参数 -d, --lastday 最近日期 …

【Electron】webview 实现网页内嵌

实现效果&#xff1a; 当在输入框内输入某个网址后并点击button按钮 , 该网址内容就展示到下面 踩到的坑&#xff1a;之前通过web技术实现 iframe 标签内嵌会出现 同源策略&#xff0c;同时尝试过 vue.config.ts 内配置跨域项 那样确实 是实现啦 但不知道如何动态切换 tagert …