【正点原子STM32】TIMER 定时器(软件定时原理、定时器定时原理、分类和特性、基本定时器(影子寄存器和U事件和UI中断))

news2024/11/29 8:49:33

一、定时器概述

  • 1.1、软件定时原理
  • 1.2、定时器定时原理
  • 1.3、STM32定时器分类
  • 1.4、STM32定时器特性表
  • 1.5、STM32基本、通用、高级定时器的功能整体区别

二、基本定时器

  • 2.1、基本定时器简介
  • 2.2、基本定时器框图
  • 2.3、定时器计数模式及溢出条件
  • 2.4、定时器中断实验相关寄存器
  • 2.5、定时器溢出时间计算方法
  • 2.6、定时器中断实验配置步骤
  • 2.7、编程实战:定时器中断实验

三、通用定时器

  • 3.1、通用定时器简介
  • 3.2、通用定时器框图
  • 3.3、计数器时钟源
  • 3.4、通用定时器PWM输出实验
    • 3.4.1、通用定时器输出比较部分框图介绍
    • 3.4.2、通用定时器输出PWM原理
    • 3.4.3、PWM模式
    • 3.4.4、通用定时器PWM输出实验配置步骤
    • 3.4.5、编程实战:通用定时器PWM输出实验
  • 3.5、通用定时器输入捕获实验
    • 3.5.1、通用定时器输入捕获部分框图介绍
    • 3.5.2、通用定时器输入捕获脉宽测量原理
    • 3.5.3、通用定时器输入捕获实验配置步骤
    • 3.5.4、编程实战:通用定时器输入捕获实验
  • 3.6、通用定时器脉冲计数实验
    • 3.6.1、脉冲计数实验原理
    • 3.6.2、通用定时器脉冲计数实验配置步骤
    • 3.6.3、编程实战:通用定时器脉冲计数实验

四、高级定时器

  • 4.1、高级定时器简介
  • 4.2、高级定时器框图
  • 4.3、高级定时器输出指定个数PWM实验
  • 4.4、高级定时器输出比较模式实验
    • 4.4.1、高级定时器输出比较模式实验原理
    • 4.4.2、高级定时器输出比较模式实验配置步骤
    • 4.4.3、编程实战:高级定时器输出比较模式实验
  • 4.5、高级定时器互补输出带死区控制实验
    • 4.5.1、互补输出,还带死区控制,什么意思?
    • 4.5.2、带死区控制的互补输出应用之H桥
    • 4.5.3、捕获/比较通道的输出部分(通道1至3)
    • 4.5.4、死区时间计算
    • 4.5.5、刹车(断路)功能
    • 4.5.6、高级定时器互补输出带死区控制实验配置步骤
    • 4.5.7、编程实战:高级定时器互补输出带死区控制实验
  • 4.6、高级定时器PWM输入模式实验
    • 4.6.1、PWM输入模式工作原理
    • 4.6.2、PWM输入模式时序
    • 4.6.3、高级定时器PWM输入模式实验配置步骤
    • 4.6.4、编程实战:高级定时器PWM输入模式实验

五、课堂总结

一、定时器概述

1.1、软件定时原理

在这里插入图片描述
软件定时的原理是利用CPU执行特定的指令序列来实现延时功能,即在程序中通过循环等待的方式来达到延时的效果。通常情况下,软件定时的实现会通过以下步骤进行:

  1. 确定延时时间: 程序中确定所需的延时时间,以满足特定的需求。

  2. 编写延时函数: 编写延时函数来实现延时的功能。这个函数会在程序中占用一定的时间,使得程序在执行到该函数时会停顿一段时间。

  3. 实现延时逻辑: 在延时函数中,使用循环等待的方式来实现延时。通常是通过执行空循环、计数循环等方式来实现。

  4. 调用延时函数: 在程序中需要延时的地方调用该延时函数,从而实现延时的效果。

