目录
概述
本文主要介绍STM32H7通用性定时器计数功能的用法,笔者以TIM2定时器为例,介绍如何通过配置参数,实现定制化时钟的需求。
1 STM32定时器介绍
1.1 认识通用定时器
STM32H7的通用定时器包括TIM2/TIM3/TIM4/TIM5,通用定时器包含一个 16 位或 32 位自动重载计数器,该计数器由可编程预分频器驱动。它们可用于多种用途,包括测量输入信号的脉冲宽度( 输入捕获)或生成输出波形( 输出比较和 PWM)。使用定时器预分频器和 RCC 时钟控制器预分频器,可将脉冲宽度和波形周期从几微秒调制到几毫秒。
1.2 通用定时器的特征
通用 TIMx 定时器具有以下特性:
1) 16 位( TIM3 和 TIM4)或 32 位( TIM2 和 TIM5)递增、递减和递增/递减自动重载计数器
2)16 位可编程预分频器,用于对计数器时钟频率进行分频(可在运行时修改),分频系数介于 1 到 65535 之间。
3)多达 4 个独立通道,可用于:
– 输入捕获
– 输出比较
– PWM 生成(边沿和中心对齐模式)
– 单脉冲模式输出
4)使用外部信号控制定时器且可实现多个定时器互连的同步电路。
5)发生如下事件时生成中断/DMA 请求:
– 更新:计数器上溢/下溢、计数器初始化(通过软件或内部/外部触发)
– 触发事件(计数器启动、停止、初始化或通过内部/外部触发计数)
– 输入捕获
– 输出比较
6)支持定位用增量(正交)编码器和霍尔传感器电路
7)触发输入用作外部时钟或逐周期电流管理
1.3 递增计数模式
在递增计数模式下,计数器从 0 计数到自动重载值( TIMx_ARR 寄存器的内容),然后重新从 0 开始计数并生成计数器上溢事件。每次发生计数器上溢时会生成更新事件,或将 TIMx_EGR 寄存器中的 UG 位置 1(通过软件或使用从模式控制器)也可以生成更新事件。
通过软件将 TIMx_CR1 寄存器中的 UDIS 位置 1 可禁止 UEV 事件。这可避免向预装载寄存器写入新值时更新影子寄存器。在 UDIS 位写入 0 之前不会产生任何更新事件。不过,计数器和预分频器计数器都会重新从 0 开始计数(而