<!-- 本文件由脚本自动转换生成，请勿手动编辑 -->

> **《LKS32MC09x User Manual》TIMER 通用定时器** . 完整目录见 [README.md](README.md)
>
> **声明**：本文档由芯片用户手册自动转换生成，仅供检索与查阅参考。Markdown 格式可被自由编译、修改，本文档不构成正式技术文件，相关内容以凌鸥创芯官方网站正式发布的手册为准。
>
> 南京凌鸥创芯电子有限公司 . (C) 2023, 版权归凌鸥创芯所有 . 机密文件，未经许可不得扩散

# TIMER 通用定时器

## 概述

### 功能框图

如图13-1所示，通用定时器TIMER主要包括3个独立的TIMER。分别可以独立配置运行计数时钟和滤波常数。每个TIMER可以用于输出特定周期占空比的波形，也可以捕获外部波形进行周期占空比的检测。

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图13-1
TIMER模块顶层功能框图

#### 寄存器模块

对各个子模块控制寄存器的读写。

对各个子模块状态、结果寄存器的访问。

对各个子模块中断信号的处理和中断产生。

#### IO滤波模块

IO滤波模块对来自芯片外部的输入信号进行滤波，降低毛刺对定时器功能的影响。

#### 通用定时器模块

通用定时器模块实现了通用的定时器功能，包括比较和捕获工作模式。每个定时器包含两个通道，可以处理两个外部输入信号或者产生两个脉冲信号送到芯片外部。

通用定时器模块，支持外部事件触发开始计数。外部事件源头可配。当外部事件触发后，定时器开始自增。支持使用外部信号作为timer时钟进行计数。

#### 编码器模块

编码器模块用于对芯片外部送入的编码器编码信号进行计数。定时器模块中集成了
1个编码器模块QEP0。

#### 时钟分频模块

时钟分频模块用于产生定时器工作所需的各种分频时钟。

### 功能特点

定时器模块有以下特点:

- 独立工作，可工作在不同频率下
- TIMER0/1为16bit通用定时器
- TIMER2为32bit通用定时器
- 每个通用定时器处理2个外部输入信号（捕获模式），或者产生2个输出信号（比较模式）
- 对每个输入信号可以进行最大2040个系统主时钟的滤波，即，当芯片工作在96MHz时钟频率下时，可以滤除21uS宽度以下毛刺

## 特性

### 时钟分频

TIMER使用TIMERx_CFG.CLK_DIV进行分频，可以降低计数器的计数频率，分频系数可以设置为1/2/4/8/16/32/64/128.

### 中断标志清零

采用了通过对每个中断标志位写1来清除标志位的设计。

### 滤波

每个定时器模块有两个通道，在工作于输入捕获模式时，两个通道共享一个滤波系数。

通过配置滤波寄存器TIMERx_FLT，可以调整滤波宽度为0~2040个TIMER计数时钟宽度。

输入信号滤波使用TIMER计数的分频时钟，**TIMERx_CFG.CLK_DIV对TIMER计数时钟的分频对滤波时钟有影响，即TIMER分频后滤波宽度随之变大**。

如图13-2所示，原始输入信号在t1~t6几个时刻发生了翻转，滤波器宽度配置成T。可以看到只有t3和t6时刻发生的翻转维持了大于T的时间，因此从滤波器的输出看，信号仅发生了两次翻转。。

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图13-2
TIMER滤波示意图

### 模式

#### 计数器

TIMER中的计数器可以选择递增或递减方向计数，默认为递增计数。

若为递增计数，则计数器从0计数到TH值，再回到0重新开始计数，计数器回到0时，产生回零中断。若为递减计数，则计数器从TH计数到0值，再回到TH重新开始计数，计数器回到0时，产生回零中断。实际计数周期为
(TH+1)/clk_freq，clk_freq指定时器的时钟频率。

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图13-3
TIMER通用计数器

计数器的计数时钟可以通过TIMERx_CFG.XCLK_EN进行配置，可以使用芯片内部的系统时钟（通常为芯片内部PLL时钟）或使用TIMER通道0/1信号作为外部时钟进行计数。

计数器的计数时钟可以通过TIMERx_CFG.CLK_DIV进行分频，以降低计数器的计数频率。

#### 捕获模式

捕获模式下，可以使用TIMER来检测输入信号的上升/下降或者双沿，发生捕获事件（即输入信号电平变化）时，定时器计数值存入TIMER_UNTx_CMP寄存器，并产生捕获中断。计数器回零时，仍然会产生回零中断。

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图13-4
TIMER捕获模式

如图13-4所示，定时器设置为上升沿捕获。在CAP0/CAP1/CAP2三个时刻点，捕获到输入信号发生上升沿变化，对应时刻点的定时器计数值将存入TIMER_UNTx_CMP寄存器中。

捕获模式下，通道0/1捕获的信号来源可以通过TIMERx_CFG.SRC0和TIMERx_SRC1进行设置，信号源可以设置为来自IO的通道信号，或来自模拟比较器，以及来自IO的两个通道信号的异或。

可以通过设置TIMERx_CFG.CAP0_CLR_EN或TIMERx_CFG.CAP1_CLR_EN使能TIMER自动清零，即当通道0/1发生捕获事件时，TIMERx_CNT自动回零重新开始计数。这一功能便于TIMER计算捕获信号的周期和占空比。

例如，如果设置了TIMER0的通道0/1同时捕获同一个信号，通道0捕获上升沿，通道1捕获下降沿。且使能CAP0_CLR_EN，即发生通道0捕获事件时TIMERx_CNT自动回零。则当发生发生通道0捕获事件（CAP0）时，TIMERx_CMP0记录的值为信号上一个周波的周期，TIMERx_CMP1记录的值为信号上一个周波的高电平占空比。

同理，如果设置了TIMER0的通道0/1同时捕获同一个信号，通道0捕获上升沿，通道1捕获下降沿。且使能CAP1_CLR_EN，即发生通道1捕获事件时TIMERx_CNT自动回零。则当发生发生通道1捕获事件（CAP1）时，TIMERx_CMP1记录的值为信号上一个周波的周期，TIMERx_CMP0记录的值为信号上一个周波的低电平占空比。

#### 比较模式(边沿对齐PWM)

比较模式下，计数器计数到TIMERx_CMP值时，产生比较中断。比较模式可以驱动一个比较脉冲发生，在回零时，向IO口输出一个电平（极性可配置），在比较事件发生时，电平翻转，向IO口输出另一个电平。计数器回零时，仍然会产生回零中断。设置TIMERx_CMP0=0，可使得TIMER
X通道0为恒1，设置TIMERx_CMP0=TIMERx_TH+1，可使得TIMER通道0为恒0。

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图13-5 TIMER比较模式

#### 单次触发

在比较模式下，当TIMERx_CFG2.EN=0，即TIMER没有开始计数时，通过向TIMERx_CFG2.ONE_TRIG写入1，可以触发TIMER发出一个周期特定占空比的波形。结束后TIMER回到空闲状态，通道不再动作。

此外TIMERx_CFG2.RTE重复触发使能也会影响单次触发行为。

当RTE=0时，如果TIMER单次触发仍在计数周期内再次发生单次触发，TIMER不会响应，仍继续完成本次周期计数。即在单次触发计数过程中发生的过于频繁的软件单次触发不被TIMER接受。如下图，第3次向ONE_TRIG写1无效，不会触发TIMER重新开始计数。

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图13-6 RTE=0时TIMER单次触发

当RTE=1时，如果TIMER单次触发仍在计数周期内再次发生单次触发，TIMER会立即响应，重新开始一个周期的单次计数。如下图，第3次向ONE_TRIG写1有效，触发TIMER重新开始计数。

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图13-7 RTE=1时TIMER单次触发

#### 中心模式(互补PWM)

除递增计数和递减外，计数器还可以设置为中心计数模式，即TIMERx_CFG2.CENTER=1。此时，计数器从0递增计数至TH后再递减计数回0，开始下一个周期的中心计数。实际计数周期为(2\*TH+1)/clk_freq，clk_freq指定时器的时钟频率。中心计数模式可以用于输出互补PWM波形，通过合理设置TIMERx_CMP0/1可以产生上下管导通死区，死区时间=TIMERx_CMP1-TIMERx_CMP0。此外，需要合理设置通道的初始值以产生互补波形。TIMER在递增计数和递减计数期间都会有TIMERx_CNT=TIMER_CMP0/1的时刻，但只有递增计数阶段会产生中断事件。

此外，TIMER0支持FAIL事件及时关断PWM输出。发生FAIL事件时，TIMER通道0/1输出值由TIMER0_IO.CH0_DEFAULT和TIMER0_IO.CH1_DEFAULT指定，同时TIMER0_IO.MOE被FAIL事件清零，软件将MOE置1后，TIMER通过恢复输出PWM波形。

TIMER0同时配备了影子寄存器TIMER0_STH/ TIMER0_SCMP0/
TIMER0_SCMP1。当TIMER0_CFG.SHADOW=1时，表示使用影子寄存器作为计数器的动作指示，TIMER0_TH/
TIMER0_CMP0/ TIMER0_CMP1仅仅作为预装载寄存器，向TIMER0_TH/ TIMER0_CMP0/
TIMER0_CMP1写入仅仅修改预装载值，不改变影子寄存器值。TIMER0的影子寄存器可以通过向TIMER0_CFG.UPDATE写1进行软件更新；或者可以等待TIMER过零事件自动更新。

当TIMER0_CFG.SHADOW=0时，与普通TIMER相同，仍使用TIMER0_TH/ TIMER0_CMP0/
TIMER0_CMP1作为计数器的动作指示。

读取TIMER0_TH/ TIMER0_CMP0/
TIMER0_CMP1时，总是返回影子寄存器值TIMER0_STH/ TIMER0_SCMP0/
TIMER0_SCMP1。

表13-1 TIMER0影子寄存器对应关系

||||
|---|---|---|
|TIMER0_CFG.SHADOW设定值|0|1|
|TIMER0_CNT命中TH|TIMER0_TH|TIMER0_STH|
|TIMER0_CNT命中CMP0|TIMER0_CMP0|TIMER0_SCMP0|
|TIMER0_CNT命中CMP1|TIMER0_CMP1|TIMER0_SCMP1|

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图13-8 TIMER中心计数模式

**TIMER0/1/2均支持中心计数模式进行互补PWM输出；但只有TIMER0配备了影子寄存器和FAIL急停机制。即只有TIMER0存在TIMER0_IO寄存器。**

### 外部事件

TIMER支持与其他TIMER通道、MCPWM的ADC触发事件以及CLU输出进行联动。外部信号可以作为TIMER的外部启动信号、外部时钟信号、外部重置信号、外部门控信号。

外部事件在TIMER内部只有一种解释，因此只能使用一种外部事件功能，以上4种功能不可以同时使用，亦即TIMERx_CFG2.ETON，TIMERx_CFG2.XCLK_EN，TIMERx_CFG2.RL_EN，TIMERx_CFG2.GATE_EN
4个设置位只能有一个为1。

以下说明均以TIMER正向递增计数为例，递减计数同理。

外部事件通过TIMERx_EVT进行选择。

##### 外部启动信号

当TIMERx_CFG.EN=1且TIMERx_CFG.ETON=1时，TIMERx在发生外部事件前CNT停留在0，在发生外部事件时启动计数。外部启动信号被处理为一个脉冲信号后进行TIMER的启动触发。

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图13-9 TIMER外部事件触发启动

外部启动也可以与单次触发进行联合使用，此时软件需要先配置TIMERx_CFG2.EN=0且ETON=1，然后配置ONE_TRIG=1，等待外部事件触发后，TIMER进行一个周期的计数，周期结束后ONE_TRIG不再被硬件清零，随后只要外部事件触发一次，TIMER就会进行一个周期的计数。

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图13-10
TIMER外部事件触发单次（单周期）计数

##### 外部时钟信号

