STM32高级控制定时器(STM32F103):TIM1和TIM8介绍

目录

概述

1 认识TIM1和TIM8

2 TIM1和TIM8的特性

3 TIM1和TIM6时基和分频

3.1 时基单元

3.2 预分频

3.3 时基和分频相关寄存器

3.3.1TIMx_CR1

3.3.2 TIMx_PSC


概述

本文主要介绍STM32高级定时器TIM1和TIM8的功能,还介绍了与之相关的寄存器的配置参数。包括:分频计数,时间基准等内容。

1 认识TIM1和TIM8

高级控制定时器(TIM1和TIM8)由一个16位自动重新加载计数器驱动通过可编程预分频器。它可以用于多种功能:

1.  测量输入的脉冲长度信号(输入捕获)

2.  生成输出波形(输出比较,PWM、PWM等)

3.  死区插入的互补PWM

脉冲长度和波形周期可以从几微秒调制到几微秒毫秒。可通过使用定时器预分频器和RCC时钟控制器预分频器来实现脉冲长度和波形周期的参数设置。高级控制(TIM1和TIM8)和通用(TIMx)定时器完全独立,不共享任何资源。

2 TIM1和TIM8的特性

索引功能描述
1

16位计数功能:

1)加计数

2)减计数

3)加/减计数

4)自动重载计数

216位可编程预分频器,允许对计数器时钟进行分频(也可“动态”) 频率乘以1和65536之间的任何因子。
3

最大实现4个独立通道工作:

1)输入捕获

2)输出比较

3)自动输出PWM( 边缘和中心对齐模式 )

4)单脉冲模式输出

4具有可编程死区时间的互补输出
5用外部信号控制定时器并互连的同步电路 几个定时器在一起。
6重复计数器,仅在给定周期数后更新定时器寄存器 计数器。
7断开输入,使计时器的输出信号处于重置状态或已知状态
8

以下事件的中断/DMA生成:

1)更新:计数器上溢/下溢,计数器初始化(通过软件或内部/外部触发器)

2)触发器事件(计数器启动、停止、初始化或通过内部/外部触发器计数)

3)输入捕获 输出比较 打断输入

9支持增量(正交)编码器和霍尔传感器电路进行定位目的
10外部时钟或逐周期电流管理的触发器输入

3 TIM1和TIM6时基和分频

3.1 时基单元

可编程高级控制定时器的主块是一个16位计数器,其相关的自动重新加载寄存器。计数器可以向上计数、向下计数或同时向上计数和向下计数。这个计数器时钟可以被预分频器分频。

计数器、自动重新加载寄存器和预分频器寄存器可以通过写入或读取软件即使在计数器运行时也是如此。

时基单位包括:

1)计数寄存器:TIMx_CNT

2)分频寄存器:TIMx_PSC

3)自动重载寄存器:TIMx_ARR

4)重复计数寄存器:TIMx_RCR

自动重新加载寄存器已预加载。写入或读取自动重新加载寄存器访问预加载寄存器。预加载寄存器的内容被传输到影子寄存器永久或在每次更新事件(UEV)时,取决于自动重新加载TIMx_CR1寄存器中的预加载使能位(ARPE)。当计数器达到溢出(或向下计数时下溢),并且如果TIMx_CR1寄存器中的UDIS位等于0 。它也可以由软件生成。更新的生成事件将针对每个配置进行详细叙述。 

计数器由预分频器输出CK_CNT计时,仅当TIMx_CR1寄存器中的计数器启用位(CEN)已设置(另请参阅从属模式控制器描述以获得有关计数器启用的更多详细信息)。

注意: 

在TIMx_CR1中设置CEN位后,计数器开始计数1个时钟周期登记。

3.2 预分频

预分频器可以将计数器时钟频率除以1和65536之间的任何因子。它基于通过16位寄存器(在TIMx_PSC寄存器中)控制的16位计数器。它可以在缓冲该控制寄存器时进行动态更改。新的预分频器比率为在下一次更新事件中考虑。

几个动态改变计数器值的实例:

1)预分频器分频从1变为2的计数器时序图

2)预分频器分频从1变为4的计数器时序图

3.3 时基和分频相关寄存器

3.3.1TIMx_CR1

TIM1 and TIM8 control register 1 (TIMx_CR1)
Address offset: 0x00
Reset value: 0x0000
 

 参数介绍

Bits 9:8 CKD[1:0]: 时钟分频

该比特字段指示定时器时钟(CK_INT)频率与死区时间发生器和数字滤波器使用的死区时间和采样时钟(tDTS)(ETR、TIx):
00: tDTS=tCK_INT
01: tDTS=2*tCK_INT
10: tDTS=4*tCK_INT
11: Reserved, do not program this value
 

Bit 7 ARPE::自动重载使能

