16、定时器(2)

4 通用定时器

4.1 通用定时器特性

1、16位递增、递减、中心对齐计数器(计数值0 ~ 65535)

2、16位预分频器(分频系数:1 ~ 65536)

3、可用于触发DAC、ADC

4、在更新事件、触发事件、输入捕获、输出比较时会产生中断/DMA请求

5、4个独立通道用于:输入捕获、输出比较、输出PWM、单脉冲模式

6、使用外部信号控制可实现多定时器互连的同步电路

7、支持编码器和霍尔传感器

4.2 时钟源选择

计数器时钟源

设置方法

描述

内部时钟CK_INT

TIMx_CMCR寄存器SMS位设置000

使用APB1总线内部时钟,常用

外部时钟模式(引脚)

TIMx_CMCR寄存器SMS位设置111

使用定时器输入通道TI1或TI2引脚的外部信号

外部时钟模式(触发)

TIMx_CMCR寄存器ECE位设置1

使用外部触发输入ETR引脚的信号

内部触发输入

复杂

使用另一个定时器的输出作为时钟源

4.3 通用定时器寄存器

寄存器

位

作用

CR1

0

0:关闭计数器

1:使能计数器

1

0:允许产生更新事件

1:禁止更新事件

2

0:多条件下可产生中断/DMA请求

1:仅计数器可产生

3

0:循环模式

1:计数器在下次更新后停止

4

0:向上

1:向下

5 ~ 6

00:边沿对齐

01:中央对齐,仅下沿中断

10:中央对齐,仅上沿中断

11:中央对齐,上下沿中断

8 ~ 9

00:不分频

01:二分频

11:四分频

SMCR

0 ~ 2

选择定时器从模式

14

使能外部时钟模式2

15

选择外部触发极性

5 通用定时器输出PWM

5.1 捕获/比较寄存器CCRx

捕获/比较寄存器(CCRx)是通用定时器中每个通道所对应的16位寄存器,其主要拥有输入捕获输出比较两种工作模式。

1、输出比较模式:和定时器当前值比较,以进行PWM生成

2、输入捕获模式:记录定时器当前值,可以测量脉宽和频率

5.2 PWM输出原理

假设在递增计数模式时,CNT与CRRx值进行比较,当CNT<CRRx,输出低电平,反之输出高电平。因此PWM波的周期或频率由ARR决定,OWM波占空比由CRRx决定。

5.3 PWM模式

PWM模式1:

递增:CNT<CCRx,输出有效电平;CNT≥CCRx,输出无效电平

递减:CNT>CCRx,输出无效电平;CNT≤CCRx,输出有效电平

PWM模式2:

递增:CNT<CCRx,输出无效电平;CNT≥CCRx,输出有效电平

递减:CNT>CCRx,输出无效电平;CNT≤CCRx,输出有效电平

5.4 PWM输出配置步骤

1、配置定时器基础参数:HAL_TIM_PWM_Init()

2、PWM MSP初始化:HAL_TIM_PWM_MspInit()

3、配置PWM模式、比较值:HAL_TIM_PWM_ConfigChannel()

4、使能输出并启动计数器:HAL_TIM_PWM_Start()

5、修改比较值以控制占空比(可选):__HAL_TIM_SET_COMPARE()

6、使能通道预装载(可选):__HAL_TIM_ENABLE_OCxPRELOAD()

5.5 PWM输出初始化结构体

PWM初始化配置由两个结构体完成,一个负责定时器的基础配置:TIM_HandleTypeDef,一个负责PWM输出参数配置:TIM_OC_InitTypeDef

其中TIM_HanldeTypeDef的关键成员如下

Instance:指向要使用的定时器

Prescaler:预分频器

CounterMode:计数方向

Period:决定自动重装载值ARR

ClockDivision:决定时钟分频系数

TIM_OC_InitTypeDef的关键成员如下

成员

功能描述

可选值

OCMode

PWM模式选择

模式1:TIM_OCMODE_PWM1

模式2:TIM_OCMODE_PWM2

Pulse

CCR值,决定占空比

0 ~ 65535

OCPolarity

输出通道有效电平极性

高电平:TIM_OCPOLARITY_HIGH

低电平:TIM_OCPOLARITY_LOW

OCNPolarity

互补通道有效电平极性

高电平:TIM_OCNPOLARITY_HIGH

低电平:TIM_OCNPOLARITY_LOW

OCFastMode

输出快速模式使能

使能:TIM_OCFASTMODE_ENABLE

失能:TIM_OCFASTMODE_DISABLE

OCIdleState

主通道空闲电平状态

高电平:TIM_OCIDLESTATE_SET

低电平:TIM_OCIDLESTATE_RESET

OCNIdleState

互补通道空闲电平状态

高电平:TIM_OCIDLESTATE_SET

低电平:TIM_OCIDLESTATE_RESET

posted @ 2026-08-21 16:33  老鼠学32  阅读(12)  评论(0)    收藏  举报