通过设置TIMERx_CFG.XCLK_EN=1，TIMER可以使用外部信号作为计数时钟。外部时钟的选择通过TIMERx_EVT进行设置。

当外部信号出现上升沿时，TIMERx_CNT递增（或递减）。特别地，如果使用TIMERm的通道输入作为TIMERx的外部时钟，则TIMERm的通道输入为收到TIMERm滤波后的信号。

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图13-11 TIMER使用外部时钟计数

##### 外部重置信号

通过设置TIMERx_CFG.RL_EN=1，TIMER可以使用外部信号作为重置信号。外部重置信号的选择通过TIMERx_EVT进行设置。如果TIMER设置为递增计数或中心计数，发生外部信号重置时，TIMERx_CNT被重置为0；如果TIMER设置为递减计数，发生外部信号重置时，TIMERx_CNT被重置为TIMERX_TH。外部重置信号被处理为一个脉冲信号后对TIMER进行重置。

此外，外部重置可以和TIMERx_EVT.EVT_TH和TIMERx_CMP1配合使用。当TIMERx_EVT.EVT_TH=0时，发生一次外部重置事件即将TIMERx_CNT重置。TIMERx_EVT.EVT_TH不为0时，需要发生TIMERx_EVT.EVT_TH+1次外部重置事件才将TIMERx_CNT重置。

当TIMERx_CFG2.CMP1TMIN=1时，TIMERx_CMP1被作为重置发生的计数门限值TMIN使用，即只有当TIMERx_CNT\>TMIN=TIMERx_CMP1时，才可以发生TIMERx_CNT重置。即使外部重置事件已经累积到足够次数，也需要等待TIMERx_CNT计数至TIMERx_CMP1才会重置TIMERx_CNT。这种配置下，由于TIMERx_CMP1被作为重置的计数门限值TMIN使用，通常不再使用TIMER的通道1输出信号，通道0的输出信号可以正常使用。

当TIMERx_CFG2.CMP1TMIN=0时，即TMIN=0，只要外部事件计数只足够数目即发生TIMERx_CNT重置，因为TIMERx_CNT\>TMIN总是满足的。

外部事件计数次数TCNT，在每个TIMER周期结束后也会清零重新开始计数，不累积至下一个TIMER周期，计数至足够次数后则停止计数直到TIMERx_CNT重置（/清零）发生。TIMERx_CNT清零动作也会导致外部事件计数次数TCNT清零。外部事件计数次数TCNT为内部计数器，软件不可读。

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图13-12 TIMER外部信号重置功能

##### 外部门控信号

通过设置TIMERx_CFG.GATE_EN=1，TIMER可以使用外部信号作为门控信号。外部门控信号的选择通过TIMERx_EVT进行设置。门控信号电平为高时，TIMER进行计数，电平为低时，TIMER停止计数，TIMERx_CNT保持不变。由于门控信号需要为电平信号，因此MCPWM的ADC触发信号无法作为外部门控信号使用。特别地，如果使用TIMERm的通道输入作为TIMERx计数的门控信号，通道输入信号受到TIMERm的滤波影响。

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图13-13 TIMER外部信号门控功能

### ADC触发

TIMER0/2的比较事件（CMP0/1）可作为ADC0采样触发事件。

TIMER0/1的比较事件（CMP0/1）可作为ADC1采样触发事件。

### 编码器

编码器接口支持正交编码信号、符号加脉冲信号、CW/CCW双脉冲信号三种模式。

其中QEP0的两个输入信号T1/T2分别来自TIMER2
Channel0/1对应的GPIO输入.开启编码器功能时并不影响TIMER功能的正常使用。

编码器的输入T1/T2/Z信号均受对应的编码器的滤波系数控制。

由于编码器复用的是TIMER通道输入，需要开启对应的SYS_CLK_FEN中对应的TIMER时钟使能。如使用QEP0需要开启Time2外设时钟使能。

#### 正交编码信号

正交编码信号多用于计数编码器圈数，输入为T1/T2两个信号，支持下表中两个模式。

概括来讲，T1/T2的跳变沿会导致计数器递增或递减。而计数器计数方向（递增或递减）由跳变信号之外的另一个稳态信号的电平高低决定。

如果T1发生了上升沿跳变，则看T2是高电平还是低电平，如果是高电平则计数器递减，如果是低电平计数器递增，T1下降沿计数器变化相反。

如果T2发生了上升沿跳变，则看T1是高电平还是低电平，如果是高电平则计数器递增，如果是低电平计数器递减，T2下降沿计数器变化相反。

逻辑关系如下公式所示:

Counter Up = (T1 !=T2) @(T1 triggering edges) \| (T1 == T2) @ (T2
triggering edges)

Counter Down = (T1 == T2) @ (T1 triggering edges) \| (T1 != T2) @ (T2
triggering edges)

表13-2编码器正交编码工作模式

|||||||
|---|---|---|---|---|---|
|计数模式|T1/T2电平状态(稳态信号)|T1变化边沿状态||T2变化边沿状态||
|||上升沿|下降沿|上升沿|下降沿|
|仅T1计数|T2高|递减|递增|不计数|不计数|
||T2低|递增|递减|不计数|不计数|
|T1/T2都计数|T2高|递减|递增|不计数|不计数|
||T2低|递增|递减|不计数|不计数|
||T1高|不计数|不计数|递增|递减|
||T1低|不计数|不计数|递减|递增|

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图13-14编码器只在
T1时刻计数的正交编码信号计数情况

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图13-15编码器在T1或T2时刻计数的正交编码信号计数情况

#### 符号加脉冲信号

这种工作模式下，T1为脉冲信号，T2为符号信号。T1的边沿触发计数，T2电平控制计数方向，高则递增，低则递减。可以配置仅T1上升沿计数还是T1上升下降沿都计数。

Counter Up = (T2==1) @ (T1 triggering edges)

Counter Down = (T2==0) @ (T1 triggering edges)

表13-3编码器符号加脉冲工作模式

|||||
|---|---|---|---|
|计数模式|T2电平状态(稳态信号)|T1变化边沿状态||
|||上升沿|下降沿|
|仅T1上升沿|高|递增|不计数|
||低|递减|不计数|
|T1上升下降沿|高|递增|递增|
||低|递减|递减|

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图13-16编码器在T1上升下降沿都计数的符号加脉冲信号计数情况

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图13-17编码器在仅T1上升沿计数的符号加脉冲信号计数情况

#### CCW/CW双脉冲信号

在T1跳变时计数器递增，在T2跳变时计数器递减。可以配置计数器仅在上升沿变化或者在上升下降沿都变化。以下式表示

Counter Up = 1 @ (T1 triggering edges)

Counter Down = 1 @ (T2 triggering edges)

表13-4编码器CCW/CW双脉冲工作模式

||||||
|---|---|---|---|---|
|计数模式|变化边沿状态||||
||T1上升沿|T1下降沿|T2上升沿|T2下降沿|
|T1/T2上升沿|递增|不计数|递减|不计数|
|T1/T2上升下降沿|递增|递增|递减|递减|

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图13-18编码器仅在T1/T2上升沿计数的CCW/CW双脉冲信号计数情况

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图13-19编码器在T1/T2上升下降沿计数的CCW/CW双脉冲信号计数情况

## 寄存器

### 地址分配

TIMER0/1/2不同之处在于TIMER0/1计数器相关寄存器为16位宽，而TIMER2计数器相关寄存器为32位宽，即TIMERx_TH，TIMERx_CMP0，TIMERx_CMP1的位宽不同。

且TIMER0、TIMER1的TH/CMP0/CMP1存在影子寄存器，可以选择是否启用影子寄存器，如果不启用，则TIMER0/TIMER1和TIMER2相同。如果启用影子寄存器，则向以上3个寄存器写入的仅仅是预装载值，当TIMER0/1发生过零事件时，预装载值被加载进入影子寄存器；读取TIMER0_TH/CMP0/CMP1以及TIMER1_TH/CMP0/CMP1读取的影子寄存器的值。

### TIMER0寄存器

TIMER0在芯片中的基地址是0x4001_0600

表13-5
TIMER0寄存器地址分配

||||
|---|---|---|
|名称|偏移|描述|
|TIMER0_CFG0|0x00|TIMER0通道0配置寄存器|
|TIMER0_CFG1|0x04|TIMER0通道1配置寄存器|
|TIMER0_CFG2|0x08|TIMER0配置寄存器2|
||||
|TIMER0_TH|0x10|TIMER0计数门限寄存器|
|TIMER0_CNT|0x14|TIMER0计数值寄存器|
|TIMER0_CMP0|0x18|TIMER0比较/捕获寄存器0|
|TIMER0_CMP1|0x1C|TIMER0比较/捕获寄存器1|
|TIMER0_EVT|0x20|TIMER0外部事件选择寄存器|
|TIMER0_FLT|0x24|TIMER0滤波控制寄存器|
|TIMER0_IE|0x28|TIMER0中断使能寄存器|
|TIMER0_IF|0x2C|TIMER0中断标志寄存器|
|TIMER0_IO|0x30|TIMER0 IO控制寄存器|

#### TIMER0_CFG0 TIMER0 通道0配置寄存器

地址:0x4001_0600

复位值:0x0

表13-6 TIMER0通道0配置寄存器TIMER0_CFG0

||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10||9|8|7|6|5|4|3|2|1|0|
|||||||TRIGGER_MODE||CAP_CLR_EN|SRC||||CH_POL|CH_MODE|CH_FE_CAP_EN|CH_RE_CAP_EN|
|||||||RW||RW|RW||||RW|RW|RW|RW|
|||||||0||0|0||||0|0|0|0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:11\]||未使用|
|\[10:9\]|TRIGGER_MODE|用于选择递增计数时触发还是递减计数的时候触发adc采样。默认值是0x0。0x1:递增计数时触发0x2:递减计数时触发其他的值则意味着递增和递减时都能触发ADC采样|
|\[8\]|CAP_CLR_EN|当发生CAP捕获事件时，清零TIMERx_CNT，高有效|
|\[7:4\]|SRC|TIMER捕获模式通道0信号来源。默认为0x0。0x0: TIMER通道0，来自芯片GPIO（参见Datasheet及应用配置）0x1: TIMER通道1，来自芯片GPIO（参见Datasheet及应用配置）0x2: CLU0输出0x3: CLU1输出0x4: CLU2输出0x5: CLU3输出0x6: 比较器0的输出0x7: 比较器1的输出0x9: TIMER通道0和1的异或0xA: LRC时钟|
|\[3\]|CH_POL|TIMER通道0在比较模式下的输出极性控制:当计数器CNT\<CMP0时的输出值。时的输出值。|
|\[2\]|CH_MODE|TIMER通道0的工作模式选择，默认值为0。0: 比较模式。输出方波，在TIMER通道0计数器计数值等于0或等于TIMER比较捕获寄存器值时，IO发生翻转。1: 捕获模式。当TIMER通道0输入信号发生捕获事件时，将计数器计数值存入TIMER通道0比较捕获寄存器。|
|\[1\]|CH_FE_CAP_EN|TIMER通道0下降沿捕获事件使能。1:使能；0:关闭。TIMER通道0输入信号发生1?0跳变被视为捕获事件。下降沿事件使能可以与上升沿事件使能并存。|
|\[0\]|CH_RE_CAP_EN|TIMER通道0上升沿捕获事件使能。1:使能；0:关闭。TIMER通道0输入信号发生0?1跳变被视为捕获事件。上升沿事件使能可以与下降沿事件使能并存。|

#### TIMER0_CFG1 TIMER0 通道1配置寄存器

地址:0x4001_0604

复位值:0x0

表13-7 TIMER0通道1配置寄存器TIMER0_CFG

