9. 基础定时器 (BTIMER)

9.1. 概述

基础计数器模块,SWM221系列所有型号BTIMER操作均相同,不同型号BTIMER数量可能不同。使用前需使能BTIMER模块时钟。

每个BTIMER模块均具备定时器功能,并具备一个8位分频器,每个定时器具备独立中断源。

9.2. 特性

  • 4路24位通用定时器

  • 每路均具备独立8位预分频

  • 独立中断源

  • PWM输出功能

9.3. 功能描述

9.3.1. 模块结构

../../_images/BTIMER%E6%A8%A1%E5%9D%97%E7%BB%93%E6%9E%84%E5%9B%BE.svg

图 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 所示。

../../_images/%E5%AE%9A%E6%97%B6%E5%99%A8%E5%B7%A5%E4%BD%9C%E7%A4%BA%E6%84%8F%E5%9B%BE.svg

图 17 定时器工作示意图

../../_images/%E5%AE%9A%E6%97%B6%E5%99%A8RELOAD%E5%B7%A5%E4%BD%9C%E7%A4%BA%E6%84%8F%E5%9B%BE.svg

图 18 定时器RELOAD工作示意图

9.3.3. 脉冲发送

所有TIMER模块均支持脉冲发送功能,可发送指定脉宽的方波。该计数器为向下计数。使用方式如下:

  • 针对外部信号输入引脚进行如下操作

    • 配置PORTCON模块中使能引脚输出功能

    • 通过PORTX_FUNC寄存器将引脚切换为TIMER对应数字功能

  • TIMER初始化

    • 指定要被设置的定时器

    • 设置TIMER的工作模式为OC(输出比较)模式

    • 设置定时周期

    • 输出比较功能初始化

    • 指定要被设置的定时器

    • 设置当计数器的值递减到MATCH时引脚输出电平翻转

    • 设置初始输出电平

  • 启动定时器

  • 每次周期结束时,会更新翻转电平配置

示意图如 图 19 所示:

../../_images/%E8%84%89%E5%86%B2%E5%8F%91%E9%80%81%E7%A4%BA%E6%84%8F%E5%9B%BE.svg

图 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使能。