软件定时的缺点包括:

  • 延时不精准: 基于纯软件实现的延时往往不够精确,受到CPU执行指令的速度流水线机制缓存机制压栈出栈操作等因素的影响,导致实际延时时间与期望值有一定的误差。

  • CPU死等: 在延时期间,CPU需要持续执行空循环或者计数循环等操作,这会导致CPU处于忙等待状态,不能执行其他的任务,降低了系统的效率。

由于软件定时的这些缺点,通常在对精准度要求较高、延时时间较长、需要充分利用CPU执行其他任务的情况下,会采用硬件定时器或者其他硬件模块来实现定时功能。

1.2、定时器定时原理

在这里插入图片描述
定时器定时的原理是利用硬件定时器模块中的计数器和自动重载寄存器来实现精准的定时功能。以下是定时器定时的基本原理:

  1. 时钟源选择: 定时器需要一个时钟源来驱动计数器的计数。通常情况下,时钟源可以是微控制器的系统时钟或者外部时钟源。

  2. 预分频器设置: 时钟源经过预分频器(PSC)进行预分频,以得到更低的时钟频率。预分频器的设置可以调节定时器的计数速率,从而影响定时的精度和范围。

  3. 计数器计数: 经过预分频后的时钟信号将驱动定时器的计数器(CNT)开始计数。计数器从零开始计数,每个时钟周期加1,直到达到自动重载值(ARR)为止。

  4. 溢出检测: 当计数器的值达到自动重载值时,会触发溢出事件,计数器将重新从零开始计数,并发出一个溢出中断信号。

  5. 重新加载: 自动重载寄存器(ARR)存储着计数器重新加载的值。当计数器溢出时,自动重载寄存器的值会重新加载到计数器中,从而实现周期性的定时功能。

通过以上步骤,定时器可以实现精准的定时功能,而且由于定时器的计数过程由硬件实现,不需要CPU的干预,因此不会占用CPU资源,能够同时执行其他任务,提高了系统的效率。定时器定时在嵌入式系统中被广泛应用于周期性任务的调度、PWM信号生成、输入捕获等领域。

1.3、STM32定时器分类

在这里插入图片描述
在STM32系列微控制器中,定时器可以按功能和用途进行分类,主要分为以下三类:

  1. 常规定时器:

    • 基本定时器(Basic Timers): 通常用于产生简单的定时中断,具有较为简单的功能和较低的精度要求。
    • 通用定时器(General-purpose Timers): 包括TIM2、TIM3、TIM4等,功能强大,适用于复杂的定时任务,具有多种工作模式和功能。
    • 高级定时器(Advanced Timers): 包括TIM1和TIM8等,具有更高级别的功能和精度,通常用于需要高性能和精准度的定时任务。
  2. 专用定时器:

    • 独立看门狗(Independent Watchdog,IWDG): 用于监控系统运行状态,防止程序死循环或意外死锁。
    • 窗口看门狗(Window Watchdog,WWDG): 监控程序运行时效性,提前唤醒中断。
    • 实时时钟(Real-time Clock,RTC): 提供实时时间和日期信息,通常用于实时时钟和日历功能。
    • 低功耗定时器(Low-power Timer,LPTIM): 用于低功耗模式下的定时任务,具有较低的功耗和精度。
  3. 内核定时器:

    • SysTick定时器: 是由内核提供的用于系统定时的定时器,可用于操作系统的时钟节拍、延时函数等,通常用于系统调度和时间基准。

这些定时器在STM32微控制器中提供了灵活且多样化的定时功能,可以根据具体应用需求选择合适的定时器类型和配置。

1.4、STM32定时器特性表

在这里插入图片描述

