你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
STMCU小助手 发布时间:2022-3-31 12:00
01. 通用定时器简介
$ v" @; ?$ W' O9 @8 l通用定时器包含一个 16 位或 32 位自动重载计数器,该计数器由可编程预分频器驱动。/ W6 x+ L" A* \) F0 k$ ]7 G
& o8 |5 I* G* A" X- F
它们可用于多种用途,包括测量输入信号的脉冲宽度( 输入捕获 )或生成输出波形( 输出比较和 PWM)。
2 F+ l/ Z8 \1 y6 r' v
! Z1 u2 ~5 ]/ ?. J$ A使用定时器预分频器和 RCC 时钟控制器预分频器,可将脉冲宽度和波形周期从几微秒调制到几毫秒。, w0 d. k3 w- {( J0 O7 O- w
4 A+ U- `* t5 }* Y5 g) v: O
这些定时器彼此完全独立,不共享任何资源。5 i( Y3 d5 x1 J

: W) j* Y. x! ^3 p( [# [: U02. TIM2到TIM5主要特性
, N$ C  Y# a5 A0 `, r通用 TIMx 定时器具有以下特性:
7 S- j* a$ s. n0 q, \+ S1 _● 16 位(TIM3 和 TIM4)或 32 位(TIM2 和 TIM5) 递增、递减和递增/递减自动重载计数器。
- s* c0 B6 M6 O2 r, o● 16 位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数介于 1 到 65536 之间。, O. e, ~" M5 s! [1 ~
● 多达 4 个独立通道,可用于:6 q! s9 @0 [! w$ q0 g/ G7 J
— 输入捕获: D* i: d8 x4 C/ N- m$ P; F/ \( Y
— 输出比较$ D- y' z4 O/ k
— PWM 生成(边沿和中心对齐模式)
: r- h6 {" N- z' S7 H2 |— 单脉冲模式输出
" i! H/ j; I0 G5 F● 使用外部信号控制定时器且可实现多个定时器互连的同步电路。
; R- c( t: t1 z  C6 Y9 u9 }2 Q0 }! |● 发生如下事件时生成中断/DMA 请求:
3 b& o2 U( ]; n9 l. n! y% k— 更新:计数器上溢/下溢、计数器初始化(通过软件或内部/外部触发). Q! }/ }8 E. `/ O) ~$ C
— 触发事件(计数器启动、停止、初始化或通过内部/外部触发计数); h) v$ C0 r' r+ Z$ n
— 输入捕获
1 }, ~& o! e: w" A+ S! }  G— 输出比较
% t5 _9 [+ A* \$ {9 W0 H● 支持定位用增量(正交)编码器和霍尔传感器电路3 i$ [% B2 b( h2 i; a  |3 t
● 外部时钟触发输入或逐周期电流管理
8 \  }4 o' C$ V6 U6 `$ b9 X6 t5 j4 P( h- Z
03. TIM2到TIM5功能说明
( g$ }( J; v. Q9 |8 {时基单元2 x' o8 _% V: a6 @" R! E( _$ v

* B# ^$ G! g) k: m6 X( b可编程定时器的主要模块由一个 16 位/32 位计数器及其相关的自动重装寄存器组成。此计数器可采用递增方式计数。计数器的时钟可通过预分频器进行分频。) j! x( F& i; K
& l5 s2 i: x( Z; {
计数器、自动重载寄存器和预分频器寄存器可通过软件进行读写。即使在计数器运行时也可执行读写操作。
3 K0 X  E$ N. i4 I9 @# n( Z! ?8 k6 V+ n6 i, ^, f8 ?' w3 }
时基单元包括:; |. [1 q8 p: B

& w( ?( n+ x2 y; O% K● 计数器寄存器 (TIMx_CNT)
5 F8 [; {: }9 @8 W, w1 k: ]! k1 k* P2 q5 w) M! Q
● 预分频器寄存器 (TIMx_PSC)
( H$ b. }+ A3 r, L0 g: _1 r, w" p  r' K" e. o
● 自动重载寄存器 (TIMx_ARR)# B5 {1 ^- m  D
/ s1 H. I8 }5 {. U7 x1 R1 [) d
自动重载寄存器是预装载的。对自动重载寄存器执行写入或读取操作时会访问预装载寄存器。预装载寄存器的内容既可以直接传送到影子寄存器,也可以在每次发生更新事件 (UEV)时传送到影子寄存器,这取决于 TIMx_CR1 寄存器中的自动重载预装载使能位 (ARPE)。当计数器达到上溢值(或者在递减计数时达到下溢值)并且 TIMx_CR1 寄存器中的 UDIS 位为0 时,将发送更新事件。该更新事件也可由软件产生。下文将针对各配置的更新事件的产生进行详细介绍。' s* }& M2 q4 n2 U5 ^. o

/ a# @2 \9 m6 z计数器由预分频器输出 CK_CNT 提供时钟,仅当 TIMx_CR1 寄存器中的计数器启动位 (CEN)置 1 时,才会启动计数器(有关计数器使能的更多详细信息,另请参见从模式控制器的相关说明)。
8 O, D# Q5 b% ^3 h; K
; V' v9 x# s* X' z" c6 r- x* d: w, T请注意,真正的计数器使能信号 CNT_EN 在 CEN 置 1 的一个时钟周期后被置 1。
: x% Z3 c( V2 C& u5 d
- H: g  G' l2 i1 \  b0 f8 J8 k预分频器说明% B( z( m% m) e
- M9 X2 k+ l5 P' n  i: X. Z: U, K5 i
预分频器可对计数器时钟频率进行分频,分频系数介于 1 到 65536 之间。该预分频器基于16 位/32 位寄存器(TIMx_PSC 寄存器)所控
0 Q/ H( s7 M1 a, C' g2 w1 D, P
/ }! t( X4 o8 {# X6 W! U制的 16 位计数器。由于该控制寄存器具有缓冲功能,因此预分频器可实现实时更改。而新的预分频比将在下一更新事件发生时被采用。
7 z5 d; U; v- V1 s2 @* a; r. P+ N6 C0 Y, R" `0 G. u5 n
图 120 和 图 121 给出了在预分频比发生实时变化时一些计数器行为的示例:8 r# P  {# S' `" ~
4 S9 @9 H5 G/ F7 M0 W3 E
预分频器分频由 1 变为 2 时的计数器时序图4 d# s/ k' k$ _+ z) f

4 y# O& D) ]$ ?# h% V D9UERZRZ%KDHEDW5W24EF.png 5 J' S5 P. o$ |& n' o
0 H" `1 I9 J" j/ x- m
预分频器分频由 1 变为 4 时的计数器时序图7 I' C) C$ v$ {0 L

# y  d+ {$ q7 w7 V: p# H Z5DI)$JW]ZJ0)H6$J7(3XCK.png
: q. y2 I0 J* [! d: I( h' u' G: Z4 I; v7 U) S
计数器模式
. @+ K7 v  F) n' v' x9 Q+ ~4 O  g, m! T8 W
递增计数模式
0 A6 Z* i# K9 v2 d) D9 P
, J0 J# H9 \* k
在递增计数模式下,计数器从 0 计数到自动重载值(TIMx_ARR 寄存器的内容),然后重新从 0 开始计数并生成计数器上溢事件。. w0 \7 c% `) q

, `1 I. W' t9 y2 {8 o$ U9 ]0 I递减计数模式

" L: O0 [, n0 s5 k" ]' R
( T" [8 a: G" N: K在递减计数模式下,计数器从自动重载值(TIMx_ARR 寄存器的内容)开始递减计数到 0,然后重新从自动重载值开始计数并生成计数器5 L1 Y0 g. v3 k/ G7 f

3 q+ M9 P! k5 s# W' V下溢事件。" X$ O% r3 |% X  W1 i, n
3 k! u  C8 x0 u! U0 o9 @
中心对齐模式(递增/ 递减计数)
+ D  F1 G" P6 @" X6 i' r  R* n5 c0 V. r
在中心对齐模式下,计数器从 0 开始计数到自动重载值(TIMx_ARR 寄存器的内容)— 1,生成计数器上溢事件;然后从自动重载值开始
( s/ v  K6 W4 @$ m
/ V  L* V. s$ J7 |% I向下计数到 1 并生成计数器下溢事件。之后从0 开始重新计数。* S8 }9 M% G; {, _' p5 g2 n& w# x% B8 F3 g

# j  R$ c2 t! \3 j" K! R04. 时钟选择

' B$ N4 v- }! l2 f( }计数器时钟可由下列时钟源提供:
# ]: B, N5 q( S& W* `, ~  I4 b% ]; G' P6 X5 [
● 内部时钟 (CK_INT)9 j( w/ N6 M/ ?  E$ ?
' G; h' U2 E; e7 _, P* L/ w; r
● 外部时钟模式 1:外部输入引脚 (TIx)% S( K1 I! k3 t2 Z" ]. R  k
* ]$ _5 f7 v4 p
● 外部时钟模式 2:外部触发输入 (ETR),仅适用于 TIM2、TIM3 和 TIM4。
) \9 E8 E' C9 s# |4 q) [- j0 V3 q, ^4 r0 V) [" }5 V
● 内部触发输入 (ITRx):使用一个定时器作为另一个定时器的预分频器,例如可以将定时器配置为定时器 2 的预分频器。+ I+ [' N) D  l' V* Y
* o  _% w0 B3 S: A; r
05. 寄存器

! y, e% h1 y2 d* C3 |5.1 TIMx 控制寄存器 1 (TIMx_CR1)

1 Y0 o6 j4 d0 m) z6 d  qTIMx control register 1
3 ?8 b' x5 p, k7 }偏移地址:0x00
0 s( C. v' W- M' b# L复位值:0x0000
/ b3 |! A) l  ^- d
: ]" A! |+ s+ |" } 20200825202940954.png
3 e& W# A# S! G3 P# |$ ?/ t
/ ]# R5 N8 H# Y* n% X0 T0 X+ Z5.2 TIMx 控制寄存器 2 (TIMx_CR2)
  _& W% _7 ?8 a4 E6 pTIMx control register 2* V/ e) ~% h" Q5 [
偏移地址:0x04
$ ?; p9 g: Y: ]& E& E复位值:0x0000
2 n7 l; @& _, X# ~8 o: I
1 i8 n: t0 `; C; U1 z: ?* B 20200825202952731.png
" v" C; g( G/ ]
5 X8 a/ Y" A5 f2 |, N8 l. G5.3 TIMx 从模式控制寄存器 (TIMx_SMCR)
* y' w% w: n1 N; k
TIMx slave mode control register
/ Q3 ^. c8 b$ X# R) ]偏移地址:0x08& q1 J! m2 Q; E9 t4 r0 j; b  v, \
复位值:0x0000" F! Y, U" P5 r1 W/ C9 ]

9 T3 f: Z& s$ U 20200825203001370.png + R! p, K3 z* L$ g0 V8 I2 I0 ^- s2 s

( g3 u. c7 S4 p/ E8 H5.4 TIMx DMA/ 中断使能寄存器 (TIMx_DIER)
0 Q7 {; w; b4 |2 k* QTIMx DMA/Interrupt enable register. J5 d; u7 \: l5 P
偏移地址:0x0C7 ^! P# H& d& q5 q" E
复位值:0x0000. K; J9 F  I! ^
' l/ ^2 }4 @- w0 g( p7 B
2020082520301336.png 7 E+ v/ {6 g( q3 n: d

4 K3 M; Y6 H3 {& j( M: _5.5 TIMx 状态寄存器 (TIMx_SR)
+ ~; p- {* B: g- H" e- e4 Y9 ]
TIMx status register
( v/ r; Z* _  @& Z偏移地址:0x10
" i0 n  W9 U0 w0 N0 E  A7 |  h# ]9 w* V复位值:0x0000
  V- ~7 l  [# K  C
- A4 u$ l" [# ] 20200825203021983.png " f+ f& D7 E* C! c* t( T' u! D) r

; T/ i+ ~% d' ?6 k' }% @/ E) d' N7 j! \5.6 TIMx 事件生成寄存器 (TIMx_EGR)6 r0 [7 ~8 z' a+ ~
TIMx event generation register) |# e+ p4 [6 i0 z7 d" c8 o. `, B" c" T
偏移地址:0x14' A0 x/ ~4 t9 B+ {
复位值:0x00006 O. e: r5 X/ B) d! b

3 L- x  y. E) v2 j2 D 20200825203030607.png
4 w- e: f$ R. a. A& X$ }6 i6 L9 Z% a$ r, ^, L
5.7 TIMx 捕获/ 比较模式寄存器 1 (TIMx_CCMR1)
& h/ Q* C+ E+ t$ w- N# u" C( o9 V
TIMx capture/compare mode register 1
+ y" q; U/ y5 A( t偏移地址:0x184 U0 d9 H! G* E6 t& N
复位值:0x0000! ~" b( I0 ?- D0 F$ _( i- Q3 ^  U
, K% z/ p" ^$ w1 G0 I& j0 j; l% R- `
20200825203039652.png
% M) k( d5 N: A4 |) H
0 q( [% r6 z5 v/ e+ x3 f5.8 TIMx 捕获/ 比较模式寄存器 2 (TIMx_CCMR2)/ M: y+ {5 L) t3 i( ^* h$ P! j
TIMx capture/compare mode register 2
0 V, q) Z0 r/ S0 U/ L4 `2 j偏移地址:0x1C# i" m( t8 `7 h- j9 n
复位值:0x0000  N1 O$ P8 j; [: J4 K* P8 a9 e

! K* m1 H, y3 k+ M/ N! Z 20200825203051185.png * r  W3 Y8 V7 b, A& B
3 Q" e1 O" P1 H/ L
5.9 TIMx 捕获/ 比较使能寄存器 (TIMx_CCER)

* P5 b& u0 r3 q& u- e6 HTIMx capture/compare enable register+ _; ~+ |" P/ F
偏移地址:0x20& r7 Z; d- l9 e( @
复位值:0x00008 `3 ]* a, l' ]; H8 c
( z- W& u+ z0 K. J9 V8 z' d& O
20200825203102283.png 3 G9 y+ l+ |6 r! v
) R0 o  B- A/ w8 z" @
5.10 TIMx 计数器 (TIMx_CNT)
% ~" G4 d" i' s  A, x# S2 t2 L9 H
TIMx counter
* O: k7 n( E% y偏移地址:0x24
4 i/ s( S0 X: Z* g! D1 e复位值:0x0000
5 i2 j8 ^9 M$ q
+ m& e- o: u9 \& d1 w, v/ d 20200825203111788.png 9 ~8 c! b  B. c$ d# x  V/ |7 W0 e
" c& {1 N. m; ]. O) Y8 m
5.11 TIMx 预分频器 (TIMx_PSC)

! U3 U# {) o' V( q: f# O1 NTIMx prescaler: l0 `" W" e5 m& @5 ~! @. w* o9 |
偏移地址:0x28
& \. I: G* w$ n) Y9 K' n& }8 c7 i复位值:0x0000% F6 C7 y+ l4 J+ C0 n# t9 j5 d

" |$ U, p( F6 h) g- v; p 20200825203122418.png 0 n  k- e$ A  q# H' c

8 M  d' U6 c3 t9 E( B" [# J5.12 TIMx 自动重载寄存器 (TIMx_ARR)
$ z0 ]8 f. ?) ?7 \+ d
TIMx auto-reload register
" Y& j' r+ \) h3 J0 j: Z偏移地址:0x2C
1 U- e. e' G4 Z6 q. f复位值:0x0000
: X' B; E1 y  i- o! J 2020082520313019.png * y- x7 S* b4 r( A3 C
" w$ V) E4 i+ d. V' N
5.13 TIMx 捕获/ 比较寄存器 1 (TIMx_CCR1)
6 V4 c& H5 P" Q% q2 r
TIMx capture/compare register 1
* F& o: s: ~2 }  i0 m9 O偏移地址:0x34# ?% Z, ^! z* y% t8 K1 o6 Z
复位值:0x0000 000: l. |$ f. a7 D. M

! G3 W8 \3 p3 G5.14 TIMx 捕获/ 比较寄存器 2 (TIMx_CCR2)
* J- P  m" Z. C7 C- y- X% WTIMx capture/compare register 2
" a7 P( `! A% S2 [; h$ D偏移地址:0x38
% {; ?/ |$ b: r# x2 i2 K复位值:0x0000 0000
8 [/ k' J( Z2 v9 u2 ~  |; {& J0 {2 _; S- a! h2 z
20200825203142677.png ! E$ m  m# ^6 n, y' k' Y* N
8 t2 n1 H# P  v3 G& G, s
5.15 TIMx 捕获/ 比较寄存器 3 (TIMx_CCR3)! z  l1 O# o3 k1 Y( o6 A& V
TIMx capture/compare register 3
9 N) X3 C" w$ _3 J, Z偏移地址:0x3C
0 _$ E" Q# {7 E% ^( v. Q复位值:0x0000 0000
! w& h  K0 c5 K- Y6 J4 G4 m5 h  B( v# _/ _  k% C
20200825203158191.png
! ~- Z7 W9 Q; V- p# |+ U: r! P' ~0 h8 G6 l' K$ z
5.16 TIMx 捕获/ 比较寄存器 4 (TIMx_CCR4)
6 I: X4 w1 N  `  p" uTIMx capture/compare register 4
8 W& h% o9 z2 U, [偏移地址:0x40# Q7 {1 @* r: ~: y/ n# c
复位值:0x0000 0000, r& e% U2 g3 x; j

3 w5 g0 Z- Z0 n0 U7 U- ~ 20200825203209253.png
4 D3 o8 X4 \+ U5 O+ J, K# ~( p8 [0 I5 a
5.17 TIMx DMA 控制寄存器 (TIMx_DCR)
, m. @/ T% j$ \, F! s% B, U3 B. P1 E" gTIMx DMA control register
$ L" c. M- Q7 |; g偏移地址:0x48* |: a# t8 h0 L9 [) E% ~1 t
复位值:0x0000) i! h1 |% D8 H7 T: r
' h1 H6 m4 @! C1 B) M- `6 N) X
20200825203219175.png 1 a1 m+ V$ p  |- w/ t1 Y

# P8 A0 Q8 ?% _$ H, @5.18 TIMx 全传输 DMA 地址 (TIMx_DMAR)+ @% e9 z1 k; f/ e2 t2 ?% R
TIMx DMA address for full transfer! Z) F- T" `' i  q9 `
偏移地址:0x4C
$ Q7 y& L6 b- ]复位值:0x0000
1 P0 a( n% J8 A
) g5 o4 A7 C  b  ]4 P, I# k5 f9 X 20200825203227355.png
) T# l, l# R- m4 y/ j  w7 _5 G! S9 O: d3 e9 c2 G) U4 v& O, H: R
5.19 TIM2 选项寄存器 (TIM2_OR)
& O/ q  A% r8 VTIM2 option register: }3 Z* z4 G) X- t0 S
偏移地址:0x50
' x& ^# p6 W4 y8 G, M; W复位值:0x0000
; s& C6 G/ |4 F# @: H$ A3 ?2 u2 u: J2 b
20200825203239310.png
% \& ~. C  Z  a) o: X1 g+ Q5 u8 Q0 x  n! F7 ]) V9 ^/ i; z
5.20 TIM5 选项寄存器 (TIM5_OR)
# D; V: `, Z" e6 G/ ?TIM5 option register
7 ]& k7 S8 [  ?- w* d8 M! A, ?偏移地址:0x50
7 B) E* x4 \; C. n* n6 q复位值:0x0000
  A) P7 ?% p) [# {0 j# Q
; P% `+ {) {/ L/ z# q7 t 20200825203246817.png & c# s+ u) n3 g
1 m! k* g9 H0 [- m3 ?3 x1 [

/ F9 [: I" V6 w4 d* O2 N2 p
! y8 B1 {) X7 [9 e# ]- G( y4 q5 |& ^+ n) Z4 T7 T, ~
收藏 评论0 发布时间:2022-3-31 12:00

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版