Timer
概述
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
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, 每组 PMC Timer 内有四个计数器
休眠倒计时计数器
深度休眠倒计时计数器
唤醒计数器
预留计数器
32 位宽向下计数,计数到 0 后自动停止
在计数到 0 之后可配置是否产生中断
以 SDM32K 作为时钟源
在计数器工作过程中可以重新设置定时器倒计时的值