新手必看!!STM32定时器简介

一、定时器有哪些?

定时器分为三大类:基本定时器、通用定时器和高级定时器。

二、每个定时器的功能以及使用场景

1. 基本定时器(Basic Timers):
功能: 基本定时器具有较为简单的功能,通常用于基本的计时和触发任务。
用途场景:它们可以作为通用定时器提供时间基准,特别地可以为数模转换器(DAC)提供时钟。实际上,它
们在芯片内部直接连接到DAC并通过触发输出直接驱动DAC。

2. 通用定时器(General-Purpose Timers):
功能: 通用定时器提供了更多的功能和配置选项,包括PWM生成、脉冲计数、输入捕获、输出比较等功能。
用途场景: 适用于需要更复杂的定时功能的应用,如PWM控制、频率测量、脉冲计数等。测量输入信号的脉冲长度(输入捕获)或者 产生输出波形 ( 输出比较 和 PWM )等。

3. 高级定时器(Advanced Timers):
功能: 高级定时器除了通用定时器的功能外,还支持更高级的特性,如相位锁定回路(PLL)、编码器接口、三角波生成等。
用途场景: 适用于需要更高级、复杂计时功能的应用,例如音频处理、电机控制、编码器接口等。重复计数器、死区生成、互补输出、刹车输入等功能

三、定时器功能详表

以STM32F103系列为例,具体开发板请查看开发手册。

类别定时器总线位数计数方向预分频系数是否可以产生DMA捕获/比较通道互补输出
基本定时器TIM6 / TIM7APB216位向上1~65535可以0
通用定时器TIM2 /TIM3 /TIM4/ TIM5APB116位向上/向下/中央对齐1~65535可以4
高级定时器TIM1 /TIM8APB116位向上/向下/中央对齐1~65535可以4

四、定时器知识点

1.影子寄存器:

简介以及功能:
在这里插入图片描述

实际功能上的值都是参考的影子寄存器而不是原寄存器,比如预分频寄存器,这个分频数看的是预分频寄存器影子寄存器上的,而不是预分频寄存器上的。又比如重载值寄存器,那个重载值是看的影子寄存器上的值,而不是原寄存器上的值。影子寄存器主要有一个缓冲的作用。

2. 寄存器缓冲作用:
未设置缓冲:在原寄存器上用户设定的值->影子寄存器->work。
设置缓冲: 在原寄存器上用户设定的值->等待更新事件U发生->影子寄存器->work。

下面举个例子来更加通俗的理解缓冲作用!!
如:(1)未设置缓冲作用情况:
设置LED灯1s亮,1s灭。假如定时器的计数方式为向上计数,且ARR重载值为99时正好定时为1s。当CNT=ARR值时定时时间1s到,灯亮。我们不需要重新修改ARR寄存器的值,继续重装载为99,即可继续定时1s,灯灭。这时就算不设置缓冲作用也没问题。
设置为LED灯1s亮,2s灭,不设置缓冲作用就会出现误差。如当CNT=ARR值时定时时间1s到,灯亮,但是后续要定时2s,所以要修改ARR寄存器的值为199,修改后立刻生效,开始计时。但是操作寄存器这个过程是需要时间的,即使时间很短,也是存在误差的。这种情况下所以就需要设置缓冲。
(2)设置缓冲作用的情况:
如果设置了缓冲作用后,我们就可以提前将199写入ARR寄存器中,因为有缓冲作用,并不会立刻生效。会等到更新时间U发生后生效,更新时间u是在上一段定时时间到之后产生。

寄存器缓冲作用通过控制寄存器位7来设置。
在这里插入图片描述

注意:具体实现看下篇文章!!!

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

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

相关文章

“CGT Awards”2024年度亚太区细胞与基因治疗行业之星奖项评选火热申报中

细胞与基因治疗近年来得到国内国际的广泛关注,大批科研单位和企业投入到这个领域的研发当中。到2023年底,12余种新型CGT 疗法有望在美国、欧洲或两地同时获批上市。近5年期间(2018-2022),各地域CGT 疗法的临床试验占比…

【数据结构与算法】JavaScript实现树结构(一)

文章目录 一、树结构简介1.1.简单了解树结构1.2.树结构的表示方式 二、二叉树2.1.二叉树简介2.2.特殊的二叉树2.3.二叉树的数据存储 三、二叉搜索树3.1.认识二叉搜索树3.2.二叉搜索树应用举例 一、树结构简介 1.1.简单了解树结构 什么是树? 真实的树:…

信息安全相关标准

GB/T 25070-2019 信息安全技术 网络安全等级保护安全设计技术要求 在线预览|GB/T 25070-2019 (gb688.cn) 每一级安全保护环境分为安全计算环境,安全区域边界,安全通信网络。 一级通用安全计算环境 二级通用安全 计算环境 三级 通用安全计算环境 第四级…

linux环境下软件安装之Mysql8

1、官网下载(右键最后一页的超链接) 2、通过命令行下载 wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.35-linux-glibc2.17-x86_64.tar.xz3、解压 1.将.xz解压为.tar xz -d mysql-8.0.35-linux-glibc2.17-x86_64.tar.xz2.将.tar解压为普通文件 tar -xv…

测试人员如何提交一条高质量的bug

测试人员在测试软件过程中,发现bug是必然的,那么发现bug后就要提交bug到缺陷管理系统中,如何提交一条高质量的bug,是每一个测试人员值得深思的问题,如果bug提交的不规范,不准确会导致开发人员理解错误&…

Rxswift(1)

基础用法 数据绑定核心Observerable 可监听序列 数据绑定 平常的写法 let image: UIImage UIImage(named: ...) imageView.image image绑定的写法 //可监听序列 let image: Observable<UIImage> ... //imageView.rx.image 观察者 image.bind(to: imageView.rx.image…

