当前位置:首页 > 单片机 > 单片机
[导读]通用定时器(TIMx)一、TIMx简介二、TIMx主要功能三、TIMx功能描述3.1 时基单元3.2 计数器模式3.3 时钟选择3.4捕获/比较通道3.5 输入捕获模式3.6 PWM输入模式3.7 强置输出模式3.8 输出比较模式3.9 PWM模式3.10单脉冲模

通用定时器(TIMx)

一、TIMx简介

二、TIMx主要功能

三、TIMx功能描述

3.1 时基单元

3.2 计数器模式

3.3 时钟选择

3.4捕获/比较通道

3.5 输入捕获模式

3.6 PWM输入模式

3.7 强置输出模式

3.8 输出比较模式

3.9 PWM模式

3.10单脉冲模式

四、简单例子理解TIMx

4.1 使得PB5-TIM3通道2产生频率为12.5Hz的方波,该方波控制LED1的闪烁

4.2周期控制通用定时器3的2通道,实现1KHz的不同占空比波形,控制LED实现呼吸灯

本文涉及链接



一、TIMx简介

  通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成。它适用于多种场合,包括测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)。使用定时器预分频器和RCC时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。每个定时器都是完全独立的,没有互相共享任何资源。它们可以一起同步操作。[正版请搜索:beautifulzzzz(看楼主博客园官方博客,享高质量生活)嘻嘻!!!]


二、TIMx主要功能

  通用TIMx (TIM2、 TIM3、 TIM4和TIM5)定时器功能包括:

●16位向上、向下、向上/向下自动装载计数器
● 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1 ~65536之间的任意数值
● 4个独立通道:
─ 输入捕获
─ 输出比较
─ PWM生成(边缘或中间对齐模式)
─ 单脉冲模式输出
● 使用外部信号控制定时器和定时器互连的同步电路
● 如下事件发生时产生中断/DMA:
─ 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)
─ 触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)
─ 输入捕获
─ 输出比较
● 支持针对定位的增量(正交)编码器和霍尔传感器电路
● 触发输入作为外部时钟或者按周期的电流管理

                        图1 通用定时器框图
注:Reg:根据控制位的设定,在U事件时传送预加载寄存器的内容至工作寄存器
斜向下的箭头:事件
斜向上的箭头:中断和DMA输出


三、TIMx功能描述

3.1 时基单元

  可编程通用定时器的主要部分是一个16位计数器和与其相关的自动装载寄存器。这个计数器可以向上计数、向下计数或者向上向下双向计数。此计数器时钟由预分频器分频得到。计数器、自动装载寄存器和预分频器寄存器可以由软件读写,在计数器运行时仍可以读写。

时基单元包含:
● 计数器寄存器(TIMx_CNT)
● 预分频器寄存器 (TIMx_PSC)
● 自动装载寄存器 (TIMx_ARR)

  自动装载寄存器是预先装载的,写或读自动重装载寄存器将访问预装载寄存器。根据在TIMx_CR1 寄存器中的自动装载预装载使能位(ARPE)的设置,预装载寄存器的内容被立即或在每次的更新事件UEV时传送到影子寄存器。当计数器达到溢出条件(向下计数时的下溢条件)并当TIMx_CR1 寄存器中的UDIS位等于’0’时,产生更新事件。更新事件也可以由软件产生。随后会详细描述每一种配置下更新事件的产生。

计数器由预分频器的时钟输出CK_CNT驱动,仅当设置了计数器TIMx_CR1 寄存器中的计数器使能位(CEN)时, CK_CNT才有效。
注:真正的计数器使能信号CNT_EN是在CEN的一个时钟周期后被设置。

  预分频器可以将计数器的时钟频率按1 到65536之间的任意值分频。它是基于一个(在TIMx_PSC寄存器中的)16位寄存器控制的16位计数器。这个控制寄存器带有缓冲器,它能够在工作时被改变。新的预分频器参数在下一次更新事件到来时被采用。(图2和图3给出了在预分频器运行时,更改计数器参数的例子。)

           图2 当预分频器的参数从1 变到2时,计数器的时序图

           图3 当预分频器的参数从1 变到4时,计数器的时序图


3.2 计数器模式

