【经验分享】STM32 通用定时器(TIM2到TIM5)

01. 通用定时器简介

: D! N. I" f2 X- `0 ~7 F0 V通用定时器包含一个 16 位或 32 位自动重载计数器,该计数器由可编程预分频器驱动。

, h( j. e, i( v9 [, W, b

. g& K( D, |0 Q" ?1 f6 g6 @它们可用于多种用途,包括测量输入信号的脉冲宽度( 输入捕获 )或生成输出波形( 输出比较和 PWM)。

% Q$ S+ }4 f. b& u' Y+ E

! i) h/ _9 y& R2 c6 ^9 W+ b% p使用定时器预分频器和 RCC 时钟控制器预分频器,可将脉冲宽度和波形周期从几微秒调制到几毫秒。

" |5 `7 f! K" }# Y' ?6 C' K( }) }5 t9 F/ {/ Q+ r" S+ s N

这些定时器彼此完全独立,不共享任何资源。

) {( _' B2 J/ K. O' d* i, q+ e# ~& g) V- Z' g" w; r

02. TIM2到TIM5主要特性, }( C4 b! [3 h: R3 o

通用 TIMx 定时器具有以下特性:

, C" E. O* I+ y8 t, t8 w. G3 [6 W● 16 位(TIM3 和 TIM4)或 32 位(TIM2 和 TIM5) 递增、递减和递增/递减自动重载计数器。

. l$ f- p, X: S3 X● 16 位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数介于 1 到 65536 之间。' W7 t0 x( N3 y& e

● 多达 4 个独立通道,可用于:

; v. f7 Y; J1 W# t# Z3 J— 输入捕获

! k. j: z, A- k4 a1 `" A- } E0 Q— 输出比较& i4 ?1 r3 |% P( p: a7 j

— PWM 生成(边沿和中心对齐模式), T+ U6 ]( E; p) { @( H0 B& v! D

— 单脉冲模式输出

5 x1 R- E/ i* [( Y% X7 ?& _6 S+ |● 使用外部信号控制定时器且可实现多个定时器互连的同步电路。

x! ]& h ]* F) v; M4 d, [* p* E+ ~● 发生如下事件时生成中断/DMA 请求:

( q: }8 v# _) z1 J7 \— 更新:计数器上溢/下溢、计数器初始化(通过软件或内部/外部触发)

- |; Z4 B3 ?: b0 u— 触发事件(计数器启动、停止、初始化或通过内部/外部触发计数)" r( i& U& H) i" [

— 输入捕获

0 c# s; S( G ^* A) |— 输出比较& h* ]( B3 G1 e

● 支持定位用增量(正交)编码器和霍尔传感器电路

0 Q4 E5 J `9 f; {: s( a8 K● 外部时钟触发输入或逐周期电流管理

0 {1 h( D* O) P M8 u0 {. n1 `( c

$ B1 X4 h2 s, `2 B03. TIM2到TIM5功能说明 x! S4 F6 B" B$ K5 C* }

时基单元6 Y: s& H" T5 U/ P5 ?

5 V7 U9 {) w, |7 c8 A# y

可编程定时器的主要模块由一个 16 位/32 位计数器及其相关的自动重装寄存器组成。此计数器可采用递增方式计数。计数器的时钟可通过预分频器进行分频。- {& o+ }$ R. O0 s1 g0 I

9 I! p6 Y. @( r$ P, V

计数器、自动重载寄存器和预分频器寄存器可通过软件进行读写。即使在计数器运行时也可执行读写操作。

D/ o7 @0 x- L6 ]- J+ n0 x% [+ Z' A5 h8 o# R, e

时基单元包括:8 r9 M- V6 h6 J

7 k0 S$ Z0 A ?! a' y S● 计数器寄存器 (TIMx_CNT)9 d! w Z2 L. [- _7 w' V! h

0 _( ]( }( @( a1 `" n● 预分频器寄存器 (TIMx_PSC)

* b5 ?1 e/ p$ x& I

7 G- L: B9 D* ~, U" p8 V6 g& ?● 自动重载寄存器 (TIMx_ARR)

8 @. v8 C4 d; e3 Z- m# k4 G% r7 m5 ^, Z& p( e

自动重载寄存器是预装载的。对自动重载寄存器执行写入或读取操作时会访问预装载寄存器。预装载寄存器的内容既可以直接传送到影子寄存器,也可以在每次发生更新事件 (UEV)时传送到影子寄存器,这取决于 TIMx_CR1 寄存器中的自动重载预装载使能位 (ARPE)。当计数器达到上溢值(或者在递减计数时达到下溢值)并且 TIMx_CR1 寄存器中的 UDIS 位为0 时,将发送更新事件。该更新事件也可由软件产生。下文将针对各配置的更新事件的产生进行详细介绍。

- d8 @7 {! z( M9 V" r* a5 W) A) j! e! T1 X% T

计数器由预分频器输出 CK_CNT 提供时钟,仅当 TIMx_CR1 寄存器中的计数器启动位 (CEN)置 1 时,才会启动计数器(有关计数器使能的更多详细信息,另请参见从模式控制器的相关说明)。7 ~* p7 U+ ?! c- @; Z# X

9 B7 N i h7 A, I

请注意,真正的计数器使能信号 CNT_EN 在 CEN 置 1 的一个时钟周期后被置 1。

+ @9 H3 o* K$ f3 P+ n4 p! r0 Z' o

( P! n6 ^8 Y" E; F预分频器说明

+ v4 b6 Y2 U+ ~3 p3 \1 p! H$ l6 E; K- n, e

预分频器可对计数器时钟频率进行分频,分频系数介于 1 到 65536 之间。该预分频器基于16 位/32 位寄存器(TIMx_PSC 寄存器)所控

: I# Z8 n6 c6 q' C3 ~5 M1 L' a$ Y' z) X3 P

制的 16 位计数器。由于该控制寄存器具有缓冲功能,因此预分频器可实现实时更改。而新的预分频比将在下一更新事件发生时被采用。

E3 w* ]5 l. H" p+ X" t, S% d/ C V$ J

图 120 和 图 121 给出了在预分频比发生实时变化时一些计数器行为的示例:: W" \" J/ A3 @6 P2 y

0 V9 F A; h* s9 ?; y( p

预分频器分频由 1 变为 2 时的计数器时序图

7 l l0 N5 o; S7 P+ v4 o, O3 S! H2 B6 L+ x- _

D9UERZRZ%KDHEDW5W24EF.png (85.6 KB, 下载次数: 11)

下载附件

保存到相册

2022-3-29 12:08 上传

- L& z( J/ G- F" D" ^( N

! Y: e- b# h9 }' f5 s- ^预分频器分频由 1 变为 4 时的计数器时序图' O1 Q$ O3 ^. u3 E

, q* U i b' N

Z5DI)$JW]ZJ0)H6$J7(3XCK.png (82.62 KB, 下载次数: 11)

下载附件

保存到相册

2022-3-29 12:08 上传

) f, _: e# ]4 E. d) V/ T( }6 x# n. K# h2 B$ @( g) `9 d" w

计数器模式% }& K# T& \$ z: s2 {

- y) n- l& a; T

递增计数模式

4 \9 C1 `. u( J1 K1 l" G

9 e1 q2 e" O5 ^3 s7 A在递增计数模式下,计数器从 0 计数到自动重载值(TIMx_ARR 寄存器的内容),然后重新从 0 开始计数并生成计数器上溢事件。

$ w/ y* x2 C+ _9 W7 C" d6 D( H# p4 N

3 a' @8 h/ n9 v; I递减计数模式) o' G. R$ ]6 O/ K

2 V9 Y0 H7 e- Q& s0 y! o$ b在递减计数模式下,计数器从自动重载值(TIMx_ARR 寄存器的内容)开始递减计数到 0,然后重新从自动重载值开始计数并生成计数器7 ` U- w+ m2 H2 \1 i' H" K V

6 p4 E: \) C; H

下溢事件。6 @& w+ B# ] i: P

, K) J$ h7 u* H( p% @

中心对齐模式(递增/ 递减计数)

) ?8 f0 E p2 q

) `" d1 u5 z1 `6 v' Z6 O在中心对齐模式下,计数器从 0 开始计数到自动重载值(TIMx_ARR 寄存器的内容)— 1,生成计数器上溢事件;然后从自动重载值开始 P2 C3 W1 |1 K3 p* R! T: m; w: `; V/ D- X

( A" u) n8 o8 [' F1 v5 p/ i& j7 ?向下计数到 1 并生成计数器下溢事件。之后从0 开始重新计数。; z8 J/ V) X. G/ o

. _! H4 ]& ~- i# J: X. S# Y/ X

04. 时钟选择/ H4 k0 C; v7 T' x1 G* z

计数器时钟可由下列时钟源提供:

2 R% O8 s8 [2 a5 V6 a! ?

5 e& \. E( D/ g; B● 内部时钟 (CK_INT)8 b$ ?2 G4 Q- |) T' r+ ~

0 t% _# t: w5 M3 f9 h" r3 a% |. F: y

● 外部时钟模式 1:外部输入引脚 (TIx)

! F" ~4 D ?- B. x, ~- r; X: }6 a6 u: o9 s ?3 x1 \3 | {

● 外部时钟模式 2:外部触发输入 (ETR),仅适用于 TIM2、TIM3 和 TIM4。( {, e6 ?8 t# J

9 @# ~* e* ?8 Q x% m

● 内部触发输入 (ITRx):使用一个定时器作为另一个定时器的预分频器,例如可以将定时器配置为定时器 2 的预分频器。; \+ W/ D, z+ @7 o. U

2 A6 I, \1 F5 [$ [9 y& ?

05. 寄存器8 ?% d7 h! b0 Z2 R7 P

5.1 TIMx 控制寄存器 1 (TIMx_CR1)5 j- ~# S- O& }( b3 {( k0 u

TIMx control register 15 N/ E0 K3 G; S" H/ [

偏移地址:0x00- I. N* X8 }! E! ^1 \

复位值:0x0000

: H1 }/ B' |3 Z4 O* y

7 G2 X9 _" T& _4 W" w

20200825202940954.png (19.23 KB, 下载次数: 21)

下载附件

保存到相册

2022-3-29 12:08 上传

, `: s* V( Z8 v( }# F; G+ r

T, T1 K# |3 h+ V! ?: m! y1 {5.2 TIMx 控制寄存器 2 (TIMx_CR2)

/ W) h" ?: a' fTIMx control register 2

, M1 l4 F+ [! R" Y* r+ w偏移地址:0x041 @3 V; }/ T' H i! Q

复位值:0x0000- m# Y3 c- k/ H9 {6 b

9 L0 V1 k0 v, C, U4 m0 r

20200825202952731.png (14.81 KB, 下载次数: 20)

下载附件

保存到相册

2022-3-29 12:08 上传

6 v$ a/ A: _: K0 J5 _6 O# F

2 X% S; T! V/ S6 W5.3 TIMx 从模式控制寄存器 (TIMx_SMCR)

. R6 b" E* [: [3 d0 K; Q& tTIMx slave mode control register

5 }5 E7 ? }9 [偏移地址:0x08

: b. M' Q& h z/ F2 q. e复位值:0x0000

6 P0 ?1 F% ^* {9 M& H

- ?- b2 b9 o' B: h" C

20200825203001370.png (18.17 KB, 下载次数: 15)

下载附件

保存到相册

2022-3-29 12:08 上传

9 p' s5 V: K2 z' s% i0 V s# ~- ]9 f4 E' H7 V/ @: h

5.4 TIMx DMA/ 中断使能寄存器 (TIMx_DIER)( G1 i) ?9 {! o& F& s- |4 Y

TIMx DMA/Interrupt enable register' j) O, \2 a# N" u6 O

偏移地址:0x0C' I6 D! W ~1 z2 U

复位值:0x0000

% o# r! t- E {0 M% e. ?7 k* j. [. j% Q% ]8 l% }& S4 |

2020082520301336.png (18.76 KB, 下载次数: 13)

下载附件

保存到相册

2022-3-29 12:08 上传

; `7 E6 O J1 a( a0 i2 j) i. H6 u) p9 P

5.5 TIMx 状态寄存器 (TIMx_SR)' k# F( o2 ~, B0 b

TIMx status register% M3 I1 L# ]* @* a: Q8 K6 J1 M2 s, b- ~

偏移地址:0x10

8 Q$ b( g$ N' k: w7 s5 m) a- v e复位值:0x0000

. p6 S/ l: N& @) G" L) L. }; o- ^7 i6 t9 j

" ~ M' {$ m6 p/ Q+ w

20200825203021983.png (22.67 KB, 下载次数: 31)

下载附件

保存到相册

2022-3-29 12:08 上传

G2 Y0 @* j0 P( J3 T1 Z

9 h& q; D; D) {

5.6 TIMx 事件生成寄存器 (TIMx_EGR)/ |9 d- d8 _$ m( E4 N" r) F0 v5 U# Q- m

TIMx event generation register

, z+ N0 M3 ?8 Q0 s) E, _* N偏移地址:0x14

, W# k9 v6 A( ?% _5 z( ]. M3 v复位值:0x0000

/ {5 |5 {" E4 J1 L# f+ V8 H( C" O4 X) ^/ b; K

20200825203030607.png (16.87 KB, 下载次数: 23)

下载附件

保存到相册

2022-3-29 12:08 上传

8 x" I& V7 _3 D3 p; a

, r8 `, Y; g& @" U8 ]5.7 TIMx 捕获/ 比较模式寄存器 1 (TIMx_CCMR1)0 h* r6 E5 s. ]; ?" o5 a* D

TIMx capture/compare mode register 1

9 }! H ~5 I+ ?& x3 Z. V0 P% i/ P偏移地址:0x18

: r) x$ e- Q l/ X9 X3 a复位值:0x0000, H4 r3 w$ |5 Z K" w0 G7 I3 H! {/ H

, ]$ ^" h3 w- \- l9 o1 U1 A

20200825203039652.png (25.03 KB, 下载次数: 28)

下载附件

保存到相册

2022-3-29 12:08 上传

# A( m5 M9 f4 R2 D: W1 ]( ]) |8 n

4 [4 H: D( ]% M {

5.8 TIMx 捕获/ 比较模式寄存器 2 (TIMx_CCMR2)& }; G* }1 p8 I: R* d

TIMx capture/compare mode register 28 M" h( ?; ~, u7 R9 n8 _

偏移地址:0x1C

5 {, k, ] _! Y: c+ |, j复位值:0x00002 n5 \" {' ? L( @, m

0 S5 ]5 W* w3 w0 c# g

20200825203051185.png (26.89 KB, 下载次数: 39)

下载附件

保存到相册

2022-3-29 12:08 上传

4 P+ P9 T, B) B; a3 Z) H i2 J, ~% I

5.9 TIMx 捕获/ 比较使能寄存器 (TIMx_CCER)- s! l; K7 v1 S, i& n" }" u

TIMx capture/compare enable register f# }# @: Y5 N z

偏移地址:0x20. _2 J Z; M8 t4 Y: q- T% c! _

复位值:0x0000

1 ~( n4 V3 L0 q7 R( w" a

% }9 ^' `# ~" c" U! u

20200825203102283.png (19.29 KB, 下载次数: 21)

下载附件

保存到相册

2022-3-29 12:08 上传

- T) M: F& }+ t0 K+ b$ @6 ]) _. k& K! A8 B( \

5.10 TIMx 计数器 (TIMx_CNT)

, w8 c8 {% r) d! ?$ gTIMx counter

( @/ O! H6 i' p" u1 u$ W偏移地址:0x240 q7 ?3 |1 K- x& ]( z% Z) j+ S7 m& E8 z

复位值:0x0000

: K, ]& V d; e) ]* Y& G

- @. F! @5 i5 X) z) o" w2 e

20200825203111788.png (12.88 KB, 下载次数: 27)

下载附件

保存到相册

2022-3-29 12:08 上传

* o ^0 ?+ y7 k

( O$ \9 L2 V+ q. R D. x, F+ g( v5.11 TIMx 预分频器 (TIMx_PSC)3 H8 y3 x. ~1 |7 r# {+ Y

TIMx prescaler

( X" o! c4 P7 z1 @# u偏移地址:0x28

" |/ \7 z# j: L3 t0 X7 r- W! l复位值:0x0000

9 a# F) f+ n: ?8 C6 b' V0 ]* v5 d9 `6 }1 A* U

20200825203122418.png (12.79 KB, 下载次数: 24)

下载附件

保存到相册

2022-3-29 12:08 上传

) x/ X* R- O$ r4 }/ f$ o) v" ?, I

9 A$ F' _7 Z7 z! `' N# K) W, N5.12 TIMx 自动重载寄存器 (TIMx_ARR)

* S) u$ _" s' N8 S* ^% QTIMx auto-reload register, H5 @( `' N! s3 b! ?' O

偏移地址:0x2C" W" m' r$ K" c5 }9 D0 ]. \

复位值:0x0000

6 t* S2 F5 d3 M, T

2020082520313019.png (11.98 KB, 下载次数: 25)

下载附件

保存到相册

2022-3-29 12:08 上传

$ w+ W/ z) O. H( `) [

( }9 d k9 Z4 j5.13 TIMx 捕获/ 比较寄存器 1 (TIMx_CCR1)4 L- M- d8 C+ o! B: c

TIMx capture/compare register 15 q6 ] F0 Z5 G$ e8 z/ p8 p

偏移地址:0x348 s+ q* ]' z* `" x* P

复位值:0x0000 0008 g4 B _. t* ^7 b2 O5 h: W

5 J1 k, C* h& T# O! w/ ~; I3 [9 S5.14 TIMx 捕获/ 比较寄存器 2 (TIMx_CCR2), b% ]$ o4 Y2 Y' @- y% Z: B

TIMx capture/compare register 2

+ c% ~ H( g) \* E8 D6 B偏移地址:0x38+ i/ `0 w) [6 i7 U

复位值:0x0000 0000

8 s) K3 U9 Y/ O5 \. V8 m7 w4 |2 t; ?# e! i j5 ~' ~/ X! Q

20200825203142677.png (31.79 KB, 下载次数: 23)

下载附件

保存到相册

2022-3-29 12:08 上传

( Q, Z( V! {! ^0 u+ U8 `+ t

2 s( `- k- C5 b& O' x6 ]) R5.15 TIMx 捕获/ 比较寄存器 3 (TIMx_CCR3)& q/ ]2 E. c( o& B

TIMx capture/compare register 3

8 f& T' [2 h( X ?$ v! _2 Z* a4 E+ J) m偏移地址:0x3C; G8 e" h' s7 C+ |& M

复位值:0x0000 0000

5 Q. A/ J7 P6 e) n0 |" ]. t* z" |$ W

u! s7 I' G! A: o7 ]. I

20200825203158191.png (32.18 KB, 下载次数: 17)

下载附件

保存到相册

2022-3-29 12:08 上传

$ E) P7 z f/ H( P9 z! V

) A) r# Q6 r" }& p3 N9 ?

5.16 TIMx 捕获/ 比较寄存器 4 (TIMx_CCR4)/ U6 n4 _: q$ T: E; N

TIMx capture/compare register 4 |# ^3 r" Z+ b' E

偏移地址:0x40# i1 g, h8 f0 y) i! T

复位值:0x0000 0000+ `1 L4 I! o7 ~- p/ t$ i8 D

# Y! N4 N9 s/ H+ k

20200825203209253.png (26.68 KB, 下载次数: 29)

下载附件

保存到相册

2022-3-29 12:08 上传

4 y3 |" B. y( P8 B! Z

* o; m0 k% W1 Q) e* J5.17 TIMx DMA 控制寄存器 (TIMx_DCR)

- A+ B7 r1 m# i7 n. BTIMx DMA control register

+ R) h) k( J3 `偏移地址:0x48

! y9 J4 T' p/ J% i复位值:0x0000

~; K; R |+ {' G- [/ C; g& y. b2 }' E; o

20200825203219175.png (14.63 KB, 下载次数: 30)

下载附件

保存到相册

2022-3-29 12:08 上传

% J! Y+ n5 `2 x6 _6 m9 G+ f1 K' e4 ~0 z& Z/ } x0 Y7 s! H

5.18 TIMx 全传输 DMA 地址 (TIMx_DMAR)& F& M6 \1 f7 k, O0 v

TIMx DMA address for full transfer: n# B$ n4 }6 S2 o/ h5 {

偏移地址:0x4C3 Q! {/ `( z) T/ `" w

复位值:0x0000

3 v8 }- f2 p/ a- t @0 K+ d0 j+ {2 J2 b% S- B. W

20200825203227355.png (13.14 KB, 下载次数: 14)

下载附件

保存到相册

2022-3-29 12:08 上传

6 \0 L5 U D* z- z' }; D

6 ~6 x; E1 A& {6 m- _

5.19 TIM2 选项寄存器 (TIM2_OR)0 U/ G1 I1 U% d3 }3 q7 O

TIM2 option register

$ T9 [2 ^. m; S1 s偏移地址:0x50

; o7 F( g/ T( m' w3 n复位值:0x00006 {0 R" ^/ J* _$ Q

& V0 F# R0 a _! e" [% u! S

20200825203239310.png (12.42 KB, 下载次数: 23)

下载附件

保存到相册

2022-3-29 12:08 上传

) s) X5 f: ]+ S! e0 B' u3 _0 S0 ~6 F$ b& e# B( a) u! z [

5.20 TIM5 选项寄存器 (TIM5_OR)* [8 t& R( j) `6 Q* l

TIM5 option register

0 }" I. c4 J6 n) K% u5 J# Q. Q6 d偏移地址:0x50

' S. j4 I/ O9 A' Z6 q复位值:0x00007 X! O( Z8 j B2 n

/ {2 `' V, d+ [# A! f; O" \3 `

20200825203246817.png (12.41 KB, 下载次数: 20)

下载附件

保存到相册

2022-3-29 12:08 上传

. o4 Q! S9 E) j" \; K

/ F3 m% T" t& H3 J2 v3 ^

- S; |* q: `+ h" i# m

- z W6 h0 [" P8 O7 G% P/ _0 \

& G: W) t( R0 T2 V, A