当前位置: 首页 > article >正文

【STM32项目实战系列】了解ST系列MCU外设:定时器TIM

前言:TIM(定时器)外设是用于时间管理、计时、脉冲宽度调制(PWM)输出、输入捕获、输出比较等功能的重要模块,本篇文章就详细介绍一下。以供大家学习使用。


当然我们在学习MCU外设模块的时候,翻看参考手册是一个非常好的工具,那里面有非常详细的关于外设具体原理,分类与使用方法的讲解,在官网下载的一般都是全英文版本的,这里我会给大家上传一个全中文的版本,以供大家参考使用。

1,TIM简介

根据官方的F4的参考手册里面的内容,共有2个高级控制定时器TIM1、TIM8,2个基本定时器TIM6、TIM7,10个通用定时器TIM2~TIM5、TIM9~TIM14(PS:这里面的内容基本适用于整个STM32F4系列的微控制器)

其主要的功能列举如下:

  • 定时功能(Timer):所有的TIM定时器都可以用作基本的计时器,计时器周期可以通过外部时钟源或内部时钟源来控制。计时器的计数值可以用来生成定时中断或控制其他外设。

  • PWM输出:定时器能够生成精确的PWM信号,广泛应用于电机控制、亮度调节、音频输出等领域。通过调整定时器的预分频和自动重装载值,可以控制PWM信号的周期和占空比。

  • 输入捕获:输入捕获功能允许定时器记录输入信号的上升沿或下降沿的时间。它非常适用于测量频率、周期、脉冲宽度等参数。

  • 输出比较:输出比较功能用于生成定时器比较输出事件。例如,当定时器计数值与预定的比较值相等时,可以触发输出引脚的状态改变,适用于生成精确的时间控制信号。

  • 死区时间控制:高级定时器(如TIM1和TIM8)支持死区时间控制,适用于电机驱动等需要精确控制开关信号的应用,能够避免由于两个相反信号的同时变化而引起的短路问题。

  • 自动重载和预分频:定时器支持自动重载(ARR)和预分频(PSC),可以灵活设置计时器的周期和分辨率。

  • 多通道支持:每个定时器通常支持多个输出通道(例如,TIM2有4个通道),这意味着一个定时器可以同时控制多个PWM输出或多个输入捕获功能。

2,TIM定时器分类介绍

2.1 高级定时器

用途

高级定时器可用于各种用途,包括测量输入信号的脉冲宽度(输入捕获),或者生成输出波形(输出比较、PWM 和带死区插入的互补PWM)。使用定时器预分频器和 RCC 时钟控制器预分频器,可将脉冲宽度和波形周期从几微秒调制到几毫秒。

【主要特性】

(1)16 位递增、递减、递增/递减自动重载计数器。16位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数介于1到 65536 之间。

(2)多达 4 个独立通道,可用于:

  • 输入捕获
  • 输出比较
  • PWM 生成(边沿和中心对齐模式)
  • 单脉冲模式输出

(3)带可编程死区的互补输出。

(4)使用外部信号控制定时器且可实现多个定时器互连的同步电路。

(5)重复计数器,用于仅在给定数目的计数器周期后更新定时器寄存器。用于将定时器的输出信号置于复位状态或已知状态的断路输入。

(6)发生如下事件时生成中断/DMA 请求:

  • 更新:计数器上溢/下溢、计数器初始化(通过软件或内部/外部触发)触发事件(计数器启动、停止、初始化或通过内部/外部触发计数)
  • 输入捕获
  • 输出比较
  • 断路输入

(7)支持定位用增量(正交)编码器和霍尔传感器电路。

(8)外部时钟触发输入或逐周期电流管理

【内部原理框图】

【详细功能说明】

这里面的内容太多了,后面上传的文档中大家可以自行查看,功能还是比较多的,想什么PWM模式、单脉冲模式、编码器接口模式。

【寄存器分类】