3.2.1 向上计数模式

  在向上计数模式中,计数器从0计数到自动加载值(TIMx_ARR计数器的内容),然后重新从0开始计数并且产生一个计数器溢出事件。
  每次计数器溢出时可以产生更新事件,在TIMx_EGR寄存器中(通过软件方式或者使用从模式控制器)设置UG位也同样可以产生一个更新事件。
  设置TIMx_CR1 寄存器中的UDIS位,可以禁止更新事件;这样可以避免在向预装载寄存器中写入新值时更新影子寄存器。在UDIS位被清’0’之前,将不产生更新事件。但是在应该产生更新事件时,计数器仍会被清’0’,同时预分频器的计数也被请0(但预分频系数不变)。此外,如果设置了 TIMx_CR1 寄存器中的URS位(选择更新请求),设置UG位将产生一个更新事件UEV,但硬件不设置UIF标志(即不产生中断或DMA请求);这是为了避免在捕获模式下清除计数器时,同时产生更新和捕获中断。
  当发生一个更新事件时,所有的寄存器都被更新,硬件同时(依据 URS 位)设置更新标志位(TIMx_SR寄存器中的UIF位)。
● 预分频器的缓冲区被置入预装载寄存器的值(TIMx_PSC寄存器的内容)。
● 自动装载影子寄存器被重新置入预装载寄存器的值(TIMx_ARR)。
下图给出一些例子,当TIMx_ARR=0x36时计数器在不同时钟频率下的动作。

              图4 计数器时序图,内部时钟分频因子为1

             图5 计数器时序图,内部时钟分频因子为2

            图6 计数器时序图,内部时钟分频因子为4

            图7 计数器时序图,内部时钟分频因子为N

        图8 计数器时序图,当ARPE=0时的更新事件(TIMx_ARR没有预装入)

        图9 计数器时序图,当ARPE=1 时的更新事件(预装入了TIMx_ARR)

3.2.2向下计数模式

  在向下模式中,计数器从自动装入的值(TIMx_ARR计数器的值)开始向下计数到0,然后从自动装入的值重新开始并且产生一个计数器向下溢出事件。
  每次计数器溢出时可以产生更新事件,在TIMx_EGR寄存器中(通过软件方式或者使用从模式控制器)设置UG位,也同样可以产生一个更新事件。
  设置TIMx_CR1 寄存器的UDIS位可以禁止UEV事件。这样可以避免向预装载寄存器中写入新值时更新影子寄存器。因此UDIS位被清为’0’之前不会产生更新事件。然而,计数器仍会从当前自动加载值重新开始计数,同时预分频器的计数器重新从0开始(但预分频系数不变)。
  此外,如果设置了 TIMx_CR1 寄存器中的URS位(选择更新请求) ,设置UG位将产生一个更新事件UEV但不设置UIF标志(因此不产生中断和DMA请求),这是为了避免在发生捕获事件并清除计数器时,同时产生更新和捕获中断。  当发生更新事件时,所有的寄存器都被更新,并且(根据URS位的设置)更新标志位(TIMx_SR寄存器中的UIF位)也被设置。

● 预分频器的缓存器被置入预装载寄存器的值(TIMx_PSC寄存器的值)。
● 当前的自动加载寄存器被更新为预装载值(TIMx_ARR寄存器中的内容)。

注:自动装载在计数器重载入之前被更新,因此下一个周期将是预期的值。

  以下是一些当TIMx_ARR=0x36时,计数器在不同时钟频率下的操作例子。

            图10 计数器时序图,内部时钟分频因子为1

            图11 计数器时序图,内部时钟分频因子为2

            图12 计数器时序图,内部时钟分频因子为4

            图13 计数器时序图,内部时钟分频因子为N

          图14 计数器时序图,当没有使用重复计数器时的更新事件

3.2.3中央对齐模式(向上/向下计数)

  在中央对齐模式,计数器从0开始计数到自动加载的值(TIMx_ARR寄存器)?1 ,产生一个计数器溢出事件,然后向下计数到1 并且产生一个计数器下溢事件;然后再从0开始重新计数。
  在这个模式,不能写入TIMx_CR1 中的DIR方向位。它由硬件更新并指示当前的计数方向。可以在每次计数上溢和每次计数下溢时产生更新事件;也可以通过(软件或者使用从模式控制器)设置TIMx_EGR寄存器中的UG位产生更新事件。然后,计数器重新从0开始计数,预分频器也重新从0开始计数。
  设置TIMx_CR1 寄存器中的UDIS位可以禁止UEV事件。这样可以避免在向预装载寄存器中写入新值时更新影子寄存器。因此UDIS位被清为’0’之前不会产生更新事件。然而,计数器仍会根据当前自动重加载的值,继续向上或向下计数。
  此外,如果设置了 TIMx_CR1 寄存器中的URS位(选择更新请求) ,设置UG位将产生一个更新事件UEV但不设置UIF标志(因此不产生中断和DMA请求),这是为了避免在发生捕获事件并清除计数器时,同时产生更新和捕获中断。
  当发生更新事件时,所有的寄存器都被更新,并且(根据URS位的设置)更新标志位(TIMx_SR寄存器中的UIF位)也被设置。