定时器类型特性
基本定时器- 简单的定时功能
- 16位定时器
- 有一个16位自动重装载寄存器
- 可以直接连接到GPIO口输出PWM信号
- 适用于简单的定时任务
通用定时器- 多功能、灵活的定时器
- 16位或32位定时器,具有多个通道
- 多种计数模式,包括向上计数、向下计数、中心对齐计数等
- 可以产生PWM信号、捕获输入信号、触发输出比较等功能
- 适用于复杂的定时任务,如PWM控制、编码器接口等
高级定时器- 高级功能、高精度的定时器
- 16位或32位定时器,具有多个通道
- 支持同步、异步触发、定时器联动等高级功能
- 适用于需要高性能和精准度的定时任务,如高速PWM、电机控制等
独立看门狗- 监控系统运行状态,防止程序死循环或死锁
- 12位递减计数器
- 内部时钟源(LSI)提供时钟
- 可以产生系统复位信号
窗口看门狗- 监控程序运行时效性,提前唤醒中断
- 7位递减计数器
- 可以设置窗口期,超出窗口期产生中断
- 可以产生系统复位信号
实时时钟- 提供实时时间和日期信息
- 可以设置闹钟、日历、定时器等功能
- 用于实时时钟和日历功能
低功耗定时器- 用于低功耗模式下的定时任务
- 16位定时器,适用于低功耗模式下的长期计时任务
- 低功耗模式下工作,具有较低的功耗
SysTick定时器- 内核提供的系统定时器
- 24位定时器,用于系统时钟节拍、延时函数等
- 用于操作系统的时钟节拍、延时函数等

1.5、STM32基本、通用、高级定时器的功能整体区别

定时器类型主要功能
基本定时器- 没有输入输出通道,常用作时基,即定时功能
- 16位定时器,可产生定时中断、PWM信号等
- 适用于简单的定时任务,如延时、周期性触发等
通用定时器- 具有多路独立通道,可用于输入捕获、输出比较
- 16位或32位定时器,具有多种计数模式、多个通道
- 可以产生PWM信号、捕获外部输入信号、触发输出比较等功能
- 适用于复杂的定时任务,如PWM控制、编码器接口等
高级定时器- 除具备通用定时器所有功能外,还具备带死区控制的互补信号输出、刹车输入等功能
- 提供高级功能、高精度的定时任务支持,如高速PWM、电机控制等
- 适用于需要高性能和精准度的定时任务,如电机控制、数字电源设计等

二、基本定时器

2.1、基本定时器简介

在这里插入图片描述
基本定时器(TIM6/TIM7)是STM32中的两个简单的定时器,主要特性包括:

  1. 16位递增计数器: 可以计数从0到65535的整数,计数器在计数溢出时会重新从0开始计数。
  2. 16位预分频器: 可以将外部时钟源预分频,分频系数范围从1到65536,用于调节定时器的时钟频率。
  3. 可用于触发DAC: 可以利用基本定时器的更新事件(计数器溢出)来触发DAC转换,实现定时产生模拟输出信号。
  4. 中断/DMA请求: 基本定时器在更新事件发生时(即计数器溢出)会产生中断或DMA请求,用户可以在中断服务函数中执行相应的操作,或者通过DMA实现数据传输等功能。

2.2、基本定时器框图

在这里插入图片描述

影子寄存器

影子寄存器是指在某些微控制器中,特定功能模块的寄存器拥有两个版本:影子寄存器和实际寄存器。

  1. 实际寄存器: 是硬件内部用于存储功能模块配置的寄存器,由硬件直接访问和使用。

  2. 影子寄存器: 是由软件访问的虚拟寄存器,用于向硬件配置功能模块的参数。当软件写入影子寄存器时,其值会自动传送到对应的实际寄存器,从而配置了功能模块的相关参数。

使用影子寄存器的好处在于,软件可以在不直接访问硬件寄存器的情况下配置功能模块,从而避免了由于并发访问导致的冲突和错误。此外,使用影子寄存器也使得软件的编程更加灵活和可控。

U事件和UI中断

