Timer
概述
Ameba 系列产品提供很多定时器供用户使用:
RTL8721Dx:
10 个 Basic Timer,其中:
TIM0 ~ TIM7 为低频 Basic Timer,时钟源是 SDM32K
TIM10、TIM11 为高频 Basic Timer,时钟源是 XTAL40M
1 个 8 通道 PWM Timer:TIM8
1 个 1 通道 Capture Timer:TIM9
1 个 32 位 Debug Timer
2 组 PMC Timer
RTL8720E:
13 个 Basic Timer,其中:
TIM0 ~ TIM7 为低频 Basic Timer,时钟源是 SDM32K
TIM10 ~ TIM14 为高频 Basic Timer,时钟源是 XTAL40M
1 个 8 通道 PWM Timer:TIM8
1 个 1 通道 Capture Timer:TIM9
1 个 32 位 Debug Timer
RTL8710E:
13 个 Basic Timer,其中:
TIM0 ~ TIM7 为低频 Basic Timer,时钟源是 SDM32K
TIM10 ~ TIM14 为高频 Basic Timer,时钟源是 XTAL40M
1 个 8 通道 PWM Timer:TIM8
1 个 1 通道 Capture Timer:TIM9
1 个 32 位 Debug Timer
RTL8726E:
13 个 Basic Timer,其中:
TIM0 ~ TIM7 为低频 Basic Timer,时钟源是 SDM32K
TIM10 ~ TIM14 为高频 Basic Timer,时钟源是 XTAL40M
1 个 8 通道 PWM Timer:TIM8
1 个 1 通道 Capture Timer:TIM9
1 个 32 位 Debug Timer
RTL8713E:
13 个 Basic Timer,其中:
TIM0 ~ TIM7 为低频 Basic Timer,时钟源是 SDM32K
TIM10 ~ TIM14 为高频 Basic Timer,时钟源是 XTAL40M
1 个 8 通道 PWM Timer:TIM8
1 个 1 通道 Capture Timer:TIM9
1 个 32 位 Debug Timer
RTL8730E:
12 个 Basic Timer,其中:
TIM0 ~ TIM7 为低频 Basic Timer,时钟源是 SDM32K
TIM10 ~ TIM13 为高频 Basic Timer,时钟源是 XTAL40M
1 个 6 通道 PWM Timer:TIM8
1 个 1 通道 Capture Timer:TIM9
1 个 32 位 Debug Timer
RTL8721F:
4 个 Basic Timer: TIM0 ~ TIM3,可以通过软件配置选择时钟源是 SDM32K 还是 XTAL40M
4 个 4 通道 PWM Timer:TIM4 ~ TIM7
1 个 1 通道 Capture Timer:TIM8
1 个 64 位 Debug Timer
2 组 PMC Timer
RTL8735C:
4 个 Gtimer 组:
第 0 组和第 2 组各有 8 个定时器
第 1 组和第 3 组各有 1 个定时器
共计 18 个定时器
每个定时器功能:
向上计数和向下计数
周期模式和单次模式
4 个匹配事件
分频器
Basic Timer
功能特性
向上计数的 32 位计数器
可以产生溢出中断
自动重载寄存器的值可以预加载
可以在睡眠状态下继续工作,并且可以通过中断唤醒系统
应用示例
SDK 提供了两类功能示例,帮助开发者了解和使用 Basic Timer 功能:
mbed 示例
路径:
{SDK}\example\peripheral\mbed\Timer\mbed_gtimer\{demo}展示如何在 mbed 环境中实现 Basic Timer 控制
raw 示例
路径:
{SDK}\example\peripheral\raw\Timer\raw_gtimer\{demo}展示如何在无抽象层的情况下直接控制 Basic Timer
备注
要了解示例支持的芯片,请查看示例路径下的 README.md 文件。
PWM Timer
功能特性
向上计数的 16 位计数器
自动重载寄存器的值可以预加载
内部有 16 位的分频寄存器
每个通道可以独立产生 PWM 波形
可以产生的中断类型:
计数器溢出中断
软件更新事件中断
通道的计数器溢出中断
通道的捕获/比较中断
三种工作模式
PWM 模式:用于生成占空比和周期可配置的方波
输入捕获功能:用于捕获输入引脚上升沿/下降沿时计数器的数值
单脉冲模式:用于检测到输入引脚的上升沿/下降沿/边沿后,在可编程延迟后产生一个具有可编程的脉冲。
应用示例
SDK 提供了两类功能示例,帮助开发者了解和使用 PWM Timer 功能:
mbed 示例
路径:
{SDK}\example\peripheral\mbed\Timer\mbed_pwm展示如何在 mbed 环境中实现 PWM Timer 控制
raw 示例
路径:
{SDK}\example\peripheral\raw\Timer\{demo}展示如何在无抽象层的情况下直接控制 PWM Timer
以下是对 raw 示例功能的简要说明:
raw_pwm 演示如何使用 PWM 模式。
raw_tim_capture_pwm_32k 演示如何使用 PWM 输入捕获功能。
raw_tim_pwm_one_pulse 演示如何使用 PWM 单脉冲模式。
备注
要了解示例支持的芯片,请查看示例路径下的 README.md 文件。
Capture Timer
功能特性
向上计数的 16 位计数器
内部有 16 位的分频寄存器
自动重载寄存器的值可以预加载
两种工作模式:
记录输入引脚的脉冲宽度
记录输入引脚在可配置周期内脉冲的数量
应用示例
SDK 提供了 raw 示例,帮助开发者了解和使用 Capture Timer 功能:
路径:
{SDK}\example\peripheral\raw\Timer\{demo}展示如何在无抽象层的情况下直接控制 Capture Timer
以下是对 raw 示例功能的简要说明:
raw_tim_pulse_width_32k 演示如何使用 Capture Timer 捕获脉冲宽度功能。
raw_tim_pulse_num_32k 演示如何使用 Capture Timer 捕获脉冲数量。
备注
要了解示例支持的芯片,请查看示例路径下的 README.md 文件。
Debug Timer
功能特性
两种时钟源可选:
XTAL40M:通过分频器得到 1M 的时钟源,每一拍计数时间是 1us
SDM32K:时钟频率为 32768 Hz,每一拍周期约为 30.5us;由于计数器不保存小数,每一拍计数值增加 31us(硬件固有的舍入误差)
可以在睡眠状态下继续计数
无锁计数器:支持多核环境下安全并发读写
PMC Timer
功能特性
RTL8721Dx:
有两组 PMC Timer, 每组 PMC Timer 内有四个计数器
休眠倒计时计数器
深度休眠倒计时计数器
唤醒计数器
预留计数器
32 位宽向下计数,计数到 0 后自动停止
在计数到 0 之后可配置是否产生中断
以 SDM32K 作为时钟源
在计数器工作过程中可以重新设置定时器倒计时的值
RTL8720E:没有 PMC timer
RTL8710E:没有 PMC timer
RTL8726E:没有 PMC timer
RTL8713E:没有 PMC timer
RTL8730E:没有 PMC timer
RTL8721F:
有两组 PMC Timer, 每组 PMC Timer 内有四个计数器
休眠倒计时计数器
深度休眠倒计时计数器
唤醒计数器
预留计数器
32 位宽向下计数,计数到 0 后自动停止
在计数到 0 之后可配置是否产生中断
以 SDM32K 作为时钟源
在计数器工作过程中可以重新设置定时器倒计时的值
RTL8735C:
4 组 PMC Timer:
TIMER0 ~ TIMER3
32 位宽向下计数,计数到 0 后自动停止
在计数到 0 之后可配置是否产生中断
以 SDM32K 作为时钟源
比较模式:只有当设置值大于当前计数器值时,定时器设置才生效