||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10||9|8|7|6|5|4|3|2|1|0|
|||||||TRIGGER_MODE||CAP_CLR_EN|SRC||||CH_POL|CH_MODE|CH_FE_CAP_EN|CH_RE_CAP_EN|
|||||||RW||RW|RW||||RW|RW|RW|RW|
|||||||0||0|0||||0|0|0|0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:11\]||未使用|
|\[10:9\]|TRIGGER_MODE|用于选择递增计数时触发还是递减计数的时候触发adc采样。默认值是0x0。0x1:递增计数时触发0x2:递减计数时触发其他的值则意味着递增和递减时都能触发ADC采样|
|\[8\]|CAP_CLR_EN|当发生CAP1捕获事件时，清零TIMERx_CNT，高有效|
|\[7:4\]|SRC|TIMER捕获模式通道1信号来源。默认为0x1。0x0: TIMER通道0，来自芯片GPIO（参见Datasheet及应用配置）0x1: TIMER通道1，来自芯片GPIO（参见Datasheet及应用配置）0x2: CLU0输出0x3: CLU1输出0x4: CLU2输出0x5: CLU3输出0x6: 比较器0的输出0x7: 比较器1的输出0x9: TIMER通道0和1的异或0xA: LRC时钟|
|\[3\]|CH_POL|TIMER通道1在比较模式下的输出极性控制，当计数器CNT\<CMP1时的输出值。|
|\[2\]|CH_MODE|TIMER通道1的工作模式选择，默认值为0。0: 比较模式。输出方波，在TIMER通道1计数器计数值等于0或等于TIMER比较捕获寄存器值时，IO发生翻转。1: 捕获模式。当TIMER通道1输入信号发生捕获事件时，将计数器计数值存入TIMER通道1比较捕获寄存器。|
|\[1\]|CH_FE_CAP_EN|TIMER通道1下降沿捕获事件使能。1:使能；0:关闭。TIMER通道1输入信号发生1?0跳变被视为捕获事件。下降沿事件使能可以与上升沿事件使能并存。|
|\[0\]|CH_RE_CAP_EN|TIMER通道1上升沿捕获事件使能。1:使能；0:关闭。TIMER通道1输入信号发生0?1跳变被视为捕获事件。上升沿事件使能可以与下降沿事件使能并存。|

#### TIMER0_CFG2 TIMER0 配置寄存器2

地址:0x4001_0608

复位值:0x0

表13-8
TIMER0配置寄存器2 TIMER0_CFG2

||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14||13|12|11|10|9|8|7|6|5|4|3|||2||1||0|
|EN||RTE||CMP1TMIN|UPDATE|SHADOW|ONE_TRIG|CENTER|DIR|CLK_DIV||||ETON|GATE_EN||RL_EN||XCLK_EN||
|RW||RW||RW|WO|RW|RW|RW|RW|RW||||RW|RW||RW||RW||
|0||0||0|0|0|0|0|0|0||||0|0||0||0||

||||
|---|---|---|
|位置|位名称|说明|
|\[15\]|EN|TIMER模块整体使能，高有效|
|\[14\]|RTE|单次触发模式下是否可以在一个周期内再次触发0:不使能再次触发，即一个单次计数周期内发生的单次触发信号被忽略；1:使能再次触发，即一个单次计数周期内发生的单次触发信号会令TIMERx_CNT重置重新开始一个周期的计数|
|\[13\]|||
|\[12\]|CMP1TMIN|当RL_EN=1时，使用CMP1作为TMIN。TMIN为TIMER 最小计数值寄存器。只有当TIMERx_CNT\>= TMIN时，外部重置事件才会将TIMERx_CNT清零。如果TIMERx_CNT\< TMIN，则等到TIMERx_CNT= TMIN时TIMERx_CNT清零。|
|\[11\]|UPDATE|软件更新启用影子寄存器时，向UPDATE写1将TH/CMP0/CMP1的预装载值加载到影子寄存器STH/SCMP0/SCMP1之中。自动清零，读回恒为0。写0无作用。推荐使用TIMER0_CFG\|=BIT11;的方式进行手动更新影子寄存器的操作，防止手动更新时误将其他配置清零。|
|\[10\]|SHADOW|0: 不启用影子寄存器，软件写入TH/CMP0/CMP1时直接更新对应的影子寄存器1: 启用影子寄存器，软件写入TH/CMP0/CMP1时进仅仅更新预装载值，当TIMER发生过零事件时才将预装载值写入影子寄存器|
|\[9\]|ONE_TRIG|单次发送模式，此位需要在TIMER比较模式下使用，且EN需设置为0ETON为0时，软件向ONE_TRIG写1触发TIMER发送一个周期的特定占空比的脉冲，TIMER计数一个周期后停止。此位在TIMER计数的当前周期内读为1，TIMER停止后，自动清零。ETON为1时，即使软件配置ONE_TRIG=1，也需要等待外部事件触发，TIMER计数一个周期后停止。ONE_TRIG位在外部触发TIMER计数一个周期停止后不被硬件清零。|
|\[8\]|CENTER|中心计数模式使能0: TIMER向上从0计数至TH，然后回0，或TIMER向下从TH计数至0，然后回到TH1: TIMER向上从0计数至TH，然后向下计数至0|
|\[7\]|DIR|0: 0-\>TH递增计数，1:TH-\>递减计数此位在CENTER=1时只读，用于指示当前计数方向|
|\[6:4\]|CLK_DIV|TIMERx_CNT频率配置，计数器计数频率是系统主时钟频率的2CLK_DIV分频。默认值为0，不分频。0: 1分频1: 2分频2: 4分频3: 8分频4: 16分频5: 32分频6: 64分频7: 128分频|
|\[3\]|ETON|TIMERx_CNT外部启动使能0: 自动运行1:等待外部事件触发计数，外部触发信号根据TIMER0_EVT.EVT_SRC进行选择需要注意的是，使用外部触发也需要设置TIMERx_CFG.EN=1，除非是外部信号进行的单次触发，即TIMERx_CFG.ONE_TRIG=1。|
|\[2\]|GATE_EN|TIMER暂停使能0:不暂停1:当外部信号为低时，TIMER暂停计数，外部信号根据TIMERx_EVT.EVT_SRC进行选择|
|\[1\]|RL_EN|TIMER重装使能0:禁用外部事件重装，TIMER向上计数至TH回0，或向下计数值0回到TH1:使能外部事件重装，重装信号根据TIMER0_EVT.EVT_SRC进行选择，当向上计数时，发生外部事件，TIMER重装为0,；当向下计数时，发生外部事件，TIMER重装为TH。|
|\[0\]|XCLK_EN|TIMER 时钟源0: 芯片内部时钟1: 外部时钟，时钟源根据TIMER0_EVT.EVT_SRC进行选择，当使用外部时钟时，CLK_DIV不再起作用，即时钟不再进行分频|

当使用外部时钟计数时，也需要设置TIMERx_CFG.TON=1，且需要开启SYS_CLK_FEN中对于TIMER时钟的使能。使用外部时钟计数时，也需要设置TIMERx_TH。

通常外部事件仅仅作为外部启动、外部门控、外部时钟和外部清零的一个用途使用，即通常TIMERx_CFG2\[3:0\]中仅设置1bit为1。

如果设置TIMERx_CFG0.SRC为4’h8捕获两通道异或值，（通常为捕获编码器正交的两个通道），需要同时设置TIMERx_CFG0.CAP_CLR_EN=1，TIMERx_CFG0.CH_FE_CAP_EN=1，TIMERx_CFG0.CH_RE_CAP_EN=1，TIMERx_CFG.CH_MODE=1，即捕获上升沿、下降沿，且每次有信号边沿都清零计数器。CMP0即为捕获的两次信号边沿之间的计数值。

#### TIMER0_TH TIMER0 门限寄存器

地址:0x4001_0610

复位值:0x0

表13-9
TIMER0门限寄存器TIMER0_TH

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|TH||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:16\]||未使用|
|\[15:0\]|TH|TIMER 计数器计数门限。向上计数从0计数到TH值后回0，或向下计数从TH计数到0后回到TH|

#### TIMER0_CNT TIMER0 计数寄存器

地址:0x4001_0614

复位值:0x0

表13-10
TIMER0计数寄存器TIMER0_CNT

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|CNT||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:16\]||未使用|
|\[15:0\]|CNT|TIMER 0计数器当前计数值。写操作可以写入新的计数值。|

注意:写入TIMER0_CNT前需要先通过SYS_CLK_FEN.TIMER0_CLK_EN开启TIMER0时钟。

#### TIMER0_CMP0 TIMER0 通道0比较捕获寄存器

地址:0x4001_0618

复位值:0x0

表13-11
TIMER0通道0比较捕获寄存器TIMER0_CMP0

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|CMP0||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:16\]||未使用|
|\[15:0\]|CMP0|TIMER 通道0工作在比较模式时，当计数器计数值等于CMP0时，发生比较事件。TIMER 通道0工作在捕获模式时，发生捕获事件时的计数器计数值存入CMP0寄存器。|

设置CMP0=0，可使得通道0恒为!CH0_POL，设置CMP0=TH+1，可使得通道0恒为CH0_POL。

#### TIMER0_CMP1 TIMER0 通道1比较捕获寄存器

地址:0x4001_061C

复位值:0x0

表13-12
TIMER0通道1比较捕获寄存器TIMER0_CMP1

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|CMP1||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:16\]||未使用|
|\[15:0\]|CMP1|TIMER 通道1工作在比较模式时，当计数器计数值等于CMP1时，发生比较事件。TIMER 通道1工作在捕获模式时，发生捕获事件时的计数器计数值存入CMP1寄存器。|

设置CMP1=0，可使得通道恒为!CH1_POL，设置CMP1=TH+1，可使得通道恒为CH1_POL。

#### TIMER0_EVT TIMER0 外部事件选择寄存器

地址:0x4001_0620

复位值:0x0

表13-13
TIMER0外部事件选择寄存器TIMER0_EVT

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|||||||||EVT_TH||||EVT_SRC||||
|||||||||RW||||RW||||
|||||||||0||||0||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:8\]||未使用|
|\[7:4\]|EVT_TH|外部事件发生次数阈值，配合TIMERx_CFG.RL_EN使用。外部事件发生EVT_TH次后产生效果（当EVT_TH=0时，1次即生效）。可配置的外部事件发生次数阈值范围是0~15。特别地，当设置TIMERx_CFG.CMP1TMIN=1，且TIMERx_CNT\<TIMERx_CMP1时，即使此前发生的外部事件已达到EVT_TH设定次数，TIMERx_CNT重置也会延迟生效，即TIMERx_CNT会继续计数到TIMERx_CMP1后归零。此时TIMERx_CMP1作为重置最小计数值TMIN使用。EVT_TH在一个TIMER周期后自动清零，即一个TIMER周期的外部事件不累积至下一个周期。|
|\[3:0\]|EVT_SRC|TIMER外部事件选择寄存器，本寄存器需要配合TIMER0_CFG.ETON，TIMER0_CFG.GATE_EN，TIMER0_CFG.RL_EN，TIMER0_CFG.XCLK_EN使用。通常4个设置位不同时使用。当设置ETON=1时，根据本寄存器选择触发TIMER计数的事件。需要注意的是，TIMER自身的比较事件无法触发TIMER进行计数。当ETON=1时，触发信号的上升沿触发TIMER开始计数，用作触发源的TIMER需要工作在比较模式，无须从外部输入信号至TIMER通道0:不可用1:不可用2:TIMER1 通道0比较/捕获事件3:TIMER1 通道1比较/捕获事件4:TIMER2 通道0比较/捕获事件5:TIMER2 通道1比较/捕获事件6:不可用7:不可用8:CLU0输出上升沿9:CLU1输出上升沿10:CLU2输出上升沿11:CLU3输出上升沿12:MCPWM TADC\[0\]比较事件13:MCPWM TADC\[1\]比较事件14:MCPWM TADC\[2\]比较事件15:MCPWM TADC\[3\]比较事件当GATE_EN=1，且外部信号为高时TIMER计数，外部信号为低时，TIMER暂停，当GATE_EN=1时，TIMER使用对应外部信号的电平信号作为计数门控。GATE_EN仅支持配合0~11的外部事件使用，当EVT_SRC选择为0~7时，外部信号为TIMER通道输入信号经过对应TIMER滤波后的信号，作为门控信号的TIMER通道需要配置为输入使能0:TIMER0 通道0滤波后输入信号1:TIMER0 通道1滤波后输入信号2:TIMER1 通道0滤波后输入信号3:TIMER1 通道1滤波后输入信号4:TIMER2 通道0滤波后输入信号5:TIMER2 通道1滤波后输入信号6:不可用7:不可用8:CLU0输出信号9:CLU1输出信号10:CLU2输出信号11:CLU3输出信号当RL_EN为高时，TIMER使用外部信号作为重装载信号作为重装载信号的TIMER通道需要配置为输入使能0:TIMER0 通道0比较/捕获事件1:TIMER0 通道1比较/捕获事件2:TIMER1 通道0比较/捕获事件3:TIMER1 通道1比较/捕获事件4:TIMER2 通道0比较/捕获事件5:TIMER2 通道1比较/捕获事件6:不可用7:不可用8:CLU0输出9:CLU1输出10:CLU2输出11:CLU3输出12:MCPWM TADC\[0\]比较事件13:MCPWM TADC\[1\]比较事件14:MCPWM TADC\[2\]比较事件15:MCPWM TADC\[3\]比较事件当XCLK_EN为高时，TIMER使用外部信号作为TIMER外部时钟，TIMER在时钟上升沿进行计数动作。如果使用TIMER通道作为外部时钟，通道信号受到对应TIMER滤波设置影响。0:TIMER0 通道0输入信号1:TIMER0 通道1输入信号2:TIMER1 通道0输入信号3:TIMER1 通道1输入信号4:TIMER2 通道0输入信号5:TIMER2 通道1输入信号6:不可用7:不可用8:CLU0输出9:CLU1输出10:CLU2输出11:CLU3输出12:MCPWM TADC\[0\]比较事件13:MCPWM TADC\[1\]比较事件14:MCPWM TADC\[2\]比较事件15:MCPWM TADC\[3\]比较事件|

