概述
Ameba 系列产品提供很多定时器供用户使用:
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
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
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
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
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
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
Basic Timer
功能特性
向上计数的 32 位计数器
可以产生溢出中断
自动重载寄存器的值可以预加载
可以在睡眠状态下继续工作,并且可以通过中断唤醒系统
应用示例
SDK 提供了两类功能示例,帮助开发者了解和使用 Basic Timer 功能:
mbed 示例
路径:
{SDK}\component\example\peripheral\mbed\Timer\mbed_gtimer\{demo}
展示如何在 mbed 环境中实现 Basic Timer 控制
raw 示例
路径:
{SDK}\component\example\peripheral\raw\Timer\raw_gtimer\{demo}
展示如何在无抽象层的情况下直接控制 Basic Timer
备注
要了解示例支持的芯片,请查看示例路径下的 README.md
文件。
PWM Timer
功能特性
向上计数的 16 位计数器
自动重载寄存器的值可以预加载
内部有 16 位的分频寄存器
每个通道可以独立产生 PWM 波形
可以产生的中断类型:
计数器溢出中断
软件更新事件中断
通道的计数器溢出中断
通道的捕获/比较中断
三种工作模式
PWM 模式:用于生成占空比和周期可配置的方波
输入捕获功能:用于捕获输入引脚上升沿/下降沿时计数器的数值
单脉冲模式:用于检测到输入引脚的上升沿/下降沿/边沿后,在可编程延迟后产生一个具有可编程的脉冲。
应用示例
SDK 提供了两类功能示例,帮助开发者了解和使用 PWM Timer 功能:
mbed 示例
路径:
{SDK}\component\example\peripheral\mbed\Timer\mbed_pwm
展示如何在 mbed 环境中实现 PWM Timer 控制
raw 示例
路径:
{SDK}\component\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}\component\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:每 30.5us 计数器的值增大 31us
可以在睡眠状态下继续计数
无锁计数器:支持多核环境下安全并发读写
PMC Timer
功能特性
有两组 PMC Timer, 每组 PMC Timer 内有四个计数器
休眠倒计时计数器
深度休眠倒计时计数器
唤醒计数器
预留计数器
32 位宽向下计数,计数到 0 后自动停止
在计数到 0 之后可配置是否产生中断
以 SDM32K 作为时钟源
在计数器工作过程中可以重新设置定时器倒计时的值
没有 PMC timer
没有 PMC timer
没有 PMC timer
没有 PMC timer
有两组 PMC Timer, 每组 PMC Timer 内有四个计数器
休眠倒计时计数器
深度休眠倒计时计数器
唤醒计数器
预留计数器
32 位宽向下计数,计数到 0 后自动停止
在计数到 0 之后可配置是否产生中断
以 SDM32K 作为时钟源
在计数器工作过程中可以重新设置定时器倒计时的值