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

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

[复制链接]
STMCU小助手 发布时间:2022-3-31 12:00
01. 通用定时器简介
, e' S' h) {  w1 w' R通用定时器包含一个 16 位或 32 位自动重载计数器,该计数器由可编程预分频器驱动。9 H/ O  g. ?2 C8 W# n

, }; r0 P% `* Q5 w它们可用于多种用途,包括测量输入信号的脉冲宽度( 输入捕获 )或生成输出波形( 输出比较和 PWM)。5 D8 [) T- f; `2 [
3 o+ X3 ]+ o" W. C; `! a% s7 ~" U
使用定时器预分频器和 RCC 时钟控制器预分频器,可将脉冲宽度和波形周期从几微秒调制到几毫秒。
$ I: _5 y! H/ z' O( x& k' P7 |: _, V' z! I& F
这些定时器彼此完全独立,不共享任何资源。- l/ M) R# _+ d5 W

# N! y: L& M5 g02. TIM2到TIM5主要特性
# e" I" e' Z/ c+ n2 H& p1 k% c通用 TIMx 定时器具有以下特性:
4 [. I: h( G5 z" A1 j% T● 16 位(TIM3 和 TIM4)或 32 位(TIM2 和 TIM5) 递增、递减和递增/递减自动重载计数器。
8 H) v+ G: u6 U8 R& a) i● 16 位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数介于 1 到 65536 之间。
5 _) e) [/ L# c● 多达 4 个独立通道,可用于:
  V4 n" n) ]) a: u& D/ @8 \  G! t7 x— 输入捕获
! d+ Q8 p# ]. \— 输出比较
) u& g! u* G* W: f5 m0 z7 B1 q— PWM 生成(边沿和中心对齐模式)% [* A7 a2 l7 }; p$ i
— 单脉冲模式输出
: K. e! g. W0 ^: V1 u" K● 使用外部信号控制定时器且可实现多个定时器互连的同步电路。9 H4 m) b# U( v* z) F5 Z2 v
● 发生如下事件时生成中断/DMA 请求:* U) n' t7 g7 S+ U
— 更新:计数器上溢/下溢、计数器初始化(通过软件或内部/外部触发)' j7 L9 q* X& w& r: ^# ]& o
— 触发事件(计数器启动、停止、初始化或通过内部/外部触发计数)/ X* k/ R8 m5 }+ R6 y" U8 D
— 输入捕获
3 L7 ]+ K8 r% v2 p# E; B— 输出比较
* v4 t. M1 t( J+ s% `● 支持定位用增量(正交)编码器和霍尔传感器电路: M7 d1 r( @1 e3 x
● 外部时钟触发输入或逐周期电流管理, i+ Z1 R+ L4 ^! t+ K
, j" s; g4 W* i
03. TIM2到TIM5功能说明) t+ Z4 ^8 [3 ~' }: {; c( a& D/ k# w
时基单元
- A/ @# o5 B+ F- x% Z( n
9 b' t9 T9 n* |. c; D. V7 \! ~6 Y可编程定时器的主要模块由一个 16 位/32 位计数器及其相关的自动重装寄存器组成。此计数器可采用递增方式计数。计数器的时钟可通过预分频器进行分频。
! u; j1 A2 |7 i) z* j; p: p7 P" x
  u0 i; _, ?" E) W, }9 w8 C计数器、自动重载寄存器和预分频器寄存器可通过软件进行读写。即使在计数器运行时也可执行读写操作。
/ _+ p" k% e, ]4 s2 M; _' ^
* ], L; H; z/ B, l. ]9 U( Y时基单元包括:
& P& f5 O0 W4 b6 \9 w
$ j- S2 G4 B7 I- c% Z* Z9 g) G● 计数器寄存器 (TIMx_CNT)8 J9 c5 Q- S1 V4 f( E
; w$ o& a$ c, Q2 S3 d$ j8 H' }+ O7 P
● 预分频器寄存器 (TIMx_PSC)1 F4 }5 ?6 E- k$ B# s$ v

3 O( S+ r1 Q$ @● 自动重载寄存器 (TIMx_ARR)
% z, f. [0 M! P* Q3 {# c+ U# L3 a) o2 [! U6 ]1 {$ J
自动重载寄存器是预装载的。对自动重载寄存器执行写入或读取操作时会访问预装载寄存器。预装载寄存器的内容既可以直接传送到影子寄存器,也可以在每次发生更新事件 (UEV)时传送到影子寄存器,这取决于 TIMx_CR1 寄存器中的自动重载预装载使能位 (ARPE)。当计数器达到上溢值(或者在递减计数时达到下溢值)并且 TIMx_CR1 寄存器中的 UDIS 位为0 时,将发送更新事件。该更新事件也可由软件产生。下文将针对各配置的更新事件的产生进行详细介绍。
# I! p' ~: ?3 `9 B
" [& K$ \' n6 L计数器由预分频器输出 CK_CNT 提供时钟,仅当 TIMx_CR1 寄存器中的计数器启动位 (CEN)置 1 时,才会启动计数器(有关计数器使能的更多详细信息,另请参见从模式控制器的相关说明)。
. U/ C$ B9 b" h. N- Q" [+ ^1 b1 w$ ]" ~! _
请注意,真正的计数器使能信号 CNT_EN 在 CEN 置 1 的一个时钟周期后被置 1。" M8 M, l+ l- l$ q& Y- @: l
. p" P4 n; z( s( N9 @+ `( I
预分频器说明
# y! @+ W8 `/ }4 q9 l, O4 l$ e1 u) r) |9 }5 W
预分频器可对计数器时钟频率进行分频,分频系数介于 1 到 65536 之间。该预分频器基于16 位/32 位寄存器(TIMx_PSC 寄存器)所控
6 t* T/ n) q' K3 @
+ _$ w% d) x, t- i% A1 I制的 16 位计数器。由于该控制寄存器具有缓冲功能,因此预分频器可实现实时更改。而新的预分频比将在下一更新事件发生时被采用。2 U9 }% j- {) Y! o# V5 K