#### TIMER0_FLT TIMER0 滤波控制寄存器

地址:0x4001_0624

复位值:0x0

表13-14
TIMER0滤波控制寄存器TIMER0_FLT

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|||||||||FLT||||||||
|||||||||RW||||||||
|||||||||0||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:8\]||未使用|
|\[7:0\]|FLT|通道0/1信号滤波宽度选择。取值范围0~255。FLT为0时，不对通道进行滤波。FLT不为0时，对通道信号进行滤波:滤波宽度为FLT×8。当通道信号电平稳定超过FLT×8个系统时钟周期宽度时，滤波器输出更新；否则，滤波器保持当前的输出不变。|

注意，以上滤波器的工作时钟与对应的TIMER的分频后的工作时钟为相同时钟，受TIMERx_CFG.CLK_DIV的分频系数控制。

假设TIMERx_FLT = 0x6；TIMERx_CFG.CLK_DIV = 0x2;
则TIMER的运行时钟相对系统时钟进行了4分频。通道输入信号需要经过8×6倍TIMER的运行时钟的滤波，亦即8×6×4倍系统时钟的滤波。

#### TIMER0_IE TIMER0 中断使能寄存器

地址:0x4001_0628

复位值:0x0

表13-15
TIMER0中断使能寄存器TIMER0_IE

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|||||FAIL_RE|ZC_RE|CH1_RE|CH0_RE|||||FAIL_IE|ZC_IE|CH1_IE|CH0_IE|
|||||RW|RW|RW|RW|||||RW|RW|RW|RW|
|||||0|0|0|0|||||0|0|0|0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:12\]||未使用|
|\[11\]|FAIL_RE|TIMER FAIL事件 DMA请求使能，高电平有效。|
|\[10\]|ZC_RE|TIMER CNT过0 DMA请求使能，高电平有效。|
|\[9\]|CH1_RE|TIMER通道1比较/捕获 DMA请求使能，高电平有效。|
|\[8\]|CH0_RE|TIMER通道0比较/捕获 DMA请求使能，高电平有效。|
|\[7:4\]||未使用|
|\[3\]|FAIL_IE|TIMER FAIL事件中断使能，高电平有效。|
|\[2\]|ZC_IE|TIMER CNT过0中断使能，高电平有效。|
|\[1\]|CH1_IE|TIMER通道1比较/捕获中断使能，高电平有效。|
|\[0\]|CH0_IE|TIMER通道0比较/捕获中断使能，高电平有效。|

DMA请求事件，与中断为相同事件标志，DMA请求被DMA受理后，中断标志会被DMA硬件自动清除，无需CPU软件干预。需要注意的是，通常开启某个事件的DMA请求则关闭对应的中断使能。

#### TIMER0_IF TIMER0 中断标志寄存器

地址:0x4001_062C

复位值:0x0

表13-16
TIMER0中断标志寄存器TIMER0_IF

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|||||||||||||FAIL_IF|ZC_IF|CH1_IF|CH0_IF|
|||||||||||||RW1C|RW1C|RW1C|RW1C|
|||||||||||||0|0|0|0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:4\]||未使用|
|\[3\]|FAIL_IF|TIMER Fail事件中断标志。高电平有效，写1清0|
|\[2\]|ZC_IF|TIMER CNT过0中断标志。高电平有效，写1清0|
|\[1\]|CH1_IF|TIMER通道1比较/捕获中断标志。高电平有效，写1清0|
|\[0\]|CH0_IF|TIMER通道0比较/捕获中断标志。高电平有效，写1清0|

当发生特定事件时，即使中断使能位IE=0，对应的IF仍会置位，但不会向处理器提起中断服务请求。

在比较模式下，当TIMER设置为中心计数（0-\>TH-\>0），即TIMERx_CFG.CENTER=1时。CH0_IF和CH1_IF只有在TIMER从0递增计数至TH的过程中，当TIMERx_CNT=TIMERx_CMP0/1时置位；在TIMER从TH递减计数到0的过程中不会置位。

当TIMERx_CFG.DIR=0

中断标志写1清零，一般不建议用如下\|=方式清零，因为\|=是先读取中断标志，将对应位改为1再写入清零，如果同时有其他中断标志置位，会被一起清零，而这通常不是软件所期望的。例如，如下写法本意是清零ZC_IF，但如果同时CH0_IF在写入执行前置1了，则软件先读取回TIMERx_IF值为0x24，然后执行或操作0x4\|0x1=0x5，然后写入，同时对CH0_IF和ZC_IF进行了清零，可能导致TIMER少进入一次因捕获而产生的中断。

*TIMERx_IF\|=0x4;*

如果希望清零ZC_IF标志位，应以如下方式，直接对BIT2写1.

*TIMERx_IF=0x4;*

#### TIMER0_IO TIMER0 IO 控制寄存器

地址:0x4001_0630

复位值:0x0

表13-17 TIMER0 IO控制寄存器TIMER0_IO

||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10||9||8||7|6|5|4|3|2|1|0|
|||||||CH1_DEFAULT||CH0_DEFAULT||HALT_PRT||MOE||||FAIL_SEL|FAIL_POL|FAIL_EN|
|||||||RW||RW||RW||RW||||RW|RW|RW|
|||||||0||0||0||0||||0|0|0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:10\]||未使用|
|\[9\]|CH1_DEFAULT|发生Fail事件MOE清零后，CH1通道输出值|
|\[8\]|CH0_DEFAULT|发生Fail事件MOE清零后，CH0通道输出值|
|\[7\]|HALT_PRT|MCU进入HALT状态，TIMER输出值选择。1:正常输出；0:输出CH1_DEFAULT和CH0_DEFAULT。|
|\[6\]|MOE|TIMER通道0/1输出使能1:输出正常信号0:输出CH0_DEFAULT和CH1_DEFAULT默认值TIMER0_IF.FAIL_IF变1将触发MOE变成0，通道输出默认值。若要恢复输出正常信号，需要先将FAIL_IF清零，然后软件设置MOE=1。无论TIMER工作在何种模式下，只有在MOE置为1之后，TIMER通道0/1才能输出正常信号。|
|\[5:3\]||未使用|
|\[2\]|FAIL_SEL|FAIL信号选择0:TIMER0_FAIL，来自GPIO1:CLU0输出|
|\[1\]|FAIL_POL|FAIL信号极性0:高电平FAIL1:低电平FAIL|
|\[0\]|FAIL_EN|FAIL信号使能 0:禁用FAIL1:使能FAIL|

**TIMER0_IO寄存器无法在CPU
HALT的时候进行配置，因此需要保证TIMER0_IO寄存器在CPU
HALT前就完成配置。**

### TIMER1寄存器

TIMER1在芯片中的基地址是0x4001_0700

表13-18
TIMER1寄存器地址分配

||||
|---|---|---|
|名称|偏移|描述|
|TIMER1_CFG0|0x00|TIMER1通道0配置寄存器|
|TIMER1_CFG1|0x04|TIMER1通道1配置寄存|
|TIMER1_CFG2|0x08|TIMER1配置寄存器2|
||||
|TIMER1_TH|0x10|TIMER1计数门限寄存器|
|TIMER1_CNT|0x14|TIMER1计数值寄存器|
|TIMER1_CMP0|0x18|TIMER1比较/捕获寄存器0|
|TIMER1_CMP1|0x1C|TIMER1比较/捕获寄存器1|
|TIMER1_EVT|0x20|TIMER1外部事件选择寄存器|
|TIMER1_FLT|0x24|TIMER1滤波控制寄存器|
|TIMER1_IE|0x28|TIMER1中断使能寄存器|
|TIMER1_IF|0x2C|TIMER1中断标志寄存器|
|TIMER1_IO|0x30|TIMER1 IO控制寄存器|

#### TIMER1_CFG0 TIMER1 通道0配置寄存器

地址:0x4001_0700

复位值:0x0

表13-19 TIMER1通道0配置寄存器TIMER1_CFG0

||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10||9|8|7|6|5|4|3|2|1|0|
|||||||TRIGGER_MODE||CAP_CLR_EN|SRC||||CH_POL|CH_MODE|CH_FE_CAP_EN|CH_RE_CAP_EN|
|||||||RW||RW|RW||||RW|RW|RW|RW|
|||||||0||0|0||||0|0|0|0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:11\]||未使用|
|\[10:9\]|TRIGGER_MODE|用于选择递增计数时触发还是递减计数的时候触发adc采样。默认值是0x0。0x1:递增计数时触发0x2:递减计数时触发其他的值则意味着递增和递减时都能触发ADC采样|
|\[8\]|CAP_CLR_EN|当发生CAP捕获事件时，清零TIMERx_CNT，高有效|
|\[7:4\]|SRC|TIMER捕获模式通道0信号来源。默认为0x0。0x0: TIMER通道0，来自芯片GPIO（参见Datasheet及应用配置）0x1: TIMER通道1，来自芯片GPIO（参见Datasheet及应用配置）0x2: CLU0输出0x3: CLU1输出0x4: CLU2输出0x5: CLU3输出0x6: 比较器0的输出0x7: 比较器1的输出0x9: TIMER通道0和1的异或0xA: LRC时钟|
|\[3\]|CH_POL|TIMER通道0在比较模式下的输出极性控制:当计数器TIMERx_CNT\<TIMERx_CMP0时的输出值。时的输出值。|
|\[2\]|CH_MODE|TIMER通道0的工作模式选择，默认值为0。0: 比较模式。输出方波，在TIMER通道0计数器计数值等于0或等于TIMER比较捕获寄存器值时，IO发生翻转。1: 捕获模式。当TIMER通道0输入信号发生捕获事件时，将计数器计数值存入TIMER通道0比较捕获寄存器。|
|\[1\]|CH_FE_CAP_EN|TIMER通道0下降沿捕获事件使能。1:使能；0:关闭。TIMER通道0输入信号发生1?0跳变被视为捕获事件。下降沿事件使能可以与上升沿事件使能并存。|
|\[0\]|CH_RE_CAP_EN|TIMER通道0上升沿捕获事件使能。1:使能；0:关闭。TIMER通道0输入信号发生0?1跳变被视为捕获事件。上升沿事件使能可以与下降沿事件使能并存。|