如果你是使用的传统底层的寄存器的开发模式,那么这一项就是你必须要详细看的内容,其实无论是标准库还是HAL库都是基于寄存器的二次开发而已。

2.2 通用定时器

用途

通用定时器包含一个 16 位或 32 位自动重载计数器,该计数器由可编程预分频器驱动。它们可用于多种用途,包括测量输入信号的脉冲宽度(输入捕获)或生成输出波形(输出比较和 PWM)。使用定时器预分频器和 RCC 时钟控制器预分频器,可将脉冲宽度和波形周期从几微秒调制到几毫秒。

【主要特性】

(1)16 位(TIM3 和 TIM4)或 32 位数器(TIM2 和 TIM5)递增、递减和递增/递减自动重载计
(2)16 位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数介于1到 65536 之间。
(3)多达 4 个独立通道,可用于:

  • 输入捕获
  • 输出比较
  • PWM 生成(边沿和中心对齐模式)
  • 单脉冲模式输出

(4)使用外部信号控制定时器且可实现多个定时器互连的同步电路,发生如下事件时生成中断/DMA 请求:

  • 更新:计数器上溢/下溢、计数器初始化(通过软件或内部/外部触发)
  • 触发事件(计数器启动、停止、初始化或通过内部/外部触发计数)
  • 输入捕获
  • 输出比较

(5)支持定位用增量(正交)编码器和霍尔传感器电路

(6)外部时钟触发输入或逐周期电流管理

【内部原理框图】

 【详细功能说明】

【寄存器分类】

2.3 基本定时器

用途

基本定时器 TIM6 和 TIM7 包含一个 16 位自动重载计数器,该计数器由可编程预分频器驱动。此类定时器不仅可用作通用定时器以生成时基,还可以专门用于驱动数模转换器(DAC)。实际上,此类定时器内部连接到 DAC 并能够通过其触发输出驱动 DAC。这些定时器彼此完全独立,不共享任何资源。

【主要特性】

(1)16位自动重载递增计数器
(2)16 位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数介于1和 65536 之间用于触发 DAC 的同步电路
(3)发生如下更新事件时会生成中断/DMA 请求:计数器上溢

【内部原理框图】

【详细功能说明】

这个功能就比较少了,毕竟是一个基本定时器。

【寄存器分类】


上面资源已经上传,大家自行查看吧!!!在用中学习与精进。。。


http://www.kler.cn/a/519364.html

相关文章:

  • Hook 函数
  • Spring Boot整合JavaMail实现邮件发送
  • VScode 开发 Springboot 程序
  • 数据结构:二叉树—面试题(二)
  • 编码器和扩散模型
  • rocketmq-product-send方法源码分析
  • HTML-新浪新闻-实现标题-排版
  • WPS计算机二级•幻灯片的页面布局
  • 【unity游戏开发之InputSystem——07】InputSystem+UGUI配合使用(基于unity6开发介绍)
  • 【问题解决】el-upload数据上传成功后不显示成功icon
  • C++红黑树详解
  • 参数是模型学会的东西,预训练是让它学习的东西
  • 【C/C++】C++中使用vector存储并遍历数据
  • 【数据结构】_以单链表为例分析各种方法实现的特殊情况考虑思路
  • git基础指令大全
  • 题海拾贝:力扣 232.用栈实现队列
  • 如何在Spring Boot项目中高效集成Spring Security
  • 前端开发中的新兴技术:Web Components 实战应用
  • HTML一般标签和自闭合标签介绍
  • C++解决走迷宫问题:DFS、BFS算法应用
  • 力扣 Hot 100 题解 (js版)更新ing
  • 记录一个连不上docker中的mysql的问题
  • golang 使用双向链表作为container/heap的载体
  • python自动获取所需要的包并且保存到requirements.txt中
  • Redis高阶6-预热、雪崩、击穿、穿透问题
  • GoFrame MongoDB 使用指南