9 G4 I: C$ N( b2 n* E图 120 和 图 121 给出了在预分频比发生实时变化时一些计数器行为的示例:
  C2 e: f6 ~+ L4 s) E: x. u9 `
6 [) \/ v4 G6 p* C5 }预分频器分频由 1 变为 2 时的计数器时序图  J) H3 X5 @2 g/ Q0 O: a3 `" A' D
+ ?/ x7 R! E" j6 e% P
D9UERZRZ%KDHEDW5W24EF.png " s  T0 S' b+ T- z* c

: s( N3 ?( p& A* G1 u预分频器分频由 1 变为 4 时的计数器时序图* e' U5 f7 E+ J: X; k3 l

# j+ l6 l1 i6 L+ Y% H# d. j5 I Z5DI)$JW]ZJ0)H6$J7(3XCK.png 5 A3 N. g' q, r& J0 u9 i" g; c; R: A  j

3 L! E( i+ R2 p$ d& ?( k计数器模式
% ^" G* _. z  S3 I% W
" V: a. w7 P$ [& ?1 M- }递增计数模式
5 X$ o6 d% u8 S- L
) G# Y+ r: X2 D* L; y7 O
在递增计数模式下,计数器从 0 计数到自动重载值(TIMx_ARR 寄存器的内容),然后重新从 0 开始计数并生成计数器上溢事件。9 O6 K* k$ `1 i- L+ Z' D
1 K+ l/ H! T+ Y$ l
递减计数模式
9 T; ]! [& Y7 d$ @
/ f& h9 L- \! b! H3 R
在递减计数模式下,计数器从自动重载值(TIMx_ARR 寄存器的内容)开始递减计数到 0,然后重新从自动重载值开始计数并生成计数器0 _9 e! X/ @" ^5 J  q( u
4 o7 |* m0 W1 `* |# S' C
下溢事件。' D# h# ^' u( W
2 ]/ x% _" s# U( }0 s& s
中心对齐模式(递增/ 递减计数)
& w0 G; M- p% k3 p8 `) m& b1 N7 |# H& v; E2 G0 R8 q
在中心对齐模式下,计数器从 0 开始计数到自动重载值(TIMx_ARR 寄存器的内容)— 1,生成计数器上溢事件;然后从自动重载值开始: e. H1 B! y8 M
9 V% H8 t. g7 i  C+ j
向下计数到 1 并生成计数器下溢事件。之后从0 开始重新计数。- O- H' S0 M9 I: e( v* F8 `6 U# D! l
. ^1 p: D/ Z+ I" ]( `
04. 时钟选择

2 \( R7 A! z' y6 I- O5 q计数器时钟可由下列时钟源提供:+ g! v/ d+ S4 x2 p+ w; e+ V+ W

1 {' N) ~+ C6 ]* c7 A( k● 内部时钟 (CK_INT)
5 }- Q' Q6 E9 ^# r7 ]4 ^* ~; y9 \9 ]! l* A9 i* A
● 外部时钟模式 1:外部输入引脚 (TIx)
# ?: W; ~1 Y9 [! _' t7 d+ u
; M" L8 h6 B' A, D2 K9 _: C● 外部时钟模式 2:外部触发输入 (ETR),仅适用于 TIM2、TIM3 和 TIM4。
5 H* h% ]" {; ]$ @6 J; A" i  `- u6 H5 n8 ~
● 内部触发输入 (ITRx):使用一个定时器作为另一个定时器的预分频器,例如可以将定时器配置为定时器 2 的预分频器。
: z: s" J6 v. Q# w) h$ I+ E; N$ N" D+ P% G% ?$ _
05. 寄存器
3 h: p2 D9 w+ D, w+ |% ]
5.1 TIMx 控制寄存器 1 (TIMx_CR1)
, j3 U( X4 }; A* `. i% k  _
TIMx control register 1" [2 Z7 C, U9 i/ l9 K  T( Q$ g
偏移地址:0x00
6 R' m7 H; V+ _# c7 Q. }8 J复位值:0x0000
$ D0 H, S, s  a  d) _4 c
! k  y# p: |/ g# F 20200825202940954.png / T" S& ~3 S/ {7 O- G) h

- M9 ]' @& D) {# [8 Q3 _5.2 TIMx 控制寄存器 2 (TIMx_CR2)
3 `8 W5 B7 r3 jTIMx control register 2
) ^, {* P3 o( J. d/ r7 E偏移地址:0x04( [% b$ D7 X' y* E7 j6 L
复位值:0x0000
: w9 P# P* [! w8 }* d; z: m
$ y' H2 u; ]: `- e- r: L8 D 20200825202952731.png
1 N7 F$ A' L/ X/ T3 G4 \" G+ Q3 v% y( H+ M, W5 B
5.3 TIMx 从模式控制寄存器 (TIMx_SMCR)
5 I0 v/ a) R  T2 y! C& Z
TIMx slave mode control register
6 q' g" ~( t: [7 z0 p6 Q偏移地址:0x08$ {6 }2 R, m$ q2 l
复位值:0x00001 ^: D4 ]: _4 Q, l* e9 g! ~