#### TIMER1_CFG1 TIMER1 通道1配置寄存器

地址:0x4001_0704

复位值:0x0

表13-20 TIMER1通道1配置寄存器TIMER1_CFG

||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10||9|8|7|6|5|4|3|2|1|0|
|||||||TRIGGER_MODE||CAP_CLR_EN|SRC||||CH_POL|CH_MODE|CH_FE_CAP_EN|CH_RE_CAP_EN|
|||||||RW||RW|RW||||RW|RW|RW|RW|
|||||||0||0|0||||0|0|0|0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:11\]||未使用|
|\[10:9\]|TRIGGER_MODE|用于选择递增计数时触发还是递减计数的时候触发adc采样。默认值是0x0。0x1:递增计数时触发0x2:递减计数时触发其他的值则意味着递增和递减时都能触发ADC采样|
|\[8\]|CAP_CLR_EN|当发生CAP1捕获事件时，清零TIMERx_CNT，高有效|
|\[7:4\]|SRC|TIMER捕获模式通道1信号来源。默认为0x1。0x0: TIMER通道0，来自芯片GPIO（参见Datasheet及应用配置）0x1: TIMER通道1，来自芯片GPIO（参见Datasheet及应用配置）0x2: CLU0输出0x3: CLU1输出0x4: CLU2输出0x5: CLU3输出0x6: 比较器0的输出0x7: 比较器1的输出0x9: TIMER通道0和1的异或0xA: LRC时钟|
|\[3\]|CH_POL|TIMER通道1在比较模式下的输出极性控制，当计数器CNT\<CMP1时的输出值。|
|\[2\]|CH_MODE|TIMER通道1的工作模式选择，默认值为0。0: 比较模式。输出方波，在TIMER通道1计数器计数值等于0或等于TIMER比较捕获寄存器值时，IO发生翻转。1: 捕获模式。当TIMER通道1输入信号发生捕获事件时，将计数器计数值存入TIMER通道1比较捕获寄存器。|
|\[1\]|CH_FE_CAP_EN|TIMER通道1下降沿捕获事件使能。1:使能；0:关闭。TIMER通道1输入信号发生1?0跳变被视为捕获事件。下降沿事件使能可以与上升沿事件使能并存。|
|\[0\]|CH_RE_CAP_EN|TIMER通道1上升沿捕获事件使能。1:使能；0:关闭。TIMER通道1输入信号发生0?1跳变被视为捕获事件。上升沿事件使能可以与下降沿事件使能并存。|

#### TIMER1_CFG2 TIMER1 配置寄存器2

地址:0x4001_0708

复位值:0x0

表13-21 TIMER1配置寄存器2 TIMER1_CFG2

||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14||13|12|11|10|9|8|7|6|5|4|3|||2||1||0|
|EN||RTE||CMP1TMIN|UPDATE|SHADOW|ONE_TRIG|CENTER|DIR|CLK_DIV||||ETON|GATE_EN||RL_EN||XCLK_EN||
|RW||RW||RW|RW|RW|RW|RW|RW|RW||||RW|RW||RW||RW||
|0||0||0|0|0|0|0|0|0||||0|0||0||0||

||||
|---|---|---|
|位置|位名称|说明|
|\[15\]|EN|TIMER模块整体使能，高有效|
|\[14\]|RTE|单次触发模式下是否可以在一个周期内再次触发0:不使能再次触发，即一个单次计数周期内发生的单次触发信号被忽略；1:使能再次触发，即一个单次计数周期内发生的单次触发信号会令TIMERx_CNT重置重新开始一个周期的计数|
|\[13\]|||
|\[12\]|CMP1TMIN|当RL_EN=1时，使用CMP1作为TMIN。TMIN为TIMER 最小计数值寄存器。只有当TIMERx_CNT\>= TMIN时，外部重置事件才会将TIMERx_CNT清零。如果TIMERx_CNT\< TMIN，则等到TIMERx_CNT= TMIN时TIMERx_CNT清零。|
|\[11\]|UPDATE|软件更新启用影子寄存器时，向UPDATE写1将TH/CMP0/CMP1的预装载值加载到影子寄存器STH/SCMP0/SCMP1之中。自动清零，读回恒为0。写0无作用。推荐使用TIMER1_CFG\|=BIT11;的方式进行手动更新影子寄存器的操作，防止手动更新时误将其他配置清零。|
|\[10\]|SHADOW|0: 不启用影子寄存器，软件写入TH/CMP0/CMP1时直接更新对应的影子寄存器1: 启用影子寄存器，软件写入TH/CMP0/CMP1时进仅仅更新预装载值，当TIMER发生过零事件时才将预装载值写入影子寄存器|
|\[9\]|ONE_TRIG|单次发送模式，此位需要在TIMER比较模式下使用，且EN需设置为0ETON为0时，软件向ONE_TRIG写1触发TIMER发送一个周期的特定占空比的脉冲，TIMER计数一个周期后停止。此位在TIMER计数的当前周期内读为1，TIMER停止后，自动清零。ETON为1时，即使软件配置ONE_TRIG=1，也需要等待外部事件触发，TIMER计数一个周期后停止。ONE_TRIG位在外部触发TIMER计数一个周期停止后不被硬件清零。|
|\[8\]|CENTER|中心计数模式使能0: TIMER向上从0计数至TH，然后回0，或TIMER向下从TH计数至0，然后回到TH1: TIMER向上从0计数至TH，然后向下计数至0|
|\[7\]|DIR|0: 0-\>TH递增计数，1:TH-\>递减计数此位在CENTER=1时只读，用于指示当前计数方向|
|\[6:4\]|CLK_DIV|TIMERx_CNT频率配置，计数器计数频率是系统主时钟频率的2CLK_DIV分频。默认值为0，不分频。0: 1分频1: 2分频2: 4分频3: 8分频4: 16分频5: 32分频6: 64分频7: 128分频|
|\[3\]|ETON|TIMERx_CNT外部启动使能0: 自动运行1:等待外部事件触发计数，外部触发信号根据TIMERx_EVT.EVT_SRC进行选择需要注意的是，使用外部触发也需要设置TIMERx_CFG.EN=1，除非是外部信号进行的单次触发，即TIMERx_CFG.ONE_TRIG=1。|
|\[2\]|GATE_EN|TIMER暂停使能0:不暂停1:当外部信号为低时，TIMER暂停计数，外部信号根据TIMERx_EVT.EVT_SRC进行选择|
|\[1\]|RL_EN|TIMER重装使能0:禁用外部事件重装，TIMER向上计数至TH回0，或向下计数值0回到TH1:使能外部事件重装，重装信号根据TIMERx_EVT.EVT_SRC进行选择，当向上计数时，发生外部事件，TIMER重装为0,；当向下计数时，发生外部事件，TIMER重装为TH。|
|\[0\]|XCLK_EN|TIMER 时钟源0: 芯片内部时钟1: 外部时钟，时钟源根据TIMER0_EVT.EVT_SRC进行选择，当使用外部时钟时，CLK_DIV不再起作用，即时钟不再进行分频|

当使用外部时钟计数时，也需要设置TIMERx_CFG.TON=1，且需要开启SYS_CLK_FEN中对于TIMER时钟的使能。使用外部时钟计数时，也需要设置TIMERx_TH。

通常外部事件仅仅作为外部启动、外部门控、外部时钟和外部清零的一个用途使用，即通常TIMERx_CFG2\[3:0\]中仅设置1bit为1。

如果设置TIMERx_CFG0.SRC为4’h8捕获两通道异或值，（通常为捕获编码器正交的两个通道），需要同时设置TIMERx_CFG0.CAP_CLR_EN=1，TIMERx_CFG0.CH_FE_CAP_EN=1，TIMERx_CFG0.CH_RE_CAP_EN=1，TIMERx_CFG.CH_MODE=1，即捕获上升沿、下降沿，且每次有信号边沿都清零计数器。CMP0即为捕获的两次信号边沿之间的计数值。

#### TIMER1_TH TIMER1 门限寄存器

地址:0x4001_0710

复位值:0x0

表13-22 TIMER1门限寄存器TIMER1_TH

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|TH||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:16\]||未使用|
|\[15:0\]|TH|TIMER 计数器计数门限。向上计数从0计数到TH值后回0，或向下计数从TH计数到0后回到TH|

#### TIMER1_CNT TIMER1 计数寄存器

地址:0x4001_0714

复位值:0x0

表13-23 TIMER1计数寄存器TIMER1_CNT

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|CNT||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:16\]||未使用|
|\[15:0\]|CNT|TIMER 0计数器当前计数值。写操作可以写入新的计数值。|

注意:写入TIMER1_CNT前需要先通过SYS_CLK_FEN.TIMER1_CLK_EN开启TIMER1时钟。

#### TIMER1_CMP0 TIMER1 通道0比较捕获寄存器

地址:0x4001_0718

复位值:0x0

表13-24
TIMER1通道0比较捕获寄存器TIMER1_CMP0

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|CMP0||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:16\]||未使用|
|\[15:0\]|CMP0|TIMER 通道0工作在比较模式时，当计数器计数值等于CMP0时，发生比较事件。TIMER 通道0工作在捕获模式时，发生捕获事件时的计数器计数值存入CMP0寄存器。|

设置CMP0=0，可使得通道0恒为!CH0_POL，设置CMP0=TH+1，可使得通道0恒为CH0_POL。

#### TIMER1_CMP1 TIMER1 通道1比较捕获寄存器

地址:0x4001_071C

复位值:0x0

表13-25
TIMER1通道1比较捕获寄存器TIMER1_CMP1

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|CMP1||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:16\]||未使用|
|\[15:0\]|CMP1|TIMER 通道1工作在比较模式时，当计数器计数值等于CMP1时，发生比较事件。TIMER 通道1工作在捕获模式时，发生捕获事件时的计数器计数值存入CMP1寄存器。|

设置CMP1=0，可使得通道恒为!CH1_POL，设置CMP1=TH+1，可使得通道恒为CH1_POL。

#### TIMER1_EVT TIMER1 外部事件选择寄存器

地址:0x4001_0720

复位值:0x0