0: TIMx_ARR register is not buffered
1: TIMx_ARR register is buffered
 

Bits 6:5 CMS[1:0]: 居中对齐模式选择

00:边缘对齐模式。计数器根据方向位向上或向下计数(目录)。

01:居中对齐模式1。计数器交替向上和向下计数。输出比较设置输出中配置的通道的中断标志(TIMx_CCMRx寄存器中的CCxS=00)只有在计数器倒计时时。

10:居中对齐模式2。计数器交替向上和向下计数。输出比较设置输出中配置的通道的中断标志(TIMx_CCMRx寄存器中的CCxS=00)只有当计数器正在计数时。

11:居中对齐模式3。计数器交替向上和向下计数。输出比较设置输出中配置的通道的中断标志(TIMx_CCMRx寄存器中的CCxS=00)无论是在计数器向上计数还是向下计数时。

Bit 4 DIR: 计数方向
0: 增计数

1:减计数

Bit 3 OPM: 单脉冲模式

0: 计数器未在更新事件中停止

1:计数器在下一次更新事件时停止计数(清除位CEN)

Bit 2 URS: 更新请求源

该位由软件设置和清除,以选择UEV事件源。

0:如果启用,以下任何事件都会生成更新中断或DMA请求。这些事件可以是:

     1)计数器上溢/下溢

     2)设置UG位

     3)通过从属模式控制器更新生成

1:只有计数器上溢/下溢才会生成更新中断或DMA请求,如果启用。

Bit 1 UDIS: 禁止更新

该位由软件设置和清除,以启用/禁用UEV事件生成。

0:UEV已启用。更新(UEV)事件由以下事件之一生成:

     1)计数器上溢/下溢

     2)设置UG位

     3)通过从属模式控制器更新生成

1:UEV已禁用。未生成Update事件,影子寄存器保留其值(ARR、PSC、CCRx)。然而,如果UG位为设置,或者如果从从属模式控制器接收到硬件重置。

Bit 0 CEN: 计数使能

0: 计数失能

1:计数使能

3.3.2 TIMx_PSC

TIM1 and TIM8 prescaler (TIMx_PSC)
Address offset: 0x28
Reset value: 0x0000

 

参数介绍

 Bits 15:0 PSC[15:0]: 分频值

计数器时钟频率(CK_CNT)等于fCK_PSC/(PSC[15:0]+1)。PSC包含在每次更新事件时要加载到活动预分频器寄存器中的值(包括通过TIMx_EGR寄存器的UG位或通过在“重置模式”下配置时触发控制器)。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何在3天内开发一个鸿蒙app

华为鸿蒙操作系统(HarmonyOS)自2.0版本正式上线以来,在短时间内就部署超过了2亿台设备,纵观全球操作系统的发展史,也是十分罕见的。与其他手机操作系统不同,HarmonyOS自诞生之日起,就是一款面向…

layui一个页面多个table显示时工具栏被下方的table遮挡

记录:layui一个页面多个table显示时工具栏被下方的table遮挡 css代码: [lay-idcurrentTableId] .layui-table-tool {position: relative;z-index: 9999;width: 100%;min-height: 50px;line-height: 30px;padding: 10px 15px;border-width: 0;border-bot…

c#中上传超过30mb的文件,接口一直报404,小于30mb的却可以上传成功

在一次前端实现上传视频文件时,超过30mb的文件上传,访问接口一直报404,但是在Swagger中直接访问接口确是正常的,且在后端控制器中添加了限制特性,如下 但是却仍然报404,在apifox中请求接口也是报404, 网上说: 在ASP.NET Core中,配置请求过来的文件上传的大小限制通常…

jfif格式怎么转换成jpg?关于将jfif转成jpg的几种方法

jfif格式怎么转换成jpg?JFIF格式是一种常见的图像文件格式,通常用于存储数字照片。然而,在某些情况下,你可能需要将JFIF格式转换为JPG格式。JPG格式是一种广泛使用的图像格式,它被支持和接受的程度比JFIF更高。PNG是一…

C++迈向精通:当我尝试修改虚函数表

尝试修改虚函数表 本期纯整活儿好吧!!!! 初衷 有一天我突然开始好奇虚函数表是否真的存在,于是我开始想是否能够从C中查看或者调用虚函数表中的内容。,于是有了下面的操作。 操作过程 起初我并没有思路…

加入牛导研究团队|普通高校老师获得香港理工大学访问学者邀请函

随着国内高校高层次人才引进机制的日益完善,本校教师也倍感竞争压力日趋激烈,而出国访学,加入牛导的科研团队,发表高质量的论文,是提升自己学术水平的有效途径。本案例中的O老师就是借助知识人网的帮助,实现…

docker-compose harbor 2.11

harbor 前言 “Harbor” 是一个用于管理容器镜像的开源仓库项目。由 VMware 开发和维护,Harbor 提供一个企业级的 Docker 镜像仓库,具有丰富的功能,包括: 镜像管理:提供存储和分发 Docker 镜像的能力。安全性:支持镜像签名和漏洞扫描,确保镜像的安全性。身份认证:集成…

SECS/GEM 底层协议解析

SECS是什么? SEMI电子半导体联盟,为实现设备与工厂系统的快速对接数据,状态,配方,程序的标准化协议,SECS具有多个版本,本文主要介绍E5协议 HSMS通信方式,设备端的处理流程(Passive模式)。 SECS关键字 Host 主机一般指向工厂控制系统EQP 单机设备Active 在Tcp通信…

SAP 价格金额信息控制

1)migo / mb51/mb51/mb59 关于价格和金额的显示,需要权限控制,当权限对象F_BKPF_BUK,检查对应【公司代码】 和 ACTVT有03’的权限,如果没有03的权限,对应行的价格和金额显示为空 关于价格和金额的显示,需要权限控制&a…

