【STM32】学习笔记:TIM定时中断详解(第13篇)

00. 目录

文章目录

  • 00. 目录
  • 01. TIM简介
  • 02. 定时器类型
  • 03. 基本定时器
  • 04. 通用定时器
  • 05. 高级定时器
  • 06. 定时中断基本结构
  • 07. 预分频器时序
  • 08. 计数器时序
  • 09. 计数器无预装时序
  • 10. 计数器有预装时序
  • 11. RCC时钟树
  • 12. 附录
  • 01. TIM简介

  • TIM(Timer)定时器
  • 定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断
  • 16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时
  • 不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能
  • 根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型
  • 02. 定时器类型

    STM32F103C8T6定时器资源:TIM1、TIM2、TIM3、TIM4

    03. 基本定时器

    基本定时器TIM6和TIM7各包含一个16位自动装载计数器,由各自的可编程预分频器驱动。

    它们可以作为通用定时器提供时间基准,特别地可以为数模转换器(DAC)提供时钟。实际上,它们在芯片内部直接连接到DAC并通过触发输出直接驱动DAC。

    这2个定时器是互相独立的,不共享任何资源。

    TIM6 和TIM7 的主要特性
    TIM6和TIM7定时器的主要功能包括:
    ● 16位自动重装载累加计数器

    ● 16位可编程(可实时修改)预分频器,用于对输入的时钟按系数为1~65536之间的任意数值分频

    ● 触发DAC的同步电路

    ● 在更新事件(计数器溢出)时产生中断/DMA请求

    04. 通用定时器

    通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成。

    它适用于多种场合,包括测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)。

    使用定时器预分频器和RCC时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。

    每个定时器都是完全独立的,没有互相共享任何资源。它们可以一起同步操作

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

    ● 16位向上、向下、向上/向下自动装载计数器

    ● 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65536之间的任意数值

    ● 4个独立通道:
    ─ 输入捕获
    ─ 输出比较
    ─ PWM生成(边缘或中间对齐模式)
    ─ 单脉冲模式输出

    ● 使用外部信号控制定时器和定时器互连的同步电路

    ● 如下事件发生时产生中断/DMA:
    ─ 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)
    ─ 触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)
    ─ 输入捕获
    ─ 输出比较

    ● 支持针对定位的增量(正交)编码器和霍尔传感器电路

    ● 触发输入作为外部时钟或者按周期的电流管理

    05. 高级定时器

    高级控制定时器(TIM1和TIM8)由一个16位的自动装载计数器组成,它由一个可编程的预分频器驱动。

    它适合多种用途,包含测量输入信号的脉冲宽度(输入捕获),或者产生输出波形(输出比较、PWM、嵌入死区时间的互补PWM等)。

    使用定时器预分频器和RCC时钟控制预分频器,可以实现脉冲宽度和波形周期从几个微秒到几个毫秒的调节。

    高级控制定时器(TIM1和TIM8)和通用定时器(TIMx)是完全独立的,它们不共享任何资源。它们可以同步操作。

    TIM1 和TIM8 主要特性
    TIM1和TIM8定时器的功能包括:
    ● 16位向上、向下、向上/下自动装载计数器

    ● 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65535之间的任意数值

    ● 多达4个独立通道:
    ─ 输入捕获
    ─ 输出比较
    ─ PWM生成(边缘或中间对齐模式)
    ─ 单脉冲模式输出

    ● 死区时间可编程的互补输出

    ● 使用外部信号控制定时器和定时器互联的同步电路

    ● 允许在指定数目的计数器周期之后更新定时器寄存器的重复计数器

    ● 刹车输入信号可以将定时器输出信号置于复位状态或者一个已知状态

    ● 如下事件发生时产生中断/DMA:
    ─ 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)
    ─ 触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)
    ─ 输入捕获
    ─ 输出比较
    ─ 刹车信号输入

    ● 支持针对定位的增量(正交)编码器和霍尔传感器电路

    ● 触发输入作为外部时钟或者按周期的电流管理

    06. 定时中断基本结构

    07. 预分频器时序

    计数器计数频率:CK_CNT = CK_PSC / (PSC + 1)

    08. 计数器时序

    计数器溢出频率:CK_CNT_OV = CK_CNT / (ARR + 1) = CK_PSC / (PSC + 1) / (ARR + 1)

    09. 计数器无预装时序

    10. 计数器有预装时序

    11. RCC时钟树

    三种不同的时钟源可被用来驱动系统时钟(SYSCLK):
    ● HSI振荡器时钟

    ● HSE振荡器时钟

    ● PLL时钟

    这些设备有以下2种二级时钟源:
    ● 40kHz低速内部RC,可以用于驱动独立看门狗和通过程序选择驱动RTC。RTC用于从停机/待机模式下自动唤醒系统。

    ● 32.768kHz低速外部晶体也可用来通过程序选择驱动RTC(RTCCLK)。

    当不被使用时,任一个时钟源都可被独立地启动或关闭,由此优化系统功耗。

    用户可通过多个预分频器配置AHB、高速APB(APB2)和低速APB(APB1)域的频率。AHB和APB2域的最大频率是72MHz。APB1域的最大允许频率是36MHz。SDIO接口的时钟频率固定为HCLK/2。

    RCC通过AHB时钟(HCLK)8分频后作为Cortex系统定时器(SysTick)的外部时钟。通过对SysTick控制与状态寄存器的设置,可选择上述时钟或Cortex(HCLK)时钟作为SysTick时钟。ADC时钟由高速APB2时钟经2、4、6或8分频后获得。

    定时器时钟频率分配由硬件按以下2种情况自动设置:

    1. 如果相应的APB预分频系数是1,定时器的时钟频率与所在APB总线频率一致。
    2. 否则,定时器的时钟频率被设为与其相连的APB总线频率的2倍。

    12. 附录

    参考: 【STM32】江科大STM32学习笔记汇总

    作者:Print World

    物联沃分享整理
    物联沃-IOTWORD物联网 » 【STM32】学习笔记:TIM定时中断详解(第13篇)

    发表评论