STM32之四:TIM定时器(1-基本定时器)

目录

1. STM32有哪些定时器

2. 基本定时器

2.1 基本定时器主要功能

2.2 基本定时器的框图

2.2.1 时钟输入

 2.2.2 至DAC

2.2.3 至时基单元(重点)

2.2.4 影子寄存器

2.2.5  基本定时器寄存器说明

2.2.5.1 控制寄存器1(TIMx_CR1)

2.2.5.2 TIMx_DIER、TIMx_SR、TIMx_EGR

2.3 如何在STM32中进行基本定时器定时


1. STM32有哪些定时器

STM32定时器分为三种类型:高级定时器、通用定时器、基本定时器。

作为接触定时器的第一章节,本节介绍基本定时器,需要掌握如何通过定时器来产生指定时间的中断,其余影子寄存器等概念做了解。

STM32定时器分类(来源:B站江协科技—课件)

2. 基本定时器

2.1 基本定时器主要功能

    1. 提供基本定时中断功能

    2. 触发DAC同步电路

2.2 基本定时器的框图

基本定时器框图
2.2.1 时钟输入

首先从框图左上部分看,基本定时器的时钟输入只有一个,即:来自RCC的TIMxCLK,我们翻看下时钟树部分的框图STM32之二:时钟树,定时器2-7在APB1总线上,且对其频率有要求。“如果APB1预分频系数=1,则频率不变,否则频率*2”,我们知道,由于APB1最大频率为36MHz,SYSCLK时钟为72MHz,所以,APB1预分频器的系数=2,因此此处频率*2,即,至TIMxCLK的时钟为72MHz。因此,内部时钟CK_INT为72MHz

基本定时器时钟来源
 2.2.2 至DAC

CK_INT输入的矩形兵分两路,一路触发控制器至DAC。

基本定时器在芯片内部直接连接到DAC,并通过触发输出直接驱动DAC。

本节主要探讨定时器的基本定时中断作用,此功能不做过多介绍。

2.2.3 至时基单元(重点)

红框框到的地方为时基单元,时基单位由预分频器(PSC)、计数器(CNT)和自动重装载寄存器(ARR)组成。

预分频器(PSC):PSC是16bit的预分频器,可以对定时时钟进行1~65536之间的任何一个数进行分频。分频过后的时CKCNT=\frac{TIMxCLK}{PSC+1} 。PSC+1是因为实际PSC寄存器从0开始计数,PSC=0即代表不分频(或1分频),PSC=1即代表2分频,因此此处PSC需+1。

计数器(CNT):CNT是一个16bit的只向上计数的计数器,最大值为65535。当计数器中的数值达到自动重装载寄存器的值时产生更新时间,并清零从头开始计数。

自动重装载寄存器(ARR):ARR是一个16bit的寄存器,里面装着计数器能计数的最大值,当CNT中的值和ARR中的值一致时,如果使能中断,定时器会溢出中断。

那么,如果要定义1ms中断的时钟,PSC和ARR该如何取值呢?

定时器的时钟CK_CNT=CK_INT/(PSC+1),则计数器计数一次的时间=1/CK_CNT,当计数器计数数值达到ARR时候,产生一次中断。因此产生中断的时间可以计时为=(PSC+1)/ CK_INT*ARR

则PSC可以取值为71,ARR取值为1000,则(71+1)/72000000*1000 = 1ms

PS:PSC和ARR的取值不固定,满足公式即可

至此,即可给寄存器赋值来进行定时器中断。

2.2.4 影子寄存器

在基本定时器的框图中我们看到,标绿色的框框带有阴影。且时基单元中,自动重装载寄存器和预分频器也有阴影。这部分带有阴影的寄存器表示在物理上这个寄存器对应2个寄存器,其中一个是程序员可以写入或读出的寄存器,称为预装载寄存器,另一个是程序员看不见,但在操作中真正起作用的寄存器,称为影子寄存器。

我们观察STM32F10xx参考手册可以看到,影子寄存器被描述为缓冲。至于下句“可以在运行过程中改变它的数值,新的预分频数值将在下一个更新事件时起作用”,在运行中改变的其实是预装载寄存器,用户随时可以更改预装载寄存器的值,但是影子寄存器的值会在下一个更新事件时起作用。

预分频器介绍
2.2.5  基本定时器寄存器说明

虽然基本定时器只有定时和触发DAC两个功能,但是观看其寄存器,很多的标志位还是让人有些搞不清楚,在此将这些寄存器梳理下。

2.2.5.1 控制寄存器1(TIMx_CR1)

  • CEN: 

位0是一个标志位CEN,CEN意为计数器CNT使能位。

即CNT=1,使能计数器。CNT=0,关闭计数器,计数器不计数。因此可见,如果要进行定时器中断功能,必须要使CNT=1.

  • UDIS:

位1为UDIS,表示禁止更新位。由软件设置和清除,以使能或禁止UEV事件的产生。