U事件(Update Event)和UI中断(Update Interrupt)是定时器(TIM)功能中的两个重要概念:

  1. U事件(Update Event): 当定时器的计数器溢出并重新开始计数时,或者在通过软件更新定时器的计数器值时,会触发U事件。这种更新事件常用于定时器的基本计时功能,例如生成精确的延时、定时采样等。

  2. UI中断(Update Interrupt): UI中断是当定时器发生U事件时触发的中断请求。通过使能UI中断,可以让CPU在定时器发生更新事件时响应中断请求,并执行相应的中断服务程序。UI中断通常用于周期性的任务执行、定时采样、定时器管理等。

总的来说,U事件是定时器的一个基本触发事件,而UI中断则是由U事件触发的中断请求,通过处理UI中断,可以实现基于时间的任务调度和定时功能。

基本定时器的框图详解

基本定时器的框图主要包括三个部分:

  1. 时钟源(Clock Source): 定时器的时钟源通常来自于RCC(Reset and Clock Control)模块的TIMxCLK。这个时钟源经过内部时钟(CK_INT)后,传递给定时器的控制器。

  2. 控制器(Controller): 定时器的控制器负责控制定时器的各种功能,如复位、使能、计数等。它可以接收来自外部的触发信号(TRGO),并将计数器的计数结果发送到其他模块,比如DAC(Digital-to-Analog Converter)进行数模转换。

  3. 计数器(Counter,时基单元): 计数器是定时器的核心部分,用于实现计时功能。时钟信号经过PSC(Prescaler)预分频器进行预分频,然后输入到计数器(CNT)中进行计数。当计数器的值达到自动重装载寄存器(ARR)的值时,会产生溢出事件,即计数器溢出,产生一个更新事件(Update Event)。这个更新事件可以由硬件触发,也可以通过软件产生。UG位可产生软件更新事件,在更新事件时,计数器的值可以自动重装载为ARR的值,实现定时器的连续计时功能。

基本定时器ARPE位还可以配置自动重装载寄存器(ARR)是否具有缓冲,以及其他一些控制参数,以满足不同的定时需求。

2.3、定时器计数模式及溢出条件

2.4、定时器中断实验相关寄存器

2.5、定时器溢出时间计算方法

2.6、定时器中断实验配置步骤

2.7、编程实战:定时器中断实验

三、通用定时器

3.1、通用定时器简介
3.2、通用定时器框图
3.3、计数器时钟源
3.4、通用定时器PWM输出实验
3.4.1、通用定时器输出比较部分框图介绍
3.4.2、通用定时器输出PWM原理
3.4.3、PWM模式
3.4.4、通用定时器PWM输出实验配置步骤
3.4.5、编程实战:通用定时器PWM输出实验
3.5、通用定时器输入捕获实验
3.5.1、通用定时器输入捕获部分框图介绍
3.5.2、通用定时器输入捕获脉宽测量原理
3.5.3、通用定时器输入捕获实验配置步骤
3.5.4、编程实战:通用定时器输入捕获实验
3.6、通用定时器脉冲计数实验
3.6.1、脉冲计数实验原理
3.6.2、通用定时器脉冲计数实验配置步骤
3.6.3、编程实战:通用定时器脉冲计数实验
四、高级定时器
4.1、高级定时器简介
4.2、高级定时器框图
4.3、高级定时器输出指定个数PWM实验
4.4、高级定时器输出比较模式实验
4.4.1、高级定时器输出比较模式实验原理
4.4.2、高级定时器输出比较模式实验配置步骤
4.4.3、编程实战:高级定时器输出比较模式实验
4.5、高级定时器互补输出带死区控制实验
4.5.1、互补输出,还带死区控制,什么意思?
4.5.2、带死区控制的互补输出应用之H桥
4.5.3、捕获/比较通道的输出部分(通道1至3)
4.5.4、死区时间计算
4.5.5、刹车(断路)功能
4.5.6、高级定时器互补输出带死区控制实验配置步骤
4.5.7、编程实战:高级定时器互补输出带死区控制实验
4.6、高级定时器PWM输入模式实验
4.6.1、PWM输入模式工作原理
4.6.2、PWM输入模式时序
4.6.3、高级定时器PWM输入模式实验配置步骤
4.6.4、编程实战:高级定时器PWM输入模式实验