你知道什么是Oracle嘛

文章目录 Oracle数据简介环境准备安装配置安装Oracle设置Oracle开机自启Oracle核心概念创建用户修改用户密码用户授权查看用户 数据备份总结 Oracle数据简介 Oracle Database&#xff0c;又名Oracle RDBMS&#xff0c;或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它…

122.Android 简单的历史搜索

第一步 FlowLayout&#xff1a; public class FlowLayout extends ViewGroup {private int mHorizontalSpacing dp2px(16); //每个item横向间距private int mVerticalSpacing dp2px(8); //每个item横向间距private List<List<View>> allLines new ArrayList<…

linux:删除乱码文件、目录

由于编码原因&#xff0c;在linux服务器上上传、创建中文文件或目录时&#xff0c;会产生乱码&#xff0c;如果想删除它&#xff0c;发现用rm命令是删除不了的&#xff0c;这种情况下&#xff0c;用find命令可以删除乱码的文件或目录。 首先进入乱码文件或目录所在的目录&…

服务器数据恢复—热备盘同步中断导致Raid5数据丢失的数据恢复案例

服务器数据恢复环境&#xff1a; 某单位一台服务器上有一组raid5阵列&#xff0c;该raid5阵列有15块成员盘。上层是一个xfs裸分区&#xff0c;起始位置是0扇区。 服务器故障&检测&#xff1a; 服务器raid5阵列中有硬盘性能表现不稳定&#xff0c;但是由于管理员长时间没有关…

1.数字化转型概述

中台数字化转型的问题 在中台数字化转型过程中&#xff0c;如何进行业务领域边界划分&#xff0c;如何完成中台领域建模实现能力复用&#xff0c;如何完成单体应用拆分利微服务设计&#xff0c;如何实现前中后台的协同设计; DDD解决的问题 DDD首先从业务领域人手&#xff0c…

上机练习 8: DataFrame 综合练习

记录一下做的练习题 目录 1)自定义一个 Series 并命名为 s1&#xff0c;自定义索引值&#xff0c;采用随机数作为其中数据尝试使用 s1.sum(计算其中所有数据的和,使用 s.mean(计算其中所有数据的平均值。 2)创建一个形状为4*6的 DataFrame 并命名为 df1,并指定行索引为[“a”…

Linux服务器安装Dotnet8

1. 下载dotnet8 sdk 下载 .NET 8.0 SDK (v8.0.100) - Linux x64 Binaries 拿到 dotnet-sdk-8.0.100-linux-x64.tar.gz 文件 2. 把文件上传到 /usr/local/software 目录 mkdir -p /usr/local/software/dotnet8 把文件拷贝过去 mv dotnet-sdk-8.0.100-linux-x64.tar.gz /usr/loc…

Python 如何实现 Mediator 中介者设计模式?什么是中介者设计模式?Python 设计模式示例代码

什么是中介者设计模式&#xff1f; 中介者&#xff08;Mediator&#xff09;设计模式是一种行为型设计模式&#xff0c;其主要目的是通过将对象之间的直接交互转变为通过中介者对象进行的间接交互&#xff0c;从而减少对象之间的耦合度。中介者模式通过集中控制对象之间的通信…

golang学习笔记——递归函数

递归函数 递归&#xff0c;就是在运行的过程中调用自己。 语法格式如下&#xff1a; func recursion() {recursion() /* 函数调用自身 */ }func main() {recursion() }阶乘 阶乘最初的定义就是小于等于某个正整数的所有正整数的乘积&#xff0c;5 的阶乘&#xff08;记作 5!…

我所理解的 UI Toolkit 启蒙阶段(一)

我所理解的 UI Toolkit 启蒙阶段&#xff08;一&#xff09; 对于自己不会的新东西的学习&#xff0c;我认为最合适的路径就是&#xff1a; 实例教学视频 —> 实操熟悉 —> 官方文档查漏补缺 —> 拟定思路实现功能 但这 4 步并非每一步都需要下 100% 的功夫&#x…

三菱FX3U小项目—传输带定分级控制

目录 一、项目描述 二、IO口分配 三、项目程序 四、总结 一、项目描述 两条运输带顺序相连&#xff0c;为了避免运送的物料在1号运输线上堆积&#xff0c;所以启动时&#xff0c;1号运输带开始运行&#xff0c;5S后2号运输带自动启动。停机时顺序与启动刚好相反&#xff0c…

什么是智慧仓储?

“关于智慧仓储&#xff0c;有的说是AGV&#xff0c;有的说是自动化立库&#xff0c;还有的WMS厂家也说自己的系统是智慧仓储&#xff0c;到底什么是智慧仓储&#xff1f;” 先一句话总结一下智慧仓储—— 智慧仓储是指利用先进的信息技术和物联网技术对仓储管理进行优化和智能…

游戏工作中用到的一些第3方软件和作用

记录下平时工作中发现的一些好用的软件: Snipaste:截屏软件 最好用的功能就是可以将截的图留在屏幕上,用来做提醒或者对比. RenderDoc:图形调试器 图形图像开\分析和捕捉时要用到的强大工具,可以捕捉图形帧并分析和调试.涵盖Vulkan,D3D11,D3D12.OpenGL,OpenGL ES以及windows …

postman查询数据库-Xmysql

步骤1&#xff1a;安装node.js 下载地址:Download | Node.js步骤2&#xff1a;安装Xmysql工具&#xff0c;命令行输入 npm install -g xmysql &#xff0c;过程中会自动安装相关依赖&#xff1b;步骤3&#xff1a;连接数据库 xmysql -h ip -u 账号 -p 密码 -d 库名 如下表示连…