表13-26
TIMER1外部事件选择寄存器TIMER1_EVT

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|||||||||EVT_TH||||EVT_SRC||||
|||||||||RW||||RW||||
|||||||||0||||0||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:8\]||未使用|
|\[7:4\]|EVT_TH|外部事件发生次数阈值，配合TIMERx_CFG.RL_EN使用。外部事件发生EVT_TH次后产生效果（当EVT_TH=0时，1次即生效）。可配置的外部事件发生次数阈值范围是0~15。特别地，当设置TIMERx_CFG.CMP1TMIN=1，且TIMERx_CNT\<TIMERx_CMP1时，即使此前发生的外部事件已达到EVT_TH设定次数，TIMERx_CNT重置也会延迟生效，即TIMERx_CNT会继续计数到TIMERx_CMP1后归零。此时TIMERx_CMP1作为重置最小计数值TMIN使用。EVT_TH在一个TIMER周期后自动清零，即一个TIMER周期的外部事件不累积至下一个周期。|
|\[3:0\]|EVT_SRC|TIMER外部事件选择寄存器，本寄存器需要配合TIMER1_CFG.ETON，TIMER1_CFG.GATE_EN，TIMER1_CFG.RL_EN，TIMER1_CFG.XCLK_EN使用。通常4个设置位不同时使用。当设置ETON=1时，根据本寄存器选择触发TIMER计数的事件。需要注意的是，TIMER自身的比较事件无法触发TIMER进行计数。当ETON=1时，触发信号的上升沿触发TIMER开始计数，用作触发源的TIMER需要工作在比较模式，无须从外部输入信号至TIMER通道0:TIMER0 通道0比较/捕获事件1:TIMER0 通道1比较/捕获事件2:不可用3:不可用4:TIMER2 通道0比较/捕获事件5:TIMER2 通道1比较/捕获事件6:不可用7:不可用8:CLU0输出上升沿9:CLU1输出上升沿10:CLU2输出上升沿11:CLU3输出上升沿12:MCPWM TADC\[0\]比较事件13:MCPWM TADC\[1\]比较事件14:MCPWM TADC\[2\]比较事件15:MCPWM TADC\[3\]比较事件当GATE_EN=1，且外部信号为高时TIMER计数，外部信号为低时，TIMER暂停，当GATE_EN=1时，TIMER使用对应外部信号的电平信号作为计数门控。GATE_EN仅支持配合0~11的外部事件使用，当EVT_SRC选择为0~7时，外部信号为TIMER通道输入信号经过对应TIMER滤波后的信号，作为门控信号的TIMER通道需要配置为输入使能0:TIMER0 通道0滤波后输入信号1:TIMER0 通道1滤波后输入信号2:TIMER1 通道0滤波后输入信号3:TIMER1 通道1滤波后输入信号4:TIMER2 通道0滤波后输入信号5:TIMER2 通道1滤波后输入信号6:CLU0输出信号7:CLU1输出信号8:CLU2输出信号9:CLU3输出信号当RL_EN为高时，TIMER使用外部信号作为重装载信号作为重装载信号的TIMER通道需要配置为输入使能0:TIMER0 通道0比较/捕获事件1:TIMER0 通道1比较/捕获事件2:TIMER1 通道0比较/捕获事件3:TIMER1 通道1比较/捕获事件4:TIMER2 通道0比较/捕获事件5:TIMER2 通道1比较/捕获事件6:CLU0输出7:CLU1输出8:CLU2输出9:CLU3输出10:MCPWM TADC\[0\]比较事件11:MCPWM TADC\[1\]比较事件12:MCPWM TADC\[2\]比较事件13:MCPWM TADC\[3\]比较事件当XCLK_EN为高时，TIMER使用外部信号作为TIMER外部时钟，TIMER在时钟上升沿进行计数动作。如果使用TIMER通道作为外部时钟，通道信号受到对应TIMER滤波设置影响。0:TIMER0 通道0输入信号1:TIMER0 通道1输入信号2:TIMER1 通道0输入信号3:TIMER1 通道1输入信号4:TIMER2 通道0输入信号5:TIMER2 通道1输入信号6:CLU0输出7:CLU1输出8:CLU2输出9:CLU3输出10:MCPWM TADC\[0\]比较事件11:MCPWM TADC\[1\]比较事件12:MCPWM TADC\[2\]比较事件13:MCPWM TADC\[3\]比较事件|

#### TIMER1_FLT TIMER1 滤波控制寄存器

地址:0x4001_0724

复位值:0x0

表13-27 TIMER1滤波控制寄存器TIMER1_FLT

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|||||||||FLT||||||||
|||||||||RW||||||||
|||||||||0||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:8\]||未使用|
|\[7:0\]|FLT|通道0/1信号滤波宽度选择。取值范围0~255。FLT为0时，不对通道进行滤波。FLT不为0时，对通道信号进行滤波:滤波宽度为FLT×8。当通道信号电平稳定超过FLT×8个系统时钟周期宽度时，滤波器输出更新；否则，滤波器保持当前的输出不变。|

注意，以上滤波器的工作时钟与对应的TIMER的分频后的工作时钟为相同时钟，受TIMERx_CFG.CLK_DIV的分频系数控制。

假设TIMERx_FLT = 0x6；TIMERx_CFG.CLK_DIV = 0x2;
则TIMER的运行时钟相对系统时钟进行了4分频。通道输入信号需要经过8×6倍TIMER的运行时钟的滤波，亦即8×6×4倍系统时钟的滤波。

#### TIMER1_IE TIMER1 中断使能寄存器

地址:0x4001_0728

复位值:0x0

表13-28 TIMER1中断使能寄存器TIMER1_IE

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|||||FAIL_RE|ZC_RE|CH1_RE|CH0_RE|||||FAIL_IE|ZC_IE|CH1_IE|CH0_IE|
|||||RW|RW|RW|RW|||||RW|RW|RW|RW|
|||||0|0|0|0|||||0|0|0|0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:12\]||未使用|
|\[11\]|FAIL_RE|TIMER FAIL事件 DMA请求使能，高电平有效。|
|\[10\]|ZC_RE|TIMER CNT过0 DMA请求使能，高电平有效。|
|\[9\]|CH1_RE|TIMER通道1比较/捕获 DMA请求使能，高电平有效。|
|\[8\]|CH0_RE|TIMER通道0比较/捕获 DMA请求使能，高电平有效。|
|\[7:4\]||未使用|
|\[3\]|FAIL_IE|TIMER FAIL事件中断使能，高电平有效。|
|\[2\]|ZC_IE|TIMER CNT过0中断使能，高电平有效。|
|\[1\]|CH1_IE|TIMER通道1比较/捕获中断使能，高电平有效。|
|\[0\]|CH0_IE|TIMER通道0比较/捕获中断使能，高电平有效。|

DMA请求事件，与中断为相同事件标志，DMA请求被DMA受理后，中断标志会被DMA硬件自动清除，无需CPU软件干预。需要注意的是，通常开启某个事件的DMA请求则关闭对应的中断使能。

#### TIMER1_IF TIMER1 中断标志寄存器

地址:0x4001_072C

复位值:0x0

表13-29 TIMER1中断标志寄存器TIMER1_IF

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|||||||||||||FAIL_IF|ZC_IF|CH1_IF|CH0_IF|
|||||||||||||RW1C|RW1C|RW1C|RW1C|
|||||||||||||0|0|0|0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:4\]||未使用|
|\[3\]|FAIL_IF|TIMER Fail事件中断标志。高电平有效，写1清0|
|\[2\]|ZC_IF|TIMER CNT过0中断标志。高电平有效，写1清0|
|\[1\]|CH1_IF|TIMER通道1比较/捕获中断标志。高电平有效，写1清0|
|\[0\]|CH0_IF|TIMER通道0比较/捕获中断标志。高电平有效，写1清0|

当发生特定事件时，即使中断使能位IE=0，对应的IF仍会置位，但不会向处理器提起中断服务请求。

在比较模式下，当TIMER设置为中心计数（0-\>TH-\>0），即TIMERx_CFG.CENTER=1时。CH0_IF和CH1_IF只有在TIMER从0递增计数至TH的过程中，当TIMERx_CNT=TIMERx_CMP0/1时置位；在TIMER从TH递减计数到0的过程中不会置位。

中断标志写1清零，一般不建议用如下\|=方式清零，因为\|=是先读取中断标志，将对应位改为1再写入清零，如果同时有其他中断标志置位，会被一起清零，而这通常不是软件所期望的。例如，如下写法本意是清零ZC_IF，但如果同时CH0_IF在写入执行前置1了，则软件先读取回TIMERx_IF值为0x24，然后执行或操作0x4\|0x1=0x5，然后写入，同时对CH0_IF和ZC_IF进行了清零，可能导致TIMER少进入一次因捕获而产生的中断。

*TIMERx_IF\|=0x4;*

如果希望清零T0_ZC_IF标志位，应以如下方式，直接对BIT2写1.

*TIMERx_IF=0x4;*

#### TIMER1_IO TIMER1 IO 控制寄存器

地址:0x4001_0730

复位值:0x0

表13-30 TIMER1 IO控制寄存器TIMER1_IO

||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10||9||8||7|6|5|4|3|2|1|0|
|||||||CH1_DEFAULT||CH0_DEFAULT||HALT_PRT||MOE||||FAIL_SEL|FAIL_POL|FAIL_EN|
|||||||RW||RW||RW||RW||||RW|RW|RW|
|||||||0||0||0||0||||0|0|0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:10\]||未使用|
|\[9\]|CH1_DEFAULT|发生Fail事件MOE清零后，CH1通道输出值|
|\[8\]|CH0_DEFAULT|发生Fail事件MOE清零后，CH0通道输出值|
|\[7\]|HALT_PRT|MCU进入HALT状态，TIMER输出值选择。1:正常输出；0:输出CH1_DEFAULT和CH0_DEFAULT。|
|\[6\]|MOE|TIMER通道0/1输出使能1:输出正常信号0:输出CH0_DEFAULT和CH1_DEFAULT默认值TIMER0_IF.FAIL_IF变1将触发MOE变成0，通道输出默认值。若要恢复输出正常信号，需要先将FAIL_IF清零，然后软件设置MOE=1。无论TIMER工作在何种模式下，只有在MOE置为1之后，TIMER通道0/1才能输出正常信号。|
|\[5:3\]||未使用|
|\[2\]|FAIL_SEL|FAIL信号选择0:TIMER0_FAIL，来自GPIO1:CLU0输出|
|\[1\]|FAIL_POL|FAIL信号极性0:高电平FAIL1:低电平FAIL|
|\[0\]|FAIL_EN|FAIL信号使能 0:禁用FAIL1:使能FAIL|

**TIMER1_IO寄存器无法在CPU
HALT的时候进行配置，因此需要保证TIMER1_IO寄存器在CPU
HALT前就完成配置。**

### TIMER2寄存器

TIMER2在芯片中的基地址是0x4001_0800

表13-31 TIMER2寄存器地址分配

||||
|---|---|---|
|名称|偏移|描述|
|TIMER2_CFG0|0x00|TIMER2通道0配置寄存器|
|TIMER2_CFG1|0x04|TIMER2通道1配置寄存|
|TIMER2_CFG2|0x08|TIMER2配置寄存器2|
||||
|TIMER2_TH|0x10|TIMER2计数门限寄存器|
|TIMER2_CNT|0x14|TIMER2计数值寄存器|
|TIMER2_CMP0|0x18|TIMER2比较/捕获寄存器0|
|TIMER2_CMP1|0x1C|TIMER2比较/捕获寄存器1|
|TIMER2_EVT|0x20|TIMER2外部事件选择寄存器|
|TIMER2_FLT|0x24|TIMER2滤波控制寄存器|
|TIMER2_IE|0x28|TIMER2中断使能寄存器|
|TIMER2_IF|0x2C|TIMER2中断标志寄存器|

#### TIMER2_CFG0 TIMER2 通道0配置寄存器

地址:0x4001_0800

复位值:0x0

表13-32 TIMER2通道0配置寄存器TIMER2_CFG0

||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10||9|8|7|6|5|4|3|2|1|0|
|||||||TRIGGER_MODE||CAP_CLR_EN|SRC||||CH_POL|CH_MODE|CH_FE_CAP_EN|CH_RE_CAP_EN|
|||||||RW||RW|RW||||RW|RW|RW|RW|
|||||||0||0|0||||0|0|0|0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:11\]||未使用|
|\[10:9\]|TRIGGER_MODE|用于选择递增计数时触发还是递减计数的时候触发adc采样。默认值是0x0。0x1:递增计数时触发0x2:递减计数时触发其他的值则意味着递增和递减时都能触发ADC采样|
|\[8\]|CAP_CLR_EN|当发生CAP捕获事件时，清零TIMERx_CNT，高有效|
|\[7:4\]|SRC|TIMER捕获模式通道0信号来源。默认为0x0。0x0: TIMER通道0，来自芯片GPIO（参见Datasheet及应用配置）0x1: TIMER通道1，来自芯片GPIO（参见Datasheet及应用配置）0x2: CLU0输出0x3: CLU1输出0x4: CLU2输出0x5: CLU3输出0x6: 比较器0的输出0x7: 比较器1的输出0x9: TIMER通道0和1的异或0xA: LRC时钟|
|\[3\]|CH_POL|TIMER通道0在比较模式下的输出极性控制:当计数器CNT\<CMP0时的输出值。时的输出值。|
|\[2\]|CH_MODE|TIMER通道0的工作模式选择，默认值为0。0: 比较模式。输出方波，在TIMER通道0计数器计数值等于0或等于TIMER比较捕获寄存器值时，IO发生翻转。1: 捕获模式。当TIMER通道0输入信号发生捕获事件时，将计数器计数值存入TIMER通道0比较捕获寄存器。|
|\[1\]|CH_FE_CAP_EN|TIMER通道0下降沿捕获事件使能。1:使能；0:关闭。TIMER通道0输入信号发生1?0跳变被视为捕获事件。下降沿事件使能可以与上升沿事件使能并存。|
|\[0\]|CH_RE_CAP_EN|TIMER通道0上升沿捕获事件使能。1:使能；0:关闭。TIMER通道0输入信号发生0?1跳变被视为捕获事件。上升沿事件使能可以与下降沿事件使能并存。|