UDIS=0,UEV使能。更新事件UEV可以由下列事件产生:

        -计数器CNT上溢或下溢。

        -设置UG位(UG位为事件产生寄存器TIMx_EGR的0位,置1表示由软件产生更新事件)

        -通过从模式控制器产生的更新(高级定时器功能,此处可以不看)

UDIS=1

        不产生UEV更新事件。

  • URS和OPM

位2为URS,URS表示UEV事件的请求源。

为3为OPM,OPM表示单脉冲模式。

 

  • ARPE :自动重装载预装载使能。

ARPE即ARR自动重装载寄存器是否开启影子寄存器,也叫做缓冲。

ARPE=1:TIMx_ARR寄存器没有缓冲;即关闭影子寄存器,预装载寄存器的内容直接传送到影子寄存器。

APPE=0:TIMx_ARR寄存器具有缓冲;即开启影子寄存器。当ARR被重新赋值之后,必须在下一次更新事件UEV发生后才能更新影子寄存器的值。(如果想更改完立即同步到影子寄存器,可以通过软件设置UG位产生更新事件)

可以看到图151中ARPE=0时,修改了TIMx_ARR的值为0x36,则计数器在0x36时已产生动作。而在图152中,ARPE=1,在计数器还未达到0x36时,将ARR的修改为0x36,但是在计数器=0x36时却为产生更新,在计数器达到上次ARR的值0xF5产生更新事件之后,ARR的值(影子寄存器)才更新为0x36。

2.2.5.2 TIMx_DIER、TIMx_SR、TIMx_EGR

这些寄存器的标志位有些多且易混杂,在此统一列出,方便分辨。

  • UDE 跟新DMA请求使能;UDE=0,禁止更新DMA请求;UDE=1,使能更新DMA请求。
  • UIE 更新中断使能;UIE=0,禁止更新中断;UIE=1,使能更新中断。
  • UIF 更新中断标志位;UIF=1表示产生更新中断,UIF=0表示未产生更新中断。
  • UG 是否开启软件产生更新事件。UG=1表示由软件产生更新中断。

这么多标志位,除了时基单元的寄存器,实际在我们定时器定时的时候,只需要用到:

        TIMx_CR1->CEN :计数器使能

        TIMx_DIER->UIE:允许中断

        TIMx_SR->UIF:是否产生中断;清除中断标志位

2.3 如何在STM32中进行基本定时器定时

例如若使用TIM6定时器定时1ms产生中断,则需要以下几个步骤

  1. TIM6时钟使能
  2. 初始化定时器参数(自动装载值、预分频系数、计数方式等)
  3. 设置TIM6允许中断(TIMx_DIER->UIE)
  4. 设置NVIC中断优先级
  5. 使能TIM6(TIMx_CR1->CEN )
  6. 编写中断服务函数(判断中断标志位和清楚中断标志位:TIMx_SR->UIF)

通过这几个步骤,就能实现使用基本定时器来定时产生更新中断。

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

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

相关文章

压缩包怎么解压,解压压缩包不损坏文件

常见格式: ZIP:最常见的压缩文件格式之一,支持跨平台。RAR:另一种常见的压缩文件格式,通常压缩率比ZIP高,但不如ZIP普及。7Z:来自7-Zip的压缩格式,支持更高的压缩率和一些高级特性。…

设计NOR Flash(FMSC接口)的Flashloader(MCU: stm32f4)

目录 概述 1 硬件 1.1 MCU和S29GL128P10TFI01控制电路 1.1.1 S29GL128P10TFI01 1.1.2 MCU与NOR Flash接口 1.2 STM32F4的FSMC接口 1.2.1 时序信号 1.2.2 外部存储器接口信号 2 Flash leader功能实现 2.1 框架结构介绍 2.2 S29GL128P10TFI01的Flash leader框架 2.3 N…

人工智能期末复习笔记(更新中)

分类问题 分类:根据已知样本的某些特征,判断一个新的样本属于哪种已知的样本类 垃圾分类、图像分类 怎么解决分类问题 分类和回归的区别 1. 逻辑回归分类 用于解决分类问题的一种模型。根据数据特征或属性,计算其归属于某一类别 的概率P,…

66、基于长短期记忆 (LSTM) 网络对序列数据进行分类

1、基于长短期记忆 (LSTM) 网络对序列数据进行分类的原理及流程 基于长短期记忆(LSTM)网络对序列数据进行分类是一种常见的深度学习任务,适用于处理具有时间或序列关系的数据。下面是在Matlab中使用LSTM网络对序列数据进行分类的基本原理和流…

XJTUSE-数据结构-homework1

任务 1 题目: 排序算法设计: 需要写Selection、Shell、Quicksort 和 Mergesort四种排序算法,书上讲述比较全面而且不需要进行额外的优化,下面我简要地按照自己的理解讲述。 Selection(选择排序)&#xff…

HarmonyOS Next开发学习手册——单选框 (Radio)

Radio是单选框组件,通常用于提供相应的用户交互选择项,同一组的Radio中只有一个可以被选中。具体用法请参考 Radio 。 创建单选框 Radio通过调用接口来创建,接口调用形式如下: Radio(options: {value: string, group: string})…