● 预分频器的缓存器被加载为预装载(TIMx_PSC寄存器)的值。
● 当前的自动加载寄存器被更新为预装载值(TIMx_ARR寄存器中的内容)。

注:如果因为计数器溢出而产生更新,自动重装载将在计数器重载入之前被更新,因此下一个周期将是预期的值(计数器被装载为新的值)。

  以下是一些计数器在不同时钟频率下的操作的例子:

        图15 计数器时序图,内部时钟分频因子为1 , TIMx_ARR=0x6

             图16 计数器时序图,内部时钟分频因子为2

        图17 计数器时序图,内部时钟分频因子为4, TIMx_ARR=0x36

              图18 计数器时序图,内部时钟分频因子为N

图19 计数器时序图, ARPE=1 时的更新事

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在微控制器领域,MSP430与STM32无疑是两颗璀璨的明星。它们各自凭借其独特的技术特点和广泛的应用领域,在市场上占据了重要的位置。本文将深入解析MSP430与STM32之间的区别,探讨它们在不同应用场景下的优势和局限...

关键字: MSP430 STM32 单片机

STM32是由意法半导体公司(STMicroelectronics)推出的基于ARM Cortex-M内核的32位微控制器系列,以其高性能、低功耗、丰富的外设接口和强大的生态系统深受广大嵌入式开发者喜爱。本文将详细介绍S...

关键字: STM32 单片机

STM32与51单片机之间有什么差异呢?两者可以说是一场科技与性能的较量了。在科技飞速发展的今天,微控制器(MCU)已广泛应用于各类电子设备和系统中,发挥着举足轻重的作用。其中,STM32和51单片机作为两种常见的微控制...

关键字: STM32 51单片机 MCU

电磁铁是一种利用电流产生磁场的装置,具有快速响应、易于控制等特点,在工业自动化、电子设备、科学实验等领域有着广泛的应用。STM32是一款功能强大的微控制器,具有高性能、低功耗、易于编程等优点,是控制电磁铁的理想选择。本文...

关键字: 电磁铁 微控制器 STM32

边缘人工智能的实现涉及到三个基本 要素:安全性,连接性、自主性,而其中自主性是AI能力的体现,也是边缘AI有别于其他传统的物联网的关键。而通过ST Edge AI套件,就可以帮助各种不同类型的开发者实现覆盖全硬件平台的全...

关键字: 边缘人工智能 AI STM32

今天,小编将在这篇文章中为大家带来STM32单片机最小系统的有关报道,通过阅读这篇文章,大家可以对它具备清晰的认识,主要内容如下。

关键字: 单片机 单片机最小系统 STM32

STM32是一款由STMicroelectronics生产的微控制器系列,具有高性能、低功耗和丰富的外设资源。其中,串口通信是一种常用的通信方式,可以实现与其他设备之间的数据传输。

关键字: STM32 串口通信 微控制器

STM32是一种广泛使用的微控制器,具有丰富的通信接口。其中,串口通信是STM32与其他设备或系统进行数据交换的重要方式之一。本文将详细介绍STM32串口通信的原理、应用及常见故障。

关键字: STM32 串口通信

由于目前缺乏相应的监测技术,地下电缆线路出现异常运行状态无法被及时发现,久而久之易演变成大故障,最终只能通过更换地下电缆进行修复,耗费大量的人力、物力。鉴于此,开发了一种基于STM32的地下电缆异常状态检测系统,利用热传...

关键字: STM32 地下电缆

交通灯控制器是用于控制交通信号灯运行的设备,它可以根据交通流量、行人需求以及其他因素,动态地调整信号灯的变化时间和绿灯时长,以保证交通的流畅和安全。

关键字: 交通信号灯 STM32
关闭
关闭