#### TIMER2_CFG1 TIMER2 通道1配置寄存器

地址:0x4001_0804

复位值:0x0

表13-33 TIMER2通道1配置寄存器TIMER2_CFG

||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10||9|8|7|6|5|4|3|2|1|0|
|||||||TRIGGER_MODE||CAP_CLR_EN|SRC||||CH_POL|CH_MODE|CH_FE_CAP_EN|CH_RE_CAP_EN|
|||||||RW||RW|RW||||RW|RW|RW|RW|
|||||||0||0|0||||0|0|0|0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:9\]||未使用|
|\[8\]|CAP_CLR_EN|当发生CAP1捕获事件时，清零TIMERx_CNT，高有效|
|\[7:4\]|SRC|TIMER捕获模式通道1信号来源。默认为0x1。0x0: TIMER通道0，来自芯片GPIO（参见Datasheet及应用配置）0x1: TIMER通道1，来自芯片GPIO（参见Datasheet及应用配置）0x2: CLU0输出0x3: CLU1输出0x4: CLU2输出0x5: CLU3输出0x6: 比较器0的输出0x7: 比较器1的输出0x9: TIMER通道0和1的异或0xA: LRC时钟|
|\[3\]|CH_POL|TIMER通道1在比较模式下的输出极性控制，当计数器CNT\<CMP1时的输出值。|
|\[2\]|CH_MODE|TIMER通道1的工作模式选择，默认值为0。0: 比较模式。输出方波，在TIMER通道1计数器计数值等于0或等于TIMER比较捕获寄存器值时，IO发生翻转。1: 捕获模式。当TIMER通道1输入信号发生捕获事件时，将计数器计数值存入TIMER通道1比较捕获寄存器。|
|\[1\]|CH_FE_CAP_EN|TIMER通道1下降沿捕获事件使能。1:使能；0:关闭。TIMER通道1输入信号发生1?0跳变被视为捕获事件。下降沿事件使能可以与上升沿事件使能并存。|
|\[0\]|CH_RE_CAP_EN|TIMER通道1上升沿捕获事件使能。1:使能；0:关闭。TIMER通道1输入信号发生0?1跳变被视为捕获事件。上升沿事件使能可以与下降沿事件使能并存。|

#### TIMER2_CFG2 TIMER2 配置寄存器2

地址:0x4001_0808

复位值:0x0

表13-34 TIMER2配置寄存器2 TIMER2_CFG2

||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14||13|12|11|10|9|8|7|6|5|4|3|||2||1||0|
|EN||RTE||CMP1TMIN|||ONE_TRIG|CENTER|DIR|CLK_DIV||||ETON|GATE_EN||RL_EN||XCLK_EN||
|RW||RW||RW|||RW|RW|RW|RW||||RW|RW||RW||RW||
|0||0||0|||0|0|0|0||||0|0||0||0||

||||
|---|---|---|
|位置|位名称|说明|
|\[15\]|EN|TIMER模块整体使能，高有效|
|\[14\]|RTE|单次触发模式下是否可以在一个周期内再次触发0:不使能再次触发，即一个单次计数周期内发生的单次触发信号被忽略；1:使能再次触发，即一个单次计数周期内发生的单次触发信号会令TIMERx_CNT重置重新开始一个周期的计数|
|\[13\]|||
|\[12\]|CMP1TMIN|当RL_EN=1时，使用CMP1作为TMIN。TMIN为TIMER 最小计数值寄存器。只有当TIMERx_CNT\>= TMIN时，外部重置事件才会将TIMERx_CNT清零。如果TIMERx_CNT\< TMIN，则等到TIMERx_CNT= TMIN时TIMERx_CNT清零。|
|\[11\]|||
|\[10\]|||
|\[9\]|ONE_TRIG|单次发送模式，此位需要在TIMER比较模式下使用，且EN需设置为0ETON为0时，软件向ONE_TRIG写1触发TIMER发送一个周期的特定占空比的脉冲，TIMER计数一个周期后停止。此位在TIMER计数的当前周期内读为1，TIMER停止后，自动清零。ETON为1时，即使软件配置ONE_TRIG=1，也需要等待外部事件触发，TIMER计数一个周期后停止。ONE_TRIG位在外部触发TIMER计数一个周期停止后不被硬件清零。|
|\[8\]|CENTER|中心计数模式使能0: TIMER向上从0计数至TH，然后回0，或TIMER向下从TH计数至0，然后回到TH1: TIMER向上从0计数至TH，然后向下计数至0|
|\[7\]|DIR|0: 0-\>TH递增计数，1:TH-\>递减计数此位在CENTER=1时只读，用于指示当前计数方向|
|\[6:4\]|CLK_DIV|TIMERx_CNT频率配置，计数器计数频率是系统主时钟频率的2CLK_DIV分频。默认值为0，不分频。0: 1分频1: 2分频2: 4分频3: 8分频4: 16分频5: 32分频6: 64分频7: 128分频|
|\[3\]|ETON|TIMERx_CNT外部启动使能0: 自动运行1:等待外部事件触发计数，外部触发信号根据TIMERx_EVT.EVT_SRC进行选择需要注意的是，使用外部触发也需要设置TIMERx_CFG.EN=1，除非是外部信号进行的单次触发，即TIMERx_CFG.ONE_TRIG=1。|
|\[2\]|GATE_EN|TIMER暂停使能0:不暂停1:当外部信号为低时，TIMER暂停计数，外部信号根据TIMERx_EVT.EVT_SRC进行选择|
|\[1\]|RL_EN|TIMER重装使能0:禁用外部事件重装，TIMER向上计数至TH回0，或向下计数值0回到TH1:使能外部事件重装，重装信号根据TIMER0_EVT.EVT_SRC进行选择，当向上计数时，发生外部事件，TIMER重装为0,；当向下计数时，发生外部事件，TIMER重装为TH。|
|\[0\]|XCLK_EN|TIMER 时钟源0: 芯片内部时钟1: 外部时钟，时钟源根据TIMER0_EVT.EVT_SRC进行选择，当使用外部时钟时，CLK_DIV不再起作用，即时钟不再进行分频|

当使用外部时钟计数时，也需要设置TIMERx_CFG.TON=1，且需要开启SYS_CLK_FEN中对于TIMER时钟的使能。使用外部时钟计数时，也需要设置TIMERx_TH。

通常外部事件仅仅作为外部启动、外部门控、外部时钟和外部清零的一个用途使用，即通常TIMERx_CFG2\[3:0\]中仅设置1bit为1。

如果设置TIMERx_CFG0.SRC为4’h8捕获两通道异或值，（通常为捕获编码器正交的两个通道），需要同时设置TIMERx_CFG0.CAP_CLR_EN=1，TIMERx_CFG0.CH_FE_CAP_EN=1，TIMERx_CFG0.CH_RE_CAP_EN=1，TIMERx_CFG.CH_MODE=1，即捕获上升沿、下降沿，且每次有信号边沿都清零计数器。CMP0即为捕获的两次信号边沿之间的计数值。TIMER2_CFG
TIMER2配置寄存器

#### TIMER2_TH TIMER2 门限寄存器

地址:0x4001_0810

复位值:0x0

表13-35
TIMER2门限寄存器TIMER2_TH

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|
|TH||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|TH||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:0\]|TH|TIMERx_CNT计数门限。向上计数从0计数到TH值后回0，或向下计数从TH计数到0后回到TH|

#### TIMER2_CNT TIMER2 计数寄存器

地址:0x4001_0814

复位值:0x0

表13-36
TIMER2计数寄存器TIMER2_CNT

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|
|CNT||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|CNT||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:0\]|CNT|TIMER2计数器当前计数值。写操作可以写入新的计数值。|

注意:写入TIMER2_CNT前需要先通过SYS_CLK_FEN.TIMER2_CLK_EN开启TIMER2时钟。

#### TIMER2_CMP0 TIMER2 通道0比较捕获寄存器

地址:0x4001_0818

复位值:0x0

表13-37
TIMER2通道0比较捕获寄存器TIMER2_CMP0

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|
|CMP0||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|CMP0||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:0\]|CMP0|Time通道0工作在比较模式时，当计数器计数值等于CMP0时，发生比较事件。TIMER通道0工作在捕获模式时，发生捕获事件时的计数器计数值存入CMP0寄存器。|

设置CMP0=0，可使得通道0恒为!CH0_POL，设置CMP0=TH+1，可使得通道0恒为CH0_POL。

#### TIMER2_CMP1 TIMER2 通道1比较捕获寄存器

地址:0x4001_081C

复位值:0x0

表13-38
TIMER2通道1比较捕获寄存器TIMER2_CMP1

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|
|CMP1||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|CMP1||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:0\]|CMP1|TIMER通道1工作在比较模式时，当计数器计数值等于CMP1时，发生比较事件。TIMER通道1工作在捕获模式时，发生捕获事件时的计数器计数值存入CMP1寄存器。|

设置CMP1=0，可使得通道恒为!CH1_POL，设置CMP1=TH+1，可使得通道恒为CH1_POL。

#### TIMER2_EVT TIMER2 外部事件选择寄存器

地址:0x4001_0820

复位值:0x0