Linux常用工具使用方式

目录 常用工具: 安装包管理工具: 查找含有关键字的软件包 安装软件 安装文件传输工具 安装编辑器 C语言编译器 C编译器 安装调试器 安装项目版本管理工具 cmake 卸载软件 安装jsoncpp 安装boost库 安装mariadb 安装tree(让目录…

Python28-3 朴素贝叶斯分类算法

朴素贝叶斯算法简介 朴素贝叶斯(Naive Bayes)算法是一种基于贝叶斯定理的分类算法。它广泛应用于文本分类、垃圾邮件检测和情感分析等领域。该算法假设特征之间是独立的,这个假设在实际情况中可能并不完全成立,但Naive Bayes在许…

java笔记(30)——反射的 API 及其 使用

文章目录 反射1. 什么是反射2. 获取class字段(字节码文件对象)方式1方式2方式3应用 3. 获取构造方法和权限修饰符前期准备获取所有的公共构造方法获取所有的构造方法获取无参构造方法获取一个参数的构造方法获取一个参数的构造方法获取两个参数的构造方法…

Java面试题--JVM大厂篇之G1 GC的分区管理方式如何减少应用线程的影响

目录 引言: 正文: 1. 区域划分(Region) 2. 并行和并发回收 3. 区域优先回收(Garbage First) 4. 可预测的停顿时间 5. 分阶段回收 6. 复制和压缩 实际效果: 场景举例 1. 减少单次GC的影响 2. 支持高并发环境 3. 优…

数学建模(1):期末大乱炖

1 概述!! 1.1 原型和模型 原型:客观存在的研究对象称为原型,也称为“系统”、“过程”。 机械系统、电力系统、化学反应过程、生产销售过程等都是原型; 研究原型的结构和原理, 从而进行优化、预测、评价…

一区算法MPA|海洋捕食者算法原理及其代码实现(Matlab/Python))

Matlab/Python: 本文KAU将介绍一个2020年发表在1区期刊ESWA上的优化算法——海洋捕食者算法 (Marine Predators Algorithm,MPA)[1] 该算法由Faramarzi等于2020年提出,其灵感来源于海洋捕食者之间不同的觅食策略、最佳相遇概率策略、海洋记…

【MySQL】Linux下MySQL的目录结构、用户、权限与角色

一、Linux下MySQL的目录结构 1、MySQL相关目录 数据库文件存放路径:/var/lib/mysql数据库命令存放路径:/user/bin和/user/sbin配置文件目录:/usr/share/mysql-8.0/、/usr/share/mysql/和/etc/my.cnf 2、假设我们创建了一个数据库dbtest1&a…

使用evo工具比较ORB-SLAM3的运行轨迹(从安装到解决报错)

ORB-SLAM2和ORB-SLAM3怎么跑出来,之前都有相关的保姆级的教程,下来给大家介绍一款evo工具,给科研加速!!! 文章目录 1.下载evo2.生成轨迹3.evo别的功能使用 1.下载evo 输入命令下载 pip install -i https…

你真的会udf提权???数据库权限到系统权限 内网学习 mysql的udf提权操作 ??msf你会用了吗???

我们在已经取得了数据库的账号密码过后,我们要进一步进行提取的操作,我们mysql有4钟提权的操作。 udf提权(最常用的)mof提权启动项提权反弹shell提权操作 怎么获取密码操作: 怎么获取密码,通过sql注入获取这个大家都应该知道了&a…

百强韧劲,进击新局 2023年度中国医药工业百强系列榜单发布

2024年,经济工作坚持稳中求进、以进促稳、先立后破等工作要求。医药健康行业以不懈进取的“韧劲”,立身破局,迎变启新。通过创新和迭代应对不确定性,进化韧性力量,坚持高质量发展,把握新时代经济和社会给予…

零基础开始学习鸿蒙开发-读书app简单的设计与开发

目录 1.首页设计 2.发现页面的设计 3.设置页面的设计 4.导航页设计 5.总结: 6.最终的效果 1.首页设计 Entry Component export struct home {State message: string 首页build() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.B…

基于线调频小波变换的非平稳信号分析方法(MATLAB)

信号处理领域学者为了改进小波变换在各时频区间能量聚集性不高的缺点,有学者在小波分析基础上引入调频算子构成了线性调频小波变换,线调频小波一方面继承了小波变换的理论完善性,另一方面用一个新的参数(线调频参数)刻…

构建高效业财一体化管理体系

构建高效业财一体化管理体系 业财一体化战略意义 提升决策质量 强化数据支撑:通过整合业务与财务数据,为决策提供准确、实时的信息基础,确保分析的深度与广度。促进业务与财务协同:打破信息孤岛,实现业务流程与财务管…

Django 定义模型执行迁移

1,创建应用 Test/app8 python manage.py startapp app8 2,注册应用 Test/Test/settings.py 3,配置路由 Test/Test/urls.py from django.contrib import admin from django.urls import path, includeurlpatterns [path(app8/, include(a…