五、课堂总结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一、
二、
三、
四、
五、
六、
七、
八、
九、
十、

一、
二、
三、
四、
五、
六、
七、
八、
九、
十、

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

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

相关文章

c语言(指针进阶)

指针 一.什么是字符指针二.使用指针数组模拟二维数组三.函数指针 一.什么是字符指针 字符指针:指向字符型数据的指针变量。每个字符串在内存中都占用一段连续的存储空间,并有唯一确定的首地址。即将字符串的首地址赋值给字符指针,可让字符指针…

用HTML Canvas和JavaScript创建美丽的花朵动画效果

目录 一、程序代码 二、代码原理 三、运行效果 一、程序代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>flower</title><style>* {margin: 0;padding: 0;overflow: hidden;backg…

公需课考试怎么搜题找答案? #学习方法#学习方法

这些软件以其强大的搜索引擎和智能化的算法&#xff0c;为广大大学生提供了便捷、高效的解题方式。下面&#xff0c;让我们一起来了解几款备受大学生欢迎的搜题软件吧&#xff01; 1.粉鹿搜题 这是一个公众号 在线搜题刷题平台&#xff0c;支持语言、文字、拍照多种搜索方式…

操作 Docker 存储卷的常用指令汇总

1. 什么是存储卷&#xff1f; 存储卷就是将宿主机的本地文件系统中存在的某个目录直接与容器内部的文件系统上的某一目录建立绑定关系。使得可以在宿主机和容器内共享数据库内容&#xff0c;让容器直接访问宿主机中的内容&#xff0c;也可以宿主机向容器写入内容&#xff0c;容…

.NET Core WebAPI中使用Log4net记录日志

一、安装NuGet包 二、添加配置 // log4net日志builder.Logging.AddLog4Net("CfgFile/log4net.config");三、配置log4net.config文件 <?xml version"1.0" encoding"utf-8"?> <log4net><!-- Define some output appenders -->…

类加载过程介绍

一、类的生命周期 类被加载到jvm虚拟机内存开始&#xff0c;到卸载出内存为止&#xff0c;他的生命周期可以分为&#xff1a;加载->验证->准备->解析->初始化->使用->卸载。 其中验证、准备、解析统一称为链接阶段 1、加载 将类的字节码载入方法区中&#xf…

蓝桥杯第十四届电子类单片机组程序设计

目录 前言 蓝桥杯大赛历届真题&#xff08;点击查看&#xff09; 一、第十四届比赛题目 1.比赛原题 2.题目解读 1&#xff09;任务要求 2&#xff09;注意事项 二、任务实现 1.NE555读取时机的问题 1&#xff09;缩短计数时间 2&#xff09;实时读取 2.温度传感器读…

unity的重中之重:组件

检查器&#xff08;Hierarchy&#xff09;面板中的所有东西都是组件。日后多数工作都是和组件打交道&#xff0c;包括调参、自定义脚本组件。 文章目录 12 游戏的灵魂&#xff0c;脚本组件13 玩转脚本组件14 尽职的一生&#xff0c;了解组件的生命周期15 不能插队&#xff01;…

专业130+总分420+厦门大学847信号与系统考研经验厦大信息系统与通信工程,真题,大纲,参考书。

今年很幸运被厦门大学录取&#xff0c;考研专业课847信号与系统130&#xff0c;数二130&#xff0c;总分420&#xff0c;回头看这将近一年的复习&#xff0c;还是有不少经验和大家分享&#xff0c;希望对大家复习有帮助。专业课&#xff1a; 厦门大学847信号与系统在全国各高校…

BossPlayerCTF

靶场环境问题 靶场下载之后&#xff0c;可能会出现扫描不到IP的情况&#xff0c;需要进行调整&#xff0c;参考&#xff1a; Vulnhub靶机检测不到IP地址_vulnhub靶机nmap扫不到-CSDN博客 该靶机没有vim&#xff0c;需要使用vi命令去修改&#xff1b;改成当前网卡即可&#x…

推荐《架构探险:从零开始写Java Web框架》

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 春节读了《架构探险&#xff1a;从零开始写Java Web框架》&#xff0c;一本大概10年前的好书。 本书的作者是阿里巴巴架构师黄勇。黄勇对分布式服务架构与大数据技术有深入…

【Linux】进程信号概念 | 核心转储 | 信号的产生

文章目录 一、信号入门1.1 生活中的信号1.2 进程角度的信号1.3 信号的概念1.4 信号的三种常见处理方式 二、信号的产生2.1 通过终端按键产生信号问题1&#xff1a;OS怎么知道键盘输入了ControlC &#xff1f;问题2&#xff1a;按CtrlC终止进程和按Ctrl\终止进程&#xff0c;有什…

多进程面试题汇总

这里写目录标题 一、多进程1、进程的定义&#xff1a;2、单核多任务CPU执行原理3、进程的优点和缺点4、创建进程15、创建进程26、进程池6.1、进程池的作用6.2、原理图6.3、使用进程池的优点 7、进程间的通信&#xff08;Queue&#xff09;7.1、需求1&#xff1a;采用多进程将10…

vue axios 请求后端无法传参问题

vue请求后端无法传参问题 问题描述处理过程总结 问题描述 在学习vue时&#xff0c;使用axios调用后端&#xff0c;发现无法把参数正确传到后端&#xff0c;现象如下&#xff1a; 使用vue发起请求&#xff0c;浏览器上已经有传参&#xff0c;但是后端没接收到对应的用户名密码&…

物流|基于Springboot的物流管理系统设计与实现(源码+数据库+文档)

物流管理系统目录 目录 基于Springboot的物流管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员和管理员功能实现 &#xff08;1&#xff09;用户管理 &#xff08;2&#xff09;公告信息管理 &#xff08;3&#xff09;物流信息管理 &#xff08;…

希捷EXOS X 5U84存储数据恢复案例

一、案例背景 希捷EXOS X 5U84是一款高性能的企业级存储设备&#xff0c;常用于数据中心、云计算等领域。然而&#xff0c;即使使用最先进的存储设备&#xff0c;数据丢失的风险仍然存在。下面我们将介绍一起希捷EXOS X 5U84数据恢复案例。 天津某检测中心使用了希捷EXOS X 5U8…

【51单片机】利用STC-ISP软件工具【定时器计算器】配置【定时器】教程(详细图示)(AT89C52)

前言 大家好吖&#xff0c;欢迎来到 YY 滴单片机系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过单片机的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的…

哈希切分

目录 一 二 三 2.单个子文件太大怎么办&#xff1f;&#xff08;分两种情况讨论&#xff09; 一 这样的题目典型就是KV模型的问题&#xff0c;即通过key IP找对应的value 出现次数&#xff0c;对于KV模型的问题首先想到的就是用map来统计次数&#xff0c;但是100G大小的文件…

《合成孔径雷达成像算法与实现》FIgure6.20

% rho_r c/(2*Fr)而不是rho_r c/(2*Bw) % Hsrcf exp函数里忘记乘pi了 clc clear close all参数设置 距离向参数设置 R_eta_c 20e3; % 景中心斜距 Tr 2.5e-6; % 发射脉冲时宽 Kr 20e12; % 距离向调频率 alpha_os_r 1.2; …

《合成孔径雷达成像算法与实现》Figure6.18

% rho_r c/(2*Fr)而不是rho_r c/(2*Bw) % Hsrcf exp函数里忘记乘pi了 clc clear close all参数设置 距离向参数设置 R_eta_c 20e3; % 景中心斜距 Tr 2.5e-6; % 发射脉冲时宽 Kr 20e12; % 距离向调频率 alpha_os_r 1.2; …