9. 基础定时器 (BTIMER)
9.1. 概述
基础计数器模块,SWM221系列所有型号BTIMER操作均相同,不同型号BTIMER数量可能不同。使用前需使能BTIMER模块时钟。
每个BTIMER模块均具备定时器功能,并具备一个8位分频器,每个定时器具备独立中断源。
9.2. 特性
4路24位通用定时器
每路均具备独立8位预分频
独立中断源
PWM输出功能
9.3. 功能描述
9.3.1. 模块结构
图 16 BTIMER模块结构框图
9.3.2. 定时器
使用流程如下:
通过预分频寄存器(PREDIVx)设置预分频目标值(8位),对系统时钟进行分频。
通过装载值寄存器(LOADx)设置计数目标值(24位)。
通过中断使能寄存器(IEx)配置中断使能。
通过使能寄存器(EN)进行对应BTIMERx使能。
对应BTIMERx开始递减计数,计数到0时,产生中断,同时重新从装载值寄存器(LOADx)装载计数值,进行下一周期计数。
中断通过中断状态寄存器(IFx)进行查询(IEx使能情况下),同时对该寄存器进行写1操作清除中断
在计数过程中,可通过对当前值寄存器(VALUEx)进行读取,获取当前计数值。
定时器计数过程中改变装载值寄存器(LOADx)值,同时向装载位(RELOAD)写1,BTIMER将立刻重新装载改变值并计数(RELAOD位硬件自动清0),当前计数周期被中断。若不对装载位(RELOAD)进行操作,则改变值将在下个计数周期(计数到0重新装载)生效,不会改变本周期计数值。
图 17 定时器工作示意图
图 18 定时器RELOAD工作示意图
9.3.3. 脉冲发送
所有TIMER模块均支持脉冲发送功能,可发送指定脉宽的方波。该计数器为向下计数。使用方式如下:
针对外部信号输入引脚进行如下操作
配置PORTCON模块中使能引脚输出功能
通过PORTX_FUNC寄存器将引脚切换为TIMER对应数字功能
TIMER初始化
指定要被设置的定时器
设置TIMER的工作模式为OC(输出比较)模式
设置定时周期
输出比较功能初始化
指定要被设置的定时器
设置当计数器的值递减到MATCH时引脚输出电平翻转
设置初始输出电平
启动定时器
每次周期结束时,会更新翻转电平配置
示意图如 图 19 所示:
图 19 脉冲发送示意图
9.3.4. 中断配置与清除
每路TIMER均具备独立中断,通过中断使能寄存器IE进行各TIMER中断使能。通过中断状态寄存器IF进行中断查询及清除。
可通过配置中断使能寄存器IEx使能中断。当TIMER计数到0时,中断标志寄存器IFx置1。如需清除此标志,需在标志位中写1清零(R/W1C),否则中断在开启状态下会一直进入。
9.4. 寄存器映射
名称 |
偏移 |
复位值 |
---|---|---|
BTIMER0 BASE:0x40044000 BTIMER1 BASE:0x40044040 BTIMER2 BASE:0x40044080 BTIMER3 BASE:0x400440C0 |
||
LOAD |
0x00 |
0x00000000 |
VALUE |
0x04 |
0x00FFFFFF |
CR |
0x08 |
0x00000000 |
IE |
0x10 |
0x00000000 |
IF |
0x14 |
0x00000000 |
OCCR |
0x1C |
0x00000000 |
OCMAT |
0x20 |
0x00000000 |
PREDIV |
0x30 |
0x00000000 |
EN |
0x440 |
0x00000000 |
9.5. 寄存器描述
9.5.1. LOAD寄存器
偏移: 0x00 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
LOAD |
|||||||
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
DATA |
|||||||
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
DATA |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
DATA |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:24 |
RO |
||
24 |
LOAD |
W |
写1将bit 23:0和LDVALDx立即load到CNT中。自动清0 |
23:0 |
DATA |
R/W |
定时器x计数高24位的初值。 |
9.5.2. VALUE寄存器
偏移: 0x04 |
复位值: 0x00FFFFFF |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
CNT |
|||||||
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
CNT |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
CNT |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:24 |
RO |
||
23:0 |
CNT |
RO |
定时器x当前值高24位。 |
9.5.3. 控制寄存器CTRL
偏移: 0x08 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
MODE |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:4 |
RO |
||
3:2 |
MODE |
R/W |
定时器工作模式。 00:普通定时器模式 10:输出PWM模式(仅当PONO>x时才可以配置为这个值) |
1:0 |
RO |
9.5.4. IE寄存器
偏移: 0x10 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
TOINTMSK |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:1 |
RO |
保留位 |
|
0 |
TOINTMSK |
R/W |
计数器溢出中断屏蔽 0:屏蔽 1:不屏蔽 |
9.5.5. IF寄存器
偏移: 0x14 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
TOINTST |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:1 |
RO |
保留位 |
|
0 |
TOINTST |
R/W |
计数器溢出中断状态 1:中断发生 0:中断未发生 |
9.5.6. OCCR寄存器
偏移: 0x1C |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
POMSK |
POINITVAL |
POMSKVAL |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:3 |
RO |
||
2 |
FORCEEN |
R/W |
Force Level,强制输出使能 |
1 |
INITLVL |
R/W |
Initial Level,初始输出电平 |
0 |
FORCELVL |
R/W |
Force Level,强制输出电平 |
9.5.7. OCMAT控制寄存器
偏移: 0x20 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
OCMAT |
|||||||
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
OCMAT |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
OCMAT |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:24 |
RO |
||
23:0 |
OCMAT |
R/W |
PWM输出高电平宽度。 OCMAT = 0,占空比为 0;当 OCMAT > LOAD 时,占空比为 100%; |
9.5.8. PREDIV寄存器
偏移: 0x30 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
PRIDIV |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:8 |
RO |
||
7:0 |
PRIDIV |
R/W |
计数器预分频值 |
9.5.9. EN寄存器
偏移: 0x440 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
BTIMER3_EN |
BTIMER2_EN |
BTIMER1_EN |
BTIMER0_EN |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31: 4 |
RO |
RESERVED |
|
3 |
BTIMER3_EN |
R/W |
定时器timer2使能。 |
2 |
BTIMER2_EN |
R/W |
定时器timer2使能。 |
1 |
BTIMER1_EN |
R/W |
定时器timer1使能。 |
0 |
BTIMER0_EN |
R/W |
定时器timer0使能。 |