Java——重载

一、重载(Overload) 1、重载是什么 方法重载(Method Overloading)是Java中实现多态的一种方式。它允许在同一个类中定义多个同名的方法,只要这些方法的参数列表不同。这些不同的参数列表可以通过不同的参数类型、参数…

【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版12(附带项目源码)

最终效果 系列导航 文章目录 最终效果系列导航前言UI框架先绘制一些常用UI面板,设置为预制件提示弹窗用户列表菜单输入框弹窗 创建各个面板的脚本控制代码控制菜单界面按钮事件 源码结束语 前言 本节主要实现UI框架调用不同的面板界面 UI框架 不懂UI框架的设计思路…

visdom使用时所遇的问题及解决方法

最近在用visdom进行可视化的过程中,虽然可有效的避免主机拒绝访问(该问题的解决方法,请参考深度学习可视化工具visdom使用-CSDN博客)即在终端输入python -m visom.server 1.训练过程中visdom出现ValueError: too many file descr…

Kali之metasploit学习

目标:尝试使用metasploit制作一个windows 后门(exe文件) 一:使用metasploit生成一个exe安装包。 二、将对应的可执行文件放入到目标机 python3 -m http.server 端口号: 模块化启动一个端口。 windows 证书管理工具&…

【UIDynamic-动力学-复习昨天的内容-预习今天的内容 Objective-C语言】

一、复习昨天的内容 1.昨天我们学了,核心动画,核心动画呢,它是作用于CALayer上的,所以,我们先说了CALayer,然后,说了一个核心动画的问题, 关于这个CALayer啊,这个Layer的一些基本的属性, 1)边框:testView.layer.borderWidth = 10;// 边框是border开头儿的 2)边…

VMware安装ubuntu22.4图文教程

一 、下载镜像 下载地址:Index of /ubuntu-releases/22.04.4/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 二、创建虚拟机 打开VMware点击左上角文件,创建新的虚拟机,打开后如下图: 下一步,镜像文件就是…

滚动条样式

/*滚动条*/ //滚动条没有滑块的轨道部分. ::-webkit-scrollbar-track-piece {background: #fff;border-radius: 0px;opacity: 1;border: 1px solid #D9D9D9; } //整个滚动条 ::-webkit-scrollbar {width: 8px;height: 8px;background-color: transparent; } //滚动条上的滚动滑…

java.nio.charset.UnmappableCharacterException

问题 java.lang.IllegalArgumentException: java.nio.charset.UnmappableCharacterException: Input length 1 解释为编码转换有问题 问题错在位置 非汉字存在 打包的时候就会报异常

HTML列表和表格标签

目录 1.列表标签 1.1无序列表 1.2有序列表 1.3定义列表 2. 表格标签、 2.1表格标签的属性 2.2合并单元格 1.列表标签 1.1无序列表 <ul>: [type 属性&#xff1a; disc( 实心圆点 )( 默认 ) 、 circle( 空心圆圈 ) 、 square( 实心方块 )] <li>: 列表中…

C语言| 编程获取数组的长度

用sizeof也可以获得整个数组在内存中所占的字节数。 总的字节数除以一个元素所占的字节数就是数组的总长度。 这样不管数组是增加还是减少元素&#xff0c;sizeof(a) /sizeof(a[0])都能自动求出数组的长度。 字符串中有一个strlen()函数可以求出字符数组中字符串的长度。 #inc…

【python】networkx库计算:特征向量中心度

目录 0.简介 1.前提 1&#xff09;ctrl R 唤出cmd 2&#xff09;安装networkx 3&#xff09;查看networkx版本 2.方法一&#xff1a;通过给出无向图计算特征向量中心度 1&#xff09;给出无向图&#xff0c;添加节点和边 2&#xff09;可以用以下代码将无向图用pyplot…