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 |

浙公网安备 33010602011771号