表13-39
TIMER2外部事件选择寄存器TIMER2_EVT

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|||||||||EVT_TH||||EVT_SRC||||
|||||||||RW||||RW||||
|||||||||0||||0||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:8\]||未使用|
|\[7:4\]|EVT_TH|外部事件发生次数阈值，配合TIMERx_CFG.RL_EN使用。外部事件发生EVT_TH次后产生效果（当EVT_TH=0时，1次即生效）。可配置的外部事件发生次数阈值范围是0~15。特别地，当设置TIMERx_CFG.CMP1TMIN=1，且TIMERx_CNT\<TIMERx_CMP1时，即使此前发生的外部事件已达到EVT_TH设定次数，TIMERx_CNT重置也会延迟生效，即TIMERx_CNT会继续计数到TIMERx_CMP1后归零。此时TIMERx_CMP1作为重置最小计数值TMIN使用。EVT_TH在一个TIMER周期后自动清零，即一个TIMER周期的外部事件不累积至下一个周期。|
|\[3:0\]|EVT_SRC|TIMER外部事件选择寄存器，本寄存器需要配合TIMER2_CFG.ETON，TIMER2_CFG.GATE_EN，TIMER2_CFG.RL_EN，TIMER2_CFG.XCLK_EN使用。通常4个设置位不同时使用。当设置ETON=1时，根据本寄存器选择触发TIMER计数的事件。需要注意的是，TIMER自身的比较事件无法触发TIMER进行计数。当ETON=1时，触发信号的上升沿触发TIMER开始计数，用作触发源的TIMER需要工作在比较模式，无须从外部输入信号至TIMER通道0:TIMER0 通道0比较/捕获事件1:TIMER0 通道1比较/捕获事件2:TIMER1 通道0比较/捕获事件3:TIMER1 通道1比较/捕获事件4:不可用5:不可用6:不可用7:不可用8:CLU0输出上升沿9:CLU1输出上升沿10:CLU2输出上升沿11:CLU3输出上升沿12:MCPWM TADC\[0\]比较事件13:MCPWM TADC\[1\]比较事件14:MCPWM TADC\[2\]比较事件15:MCPWM TADC\[3\]比较事件当GATE_EN=1，且外部信号为高时TIMER计数，外部信号为低时，TIMER暂停，当GATE_EN=1时，TIMER使用对应外部信号的电平信号作为计数门控。GATE_EN仅支持配合0~11的外部事件使用，当EVT_SRC选择为0~7时，外部信号为TIMER通道输入信号经过对应TIMER滤波后的信号，作为门控信号的TIMER通道需要配置为输入使能0:TIMER0 通道0滤波后输入信号1:TIMER0 通道1滤波后输入信号2:TIMER1 通道0滤波后输入信号3:TIMER1 通道1滤波后输入信号4:TIMER2 通道0滤波后输入信号5:TIMER2 通道1滤波后输入信号6:不可用7:不可用8:CLU0输出信号9:CLU1输出信号10:CLU2输出信号11:CLU3输出信号当RL_EN为高时，TIMER使用外部信号作为重装载信号作为重装载信号的TIMER通道需要配置为输入使能0:TIMER0 通道0比较/捕获事件1:TIMER0 通道1比较/捕获事件2:TIMER1 通道0比较/捕获事件3:TIMER1 通道1比较/捕获事件4:TIMER2 通道0比较/捕获事件5:TIMER2 通道1比较/捕获事件6:不可用7:不可用8:CLU0输出9:CLU1输出10:CLU2输出11:CLU3输出12:MCPWM TADC\[0\]比较事件13:MCPWM TADC\[1\]比较事件14:MCPWM TADC\[2\]比较事件15:MCPWM TADC\[3\]比较事件当XCLK_EN为高时，TIMER使用外部信号作为TIMER外部时钟，TIMER在时钟上升沿进行计数动作。如果使用TIMER通道作为外部时钟，通道信号受到对应TIMER滤波设置影响。0:TIMER0 通道0输入信号1:TIMER0 通道1输入信号2:TIMER1 通道0输入信号3:TIMER1 通道1输入信号4:TIMER2 通道0输入信号5:TIMER2 通道1输入信号6:不可用7:不可用8:CLU0输出9:CLU1输出10:CLU2输出11:CLU3输出12:MCPWM TADC\[0\]比较事件13:MCPWM TADC\[1\]比较事件14:MCPWM TADC\[2\]比较事件15:MCPWM TADC\[3\]比较事件|

#### TIMER2_FLT TIMER2 滤波控制寄存器

地址:0x4001_0824

复位值:0x0

表13-40
TIMER2滤波控制寄存器TIMER2_FLT

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|||||||||FLT||||||||
|||||||||RW||||||||
|||||||||0||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:8\]||未使用|
|\[7:0\]|FLT|通道0/1信号滤波宽度选择。取值范围0~255。FLT为0时，不对通道进行滤波。FLT不为0时，对通道信号进行滤波:滤波宽度为FLT×8。当通道信号电平稳定超过FLT×8个系统时钟周期宽度时，滤波器输出更新；否则，滤波器保持当前的输出不变。|

注意，以上滤波器的工作时钟与对应的TIMER的分频后的工作时钟为相同时钟，受TIMERx_CFG.CLK_DIV的分频系数控制。

假设TIMERx_FLT.FLT = 0x6；TIMERx_CFG.CLK_DIV = 0x2;
则TIMER的运行时钟相对系统时钟进行了4分频。通道输入信号需要经过8×6倍TIMER的运行时钟的滤波，亦即8×6×4倍系统时钟的滤波。

#### TIMER2_IE TIMER2 中断使能寄存器

地址:0x4001_0828

复位值:0x0

表13-41
TIMER2中断使能寄存器TIMER2_IE

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
||||||ZC_RE|CH1_RE|CH0_RE||||||ZC_IE|CH1_IE|CH0_IE|
||||||RW|RW|RW||||||RW|RW|RW|
||||||0|0|0||||||0|0|0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:11\]||未使用|
|\[10\]|ZC_RE|TIMER CNT过0 DMA请求使能，高电平有效。|
|\[9\]|CH1_RE|TIMER通道1比较/捕获 DMA请求使能，高电平有效。|
|\[8\]|CH0_RE|TIMER通道0比较/捕获 DMA请求使能，高电平有效。|
|\[7:3\]||未使用|
|\[2\]|ZC_IE|TIMER CNT过0中断使能，高电平有效。|
|\[1\]|CH1_IE|TIMER通道1比较/捕获中断使能，高电平有效。|
|\[0\]|CH0_IE|TIMER通道0比较/捕获中断使能，高电平有效。|

DMA请求事件，与中断为相同事件标志，DMA请求被DMA受理后，中断标志会被DMA硬件自动清除，无需CPU软件干预。需要注意的是，通常开启某个事件的DMA请求则关闭对应的中断使能。

#### TIMER2_IF TIMER2 中断标志寄存器

地址:0x4001_082C

复位值:0x0

表13-42
TIMER2中断标志寄存器TIMER2_IF

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
||||||||||||||ZC_IF|CH1_IF|CH0_IF|
||||||||||||||RW1C|RW1C|RW1C|
||||||||||||||0|0|0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:3\]||未使用|
|\[2\]|ZC_IF|TIMER CNT过0中断标志。高电平有效，写1清0|
|\[1\]|CH1_IF|TIMER通道1比较/捕获中断标志。高电平有效，写1清0|
|\[0\]|CH0_IF|TIMER通道0比较/捕获中断标志。高电平有效，写1清0|

当发生特定事件时，即使中断使能位IE=0，对应的IF仍会置位，但不会向处理器提起中断服务请求。

在比较模式下，当TIMER设置为中心计数（0-\>TH-\>0），即TIMERx_CFG.CENTER=1时。CH0_IF和CH1_IF只有在TIMER从0递增计数至TH的过程中，当TIMERx_CNT=TIMERx_CMP0/1时置位；在TIMER从TH递减计数到0的过程中不会置位。

中断标志写1清零，一般不建议用如下\|=方式清零，因为\|=是先读取中断标志，将对应位改为1再写入清零，如果同时有其他中断标志置位，会被一起清零，而这通常不是软件所期望的。例如，如下写法本意是清零ZC_IF，但如果同时CH0_IF在写入执行前置1了，则软件先读取回TIMERx_IF值为0x24，然后执行或操作0x4\|0x1=0x5，然后写入，同时对CH0_IF和ZC_IF进行了清零，可能导致TIMER少进入一次因捕获而产生的中断。

*TIMERx_IF\|=0x4;*

如果希望清零T0_ZC_IF标志位，应以如下方式，直接对BIT2写1.

*TIMERx_IF=0x4;*

TIMER0_IO寄存器无法在CPU
HALT的时候进行配置，因此需要保证TIMER0_IO寄存器在CPU HALT前就完成配置。

### QEP0寄存器

表13-43
QEP0寄存器地址分配

||||
|---|---|---|
|Name|Offset|Description|
|QEP0_CFG|0x00|QEP0 Configuration Register|
|QEP0_TH|0x04|QEP0 Count Threshold Register|
|QEP0_CNT|0x08|QEP0 Count Value Register|
|QEP0_IE|0x0C|QEP0 Interrupt Enable Register|
|QEP0_IF|0x10|QEP0 Interrupt Flag Register|

#### QEP0_CFG QEP0 配置寄存器

QEP0_CFG地址:0x4001_0A00

复位值:0x0

表13-44
QEP0配置寄存器QEP0_CFG

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|
|||||||||FLT||||||||
|||||||||RW||||||||
|||||||||0||||||||
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|EN|||||FE_CNT_EN|MODE||||||ZNC|ZPC|ZLC|ZEC|
|RW|||||RW|RW||||||RW|RW|RW|RW|
|0|||||0|0||||||0|0|0|0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:24\]||未使用|
|\[23:16\]|FLT|编码器的滤波系数编码器滤波宽度选择。取值范围0~15。FLT为0时，不对通道进行滤波。FLT不为0时，对通道信号进行滤波:滤波宽度为FLT×8。当通道信号电平稳定超过FLT×8个系统时钟周期宽度时，滤波器输出更新；否则，滤波器保持当前的输出不变。|
|\[15\]|EN|QEP模块整体使能|
|\[14:11\]||未使用|
|\[10\]|FE_CNT_EN|CCW+SIGN/CCW+CW两种模式下，是否在下降沿进行计数（上升沿总是计数）|
|\[9:8\]|MODE|编码器模式选择00:counting on T1，01:counting on T1 & T2以上两种模式都为正交编码信号计数模式10:CCW+SIGN，符号加脉冲信号计数模式11:CCW+CW，CCW+CW双脉冲信号计数模式|
|\[7:4\]||未使用|
|\[3\]|ZNC|Z信号清零极性选择:低电平/下降沿清零使能|
|\[2\]|ZPC|Z信号清零极性选择:高电平/上升沿清零使能|
|\[1\]|ZLC|Z信号电平清零QEP计数器使能|
|\[0\]|ZEC|Z信号边沿清零QEP计数器使能|

当ZEC=1时，使用Z信号的跳变沿进行QEP计数的清零，当ZNC同时为1时，Z信号的下降沿清零QEP计数器，当ZPC同时为1时，Z信号的上升沿清零QEP计数器；ZNC和ZPC可以同时为1，则Z信号发生变化则清零QEP计数器，清零后立即释放复位，QEP计数器立即准备好进行后续计数。

当ZLC=1时，使用Z信号的有效电平进行QEP计数的清零，当ZNC同时为1时，Z信号低电平时清零QEP计数器，当ZPC同时为1时，Z信号高电平清零QEP计数器；通常使用Z信号有效电平清零QEP计数器时，ZNC和ZPC不会同时为1，否则计数器一直处于清零状态。使用有效电平清零时，只有Z信号翻转后，QEP计数器才会恢复计数。

#### QEP0_TH QEP0 计数门限寄存器

QEP0_TH地址:0x4001_0A04

复位值:0x0

表13-45
QEP0计数门限寄存器QEP0_TH

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|TH||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:16\]||未使用|
|\[15:0\]|TH|计数门限TH。编码器向上计数（增）到TH值后，再次向上计数会导致计数器回到0。编码器向下计数（减）到0值后，再次向下计数会导致计数器回到TH。|

#### QEP0_CNT QEP0 计数值寄存器

QEP0_CNT地址:0x4001_0A08

复位值:0x0

表13-46
QEP0计数值寄存器QEP0_CNT

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|CNT||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:16\]||未使用|
|\[15:0\]|CNT|QEP0计数值。|

#### QEP0_IE QEP0 中断使能寄存器

地址:0x4001_0A0C

复位值:0x0

表13-47
QEP0中断使能寄存器QEP0_IE

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|||||||||||||||OF_IE|UF_IE|
|||||||||||||||RW|RW|
|||||||||||||||0|0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:2\]||未使用|
|\[1\]|OF_IE|上溢出中断使能，高电平有效。|
|\[0\]|UF_IE|下溢出中断使能，高电平有效。|

#### QEP0_IF QEP0 中断标志寄存器

地址:0x4001_0A10

复位值:0x0

表13-48
QEP0中断标志寄存器QEP0_IF

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|||||||||||||||OF_IF|UF_IF|
|||||||||||||||RW1C|RW1C|
|||||||||||||||0|0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:2\]||未使用|
|\[1\]|OF_IF|上溢出中断标志。高电平有效，写1清0。当计数器计数达到计数门限时，上计数事件触发上溢出中断。|
|\[0\]|UF_IF|下溢出中断标志。高电平有效，写1清0。当计数器计数达到0时，下计数事件触发下溢出中断。|