1 c& y8 y. i1 {6 R2 C4 d! Z 20200825203001370.png
5 j9 O4 q7 ~9 f% `+ P3 B# M# _" z* A2 ~+ q' g5 _7 T: |/ ?# @* x
5.4 TIMx DMA/ 中断使能寄存器 (TIMx_DIER); i. \, w' R# l
TIMx DMA/Interrupt enable register3 |6 c% v9 Z2 ?6 a2 d  U( i
偏移地址:0x0C) f6 i7 H* F" e6 N- O' }! Q
复位值:0x0000; l: I& O1 r% T: O5 W5 \7 U

- b+ G9 d$ @& s6 [, N 2020082520301336.png 0 p( [8 \# b# i7 M. K
, f/ B; R2 s% n' K+ W" C
5.5 TIMx 状态寄存器 (TIMx_SR)
  t- l( v9 T6 M  l* g. m3 c+ a
TIMx status register
9 m2 h4 D. W: k! S: N$ ?偏移地址:0x10" t0 T, Q- P) Q
复位值:0x0000
9 z+ Y- }" x' ^: z% g9 m: ^: R; K$ C# C
20200825203021983.png
8 h  q5 L+ j7 P* \9 Z( m% |$ \
! o; i8 }% C( w5 O% m5.6 TIMx 事件生成寄存器 (TIMx_EGR)4 T1 e$ S5 T/ o8 @' v' O3 C- _
TIMx event generation register
: R& p+ ]5 N0 `' I. L偏移地址:0x14
9 V1 I( v. f) Z& L$ n复位值:0x0000
/ _7 p' `5 c' l4 N  t9 L$ o3 S1 C" g, L0 G! g. }
20200825203030607.png 8 w. m& R5 J: {

1 j6 N" M, V( x. _2 F# {5.7 TIMx 捕获/ 比较模式寄存器 1 (TIMx_CCMR1)
8 ?' K& }6 y' b0 t: |' \# N: P
TIMx capture/compare mode register 10 W" C# V' P0 v
偏移地址:0x18
! l" \- f3 t, Q8 J复位值:0x0000
7 }0 v1 A3 K( U8 G$ s( `
" X+ F5 a0 w3 y% ? 20200825203039652.png
  `5 j% [' {+ X& s7 T- x5 J+ T! g6 J; A
5.8 TIMx 捕获/ 比较模式寄存器 2 (TIMx_CCMR2)+ a8 {9 i* s0 w; V( G* L
TIMx capture/compare mode register 2
8 w$ Q$ Q0 h- z/ U偏移地址:0x1C
' c( O1 ^) c6 W  b* ~: d0 ?, r( |复位值:0x00005 [+ e& n  x" m, m9 n7 P
# n5 M; v$ c$ k' ?' S2 g* o
20200825203051185.png
# O) u5 K( o7 v6 o$ w# ?- J2 }+ O1 M* g$ s6 s
5.9 TIMx 捕获/ 比较使能寄存器 (TIMx_CCER)
) K# P- V/ N, ]  q9 N0 @
TIMx capture/compare enable register0 g- E* w! u# m- [7 B, Y9 U
偏移地址:0x200 x5 V4 P) h- o/ b
复位值:0x0000
/ f6 w7 H; b0 U2 w  t3 [
& ]' _1 ~8 D3 F# F0 {* R$ Q 20200825203102283.png
' Y4 {: M! _1 u+ r( I6 u& w3 v6 c
1 B) b: i* J7 J7 r7 x# Z5.10 TIMx 计数器 (TIMx_CNT)
7 O$ d9 A" w* x2 z. ?/ @+ X, h
TIMx counter; v, u3 j- C' ^" q# I+ U: c
偏移地址:0x24
! c0 X! N/ \  E  b( ~; H复位值:0x0000
, j' k9 ~' e. a( I
0 a2 ~7 s5 w1 D) \4 i 20200825203111788.png + V, g$ z- q: O6 b2 {) G

! X% K- s, W" w5.11 TIMx 预分频器 (TIMx_PSC)
% p/ {' E/ ]1 A# p0 r. a
TIMx prescaler
* k4 N( K5 w% @7 s# B$ e偏移地址:0x28- W' s3 y) L; R. S+ l6 p5 a
复位值:0x0000, }/ J! M% M' t+ a0 R# U6 G7 N. e

- e9 M$ J& E2 X4 N% y% \ 20200825203122418.png
2 a/ h+ F+ O+ ^5 [; I: X. p* Y2 t( L
1 `# S1 b: W& l: w  M- O5.12 TIMx 自动重载寄存器 (TIMx_ARR)

8 c5 o" h9 V( D5 [TIMx auto-reload register
4 q+ a; E2 b+ r8 }( L偏移地址:0x2C
* O0 ]/ i$ E$ e# A2 ~复位值:0x0000: B$ ]+ z+ H2 t7 j$ u
2020082520313019.png
# H% Y0 j9 D$ [# t, A  D6 P- b
! S) l9 n1 ?0 B5 T5 C5.13 TIMx 捕获/ 比较寄存器 1 (TIMx_CCR1)

' l' r* b, I2 ]0 f& U' w% CTIMx capture/compare register 1
# x. _3 R; N  M& Y偏移地址:0x34
* ^* l- o+ v% l3 {$ ]复位值:0x0000 0006 U% e+ ~2 {# H; V+ |  f

: C& v" e$ q$ B& T3 O5.14 TIMx 捕获/ 比较寄存器 2 (TIMx_CCR2)5 _% B7 J1 w/ y# n# @" T7 x
TIMx capture/compare register 2$ M7 u1 j6 a7 d% [# Z: n
偏移地址:0x38! y. W2 a" c3 T. V  T
复位值:0x0000 0000
/ g+ B% o9 n; {8 j5 Q' K4 h) Z; u( c  F# d; C
20200825203142677.png 5 M) {9 ?& |# w. g6 ~: b% R

. U5 b" o3 x1 u+ X2 k$ t4 x3 q5.15 TIMx 捕获/ 比较寄存器 3 (TIMx_CCR3)
5 ~* a7 z2 E1 UTIMx capture/compare register 3% L- M! }4 D7 t" B* Q, W# _
偏移地址:0x3C9 [4 {( b1 A# ^* v" Z3 K$ R$ [1 A# L
复位值:0x0000 0000+ \$ q2 h8 O. t  F

% |$ O8 m! \( W- K  K/ q( D7 G, \. B 20200825203158191.png 5 Y% p' H. @9 c1 S% I

& ?  N7 t* A/ W, x0 K' P& v" F5.16 TIMx 捕获/ 比较寄存器 4 (TIMx_CCR4)  ?; G- J1 F& h7 m7 z0 b
TIMx capture/compare register 4; ?: m0 r, m" @" @! _0 Z( D" e
偏移地址:0x40$ N8 F) x$ E5 H, ^: @
复位值:0x0000 00008 [1 _# _  d. {
1 [+ r& R  c% U2 U9 X1 l1 K
20200825203209253.png
4 R; o7 n7 v' V; q
& I2 I8 ]- n* U5 w5.17 TIMx DMA 控制寄存器 (TIMx_DCR)0 A1 [9 h" N: k+ e# S
TIMx DMA control register2 d& r: R8 n1 J8 q
偏移地址:0x48
7 n# @/ l  U; o8 D7 j复位值:0x00006 o2 s- }  A) X4 l$ @- b7 W6 t
. a7 t4 y/ K# |& ]
20200825203219175.png 1 r" q  U# q1 i4 g% X$ _& P1 B
: E# ]1 Z+ W* u# N
5.18 TIMx 全传输 DMA 地址 (TIMx_DMAR)( g0 d% X: h% u, O
TIMx DMA address for full transfer/ b) {# M% S! r! x7 N8 d
偏移地址:0x4C9 Q1 Z. s8 L4 W- b7 m4 U7 c9 _
复位值:0x0000
" n; p- B+ u0 g5 D: O! \
5 B5 G% H5 ?* Z9 ], x( I: @ 20200825203227355.png # W$ X8 C- ~# `7 l4 o

+ Y5 D% I0 H: C+ A0 |5 o5.19 TIM2 选项寄存器 (TIM2_OR)9 r! ?- ^( D9 d: M/ ]/ w
TIM2 option register
! [  V3 {; I& k# P- v偏移地址:0x50
! ?) C$ f/ C4 x# H0 j复位值:0x0000$ [' I5 X$ b7 \. q% j% }

$ f5 b& u7 G7 ]5 g0 L1 s, i 20200825203239310.png
! b  R* }8 l) S' k
  R5 X$ ?+ n# N7 q" \$ e5.20 TIM5 选项寄存器 (TIM5_OR)0 z, W1 M! `. |) f2 b
TIM5 option register; ]  e9 m% P) ^8 `
偏移地址:0x50
2 {8 I* L1 {( u% c8 I* ]复位值:0x0000
; n* m' x9 u/ G' D4 R% C: [# f
; X- l" W" s) n9 x* j4 S) Y$ B 20200825203246817.png
- `" f# y" C- u7 n8 ~! |# t! j6 j7 z& l1 `
. o3 y4 H* u( Z1 g/ @

( R5 j+ `' ]+ @7 i2 C
: l. L% V! ]8 _1 g
收藏 评论0 发布时间:2022-3-31 12:00

举报

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