TIMER

示例列表

本章介绍 TIM 示例的详细信息。RTL87x2G 为 TIM 外设提供以下示例。

功能概述

RTL87x2G 嵌入了八个定时器模块,这些模块由软件控制、可编程,并可用于各种任务。 每个定时器通道完全独立,不共享任何资源,因此它们可以同步运行。

特性列表

  • 通道数量:8。

  • 独立输入时钟分频器 1/2, 1/4, 1/8, 1/16, 1/32, 1/40, 1/64。

  • 定时器时钟源:32 KHz, 40 MHz, PLL 。

  • 2 种模式(Free-run/用户自定义)。

  • 支持 PWM 输出功能。

  • 32-bits 递减计数器。

  • 超时中断。

  • 互补 PWM 输出和死区(仅 TIM2/TIM3)。

定时器功能

TIM 可以在两种模式下运行:Free-run 模式和 User-define 模式。通过初始化结构体中 TIM_TimeBaseInitTypeDef::TIM_Mode 进行设置,可以选择 TIM_Mode_FreeRunTIM_Mode_UserDefine 。 在两种模式下,TIM 均为递减计数。

  • Free-run 模式:TIM 从 0xFFFFFFFF 开始递减计数。

  • User-define 模式:TIM 从用户自定义的计数器值开始递减计数。通过初始化结构体中 TIM_TimeBaseInitTypeDef::TIM_Period 进行设置。

当计数到达 0 时,会触发 TIM 的超时中断,同时计数器将重新加载初始值,并继续倒计数。 当 TIM 关闭后,将停止计数,重新开启 TIM 后,计数器将重新加载初始值并开始计数。

PWM 模式

每个 TIM 均支持 PWM 输出功能,其中 TIM2 和 TIM3 支持 PWM 互补输出和死区功能。 在初始化中结构体配置 TIM_TimeBaseInitTypeDef::TIM_PWM_En 来开启 PWM 输出功能。

当 TIM 关闭时,且处于 PWM 模式时,PWM 将输出低电平。

当 TIM 开启时,定时器会加载设定的计数器值,来输出相应时间的高电平和低电平。 其中,高电平的计数器值通过参数 TIM_TimeBaseInitTypeDef::TIM_PWM_High_Count 配置,低电平计数器值通过参数 TIM_TimeBaseInitTypeDef::TIM_PWM_Low_Count 配置。

这是 timer_pwm_waveform.

PWM 波形示意图

备注

PWM 的占空比不能设置为 0 或 100%。

互补输出与死区功能

仅 TIM2 和 TIM3 支持 PWM 互补输出与死区功能。 在初始化中结构体配置 TIM_TimeBaseInitTypeDef::PWMDeadZone_EnENABLE 以开启该功能。 开启该功能后,PWM 输出将会分成两路,分别为 PWM_P 和 PWM_N。

死区时间的计算公式为 deadzone time = dead zone size * dead zone clock period。 死区的时钟源为 32kHz,即 dead zone clock period 为 (1/32kHz) = 33us。 dead zone size 通过 TIM_TimeBaseInitTypeDef::PWM_Deazone_Size 进行设置。

死区时间的设定分为如下四种情况:

  1. 当死区时间大于 0 且小于 PWM 高电平/低电平的持续时间时,PWM_P 和 PWM_N 的上升沿输出会延迟一个死区时间。

Here should be enhtim dead zone size less than period.

PWM 死区示意图(死区时间大于 0 且小于 PWM 高电平/低电平持续时间)

  1. 当死区时间大于 PWM 高电平持续时间时,PWM_P 会持续输出低电平。

Here should be enhtim dead zone size more than high period.

PWM 死区示意图(死区时间大于 PWM 高电平持续时间)

  1. 当死区时间大于 PWM 低电平持续时间时,PWM_N 会持续输出低电平。

Here should be tim dead zone size more than low period.

PWM 死区示意图(死区时间大于 PWM 低电平持续时间)

  1. 当开启 PWM Bypass 功能后,PWM_P 的上升沿输出会延迟一个死区时间,且 PWM_P 和 PWM_N 的输出会完全互补。调用函数 TIM_PWMDZBypassCmd() 以开启 PWM Bypass 功能。

Here should be tim dead zone bypass.

PWM 死区 Bypass 示意图