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

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

[复制链接]
STMCU小助手 发布时间:2022-6-13 17:33
01. 通用定时器简介
; Y) z3 w1 R1 n# g2 @- a通用定时器包含一个 16 位或 32 位自动重载计数器,该计数器由可编程预分频器驱动。. i# i3 J9 h+ H+ `
& e8 O- f. t, n" Q  I3 I
它们可用于多种用途,包括测量输入信号的脉冲宽度( 输入捕获 )或生成输出波形( 输出比较和 PWM)。
% H/ U% S8 @2 Z: g+ x
5 o' R* m5 e3 f' w! e) `" w使用定时器预分频器和 RCC 时钟控制器预分频器,可将脉冲宽度和波形周期从几微秒调制到几毫秒。; j9 L) O3 m9 B5 Q' O9 w$ n* x

5 B5 g/ k) g% v( ]. J+ t这些定时器彼此完全独立,不共享任何资源。
) [- a! l4 \4 n8 V: J  c6 B
2 @: i( c7 G. R/ q02. TIM2到TIM5主要特性9 F! D% z  c5 Z) ?' N
通用 TIMx 定时器具有以下特性:
2 H* D8 G: P% z% s● 16 位(TIM3 和 TIM4)或 32 位(TIM2 和 TIM5) 递增、递减和递增/递减自动重载计数器。
7 j1 ]2 c# }. [1 w# Y, Q9 {& _● 16 位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数介于 1 到 65536 之间。
2 ^( x  ^' x2 ^, _9 P● 多达 4 个独立通道,可用于:% @1 J9 t6 w/ y8 v) v
— 输入捕获
2 c! S* `% g1 ?— 输出比较& F6 o' T" g6 `4 ~* s5 x# l( m
— PWM 生成(边沿和中心对齐模式)
( c% j- q8 i( u* c7 k3 r— 单脉冲模式输出  B& ?/ Y" i( I: h
● 使用外部信号控制定时器且可实现多个定时器互连的同步电路。2 ]. p. J3 Y; c* K  F
● 发生如下事件时生成中断/DMA 请求:
" G. V6 F5 K8 h( ^. E8 B0 C/ `— 更新:计数器上溢/下溢、计数器初始化(通过软件或内部/外部触发)  v* b5 T7 o% ?" r/ s8 j2 Q2 i. M
— 触发事件(计数器启动、停止、初始化或通过内部/外部触发计数)
: U9 s  E$ [# E  c: w; [— 输入捕获
& [4 v- t: @8 a* G' u0 |- m— 输出比较
/ v1 s- U4 v" c% b, L● 支持定位用增量(正交)编码器和霍尔传感器电路
) b1 b2 @* S0 F2 i2 W1 J, \● 外部时钟触发输入或逐周期电流管理% Q/ g  r1 q/ C/ s2 G# B
0 ]2 L) V6 J4 N) I: Z5 r2 Z
03. TIM2到TIM5功能说明. |( a" D" f) A0 E2 D0 L
时基单元
5 n# g* K+ a8 f' I2 x, R' S( }) k3 ~' `. O6 e
可编程定时器的主要模块由一个 16 位/32 位计数器及其相关的自动重装寄存器组成。此计数器可采用递增方式计数。计数器的时钟可通过预分频器进行分频。: n6 @4 z5 I4 `/ _
; i4 l9 ?( F$ |/ N7 _& ^
计数器、自动重载寄存器和预分频器寄存器可通过软件进行读写。即使在计数器运行时也可执行读写操作。
- {. C8 m$ \3 R$ @0 W" l
- {8 X5 Q( J8 b9 C. S$ ~6 }时基单元包括:! A, D4 i$ G3 C+ Y+ h

& I# q; n& ?/ a- Z● 计数器寄存器 (TIMx_CNT)  G# \& [7 @% [6 _8 J% ?+ A# _" J8 K

  H( P& Z, Q' `& m( W% t  k● 预分频器寄存器 (TIMx_PSC)) N" M& N8 V# T
" ~% M. ^$ z" d
● 自动重载寄存器 (TIMx_ARR)
" O/ [* S7 e0 b9 v: Z3 R3 D, K; s# T! z8 F5 E" ?# w( Z* N
自动重载寄存器是预装载的。对自动重载寄存器执行写入或读取操作时会访问预装载寄存器。预装载寄存器的内容既可以直接传送到影子寄存器,也可以在每次发生更新事件 (UEV)时传送到影子寄存器,这取决于 TIMx_CR1 寄存器中的自动重载预装载使能位 (ARPE)。当计数器达到上溢值(或者在递减计数时达到下溢值)并且 TIMx_CR1 寄存器中的 UDIS 位为0 时,将发送更新事件。该更新事件也可由软件产生。下文将针对各配置的更新事件的产生进行详细介绍。# J/ g# N# J1 i; O. o

- y, J# @' P. b& _: n: p计数器由预分频器输出 CK_CNT 提供时钟,仅当 TIMx_CR1 寄存器中的计数器启动位 (CEN)置 1 时,才会启动计数器(有关计数器使能的更多详细信息,另请参见从模式控制器的相关说明)。
) D% Y  Q' M& g; P( X! ^+ P
) S1 X3 D' A0 g. `请注意,真正的计数器使能信号 CNT_EN 在 CEN 置 1 的一个时钟周期后被置 1。2 ]& R  O  S0 f2 n" v' R. _
0 B1 M0 g+ {4 Y) ?
预分频器说明" i* f4 m! b! d: E9 w4 }

! W5 `$ C, B/ `2 z: m% q预分频器可对计数器时钟频率进行分频,分频系数介于 1 到 65536 之间。该预分频器基于16 位/32 位寄存器(TIMx_PSC 寄存器)所控
7 E# ~( q% ]3 n4 |8 ]! Z# ?" D) F
# G; b/ [# E( n4 A3 P6 m# q制的 16 位计数器。由于该控制寄存器具有缓冲功能,因此预分频器可实现实时更改。而新的预分频比将在下一更新事件发生时被采用。
/ x$ O5 V4 ~' K. J9 N3 d+ K  t1 w/ `& b  ~) b4 n
图 120 和 图 121 给出了在预分频比发生实时变化时一些计数器行为的示例:
1 L% _! c8 S. c1 W& r9 r- g7 |% O& G
预分频器分频由 1 变为 2 时的计数器时序图
- Q$ e4 l9 [5 v! e% m$ [0 ~" x+ {
4 f7 N3 s; q0 K6 C XA@W~[R~%JZI71UT@$T_7.png 6 B3 J) B9 G; g) M
' Q! S+ `. B5 N4 f$ R
预分频器分频由 1 变为 4 时的计数器时序图. x0 H: O" S5 U0 z+ c" K+ `
% N9 [/ A- d/ z" L4 [. B( b
BZ}{Z]O)RSL@9Q4LXQKTU(B.png
3 I4 Z8 |6 N* i* }
$ ~' t' j0 J* I0 h计数器模式7 C" e: r# ^/ ~

5 h0 a' R7 ]$ C7 _. l; B% e递增计数模式

8 ~& u7 ?3 o- }/ {! z
  Y! q9 h& h2 u4 V在递增计数模式下,计数器从 0 计数到自动重载值(TIMx_ARR 寄存器的内容),然后重新从 0 开始计数并生成计数器上溢事件。
; y  q4 B- F; V2 N, u: l, d1 m7 |9 T+ n
递减计数模式
( w6 X8 G9 v+ m+ q0 O
$ ]* b; f' c/ @7 C5 t: n- W
在递减计数模式下,计数器从自动重载值(TIMx_ARR 寄存器的内容)开始递减计数到 0,然后重新从自动重载值开始计数并生成计数器
- j1 j5 G8 Y& a" p- z+ F5 r6 V* U, b. P/ C. b- j
下溢事件。
+ k0 s' J6 b; M7 Q" ^
- F3 \6 D* E& Y中心对齐模式(递增/ 递减计数)
/ k% P0 W0 \6 i# @
/ g- |& i* C8 M5 l: k& n
在中心对齐模式下,计数器从 0 开始计数到自动重载值(TIMx_ARR 寄存器的内容)— 1,生成计数器上溢事件;然后从自动重载值开始. j4 ?4 Q% k/ a9 x6 }1 d0 p

4 T/ y& j! T0 q向下计数到 1 并生成计数器下溢事件。之后从0 开始重新计数。' }# M" s* C) t( y# m

5 w" F9 y; w4 N" {) {# q3 V04. 时钟选择
; k9 H& K* W. \/ N# W计数器时钟可由下列时钟源提供:- B! y* i$ R% g* z' m2 {

8 h! D1 n7 h0 N, V0 ^● 内部时钟 (CK_INT)
( Q* y6 g$ I0 `. F: i
' A: d/ e  d( H● 外部时钟模式 1:外部输入引脚 (TIx)! t/ a& M$ e( K7 R0 n

% h& b1 h) h7 U* M) j3 h( ^' E. e● 外部时钟模式 2:外部触发输入 (ETR),仅适用于 TIM2、TIM3 和 TIM4。
# z1 I8 n" X* J% Y+ g( o# I
) t7 |$ y5 c2 R9 V3 l● 内部触发输入 (ITRx):使用一个定时器作为另一个定时器的预分频器,例如可以将定时器配置为定时器 2 的预分频器。
. R$ t- O9 s( {5 y% n3 k
, ^, ~8 [% u6 a/ Q) u9 d
05. 寄存器* W% G( d) o: ~: X# s3 l: n1 f
5.1 TIMx 控制寄存器 1 (TIMx_CR1)

" K& C2 A. ~' |+ W2 ]TIMx control register 1( O2 f$ J7 `5 L, [. H
偏移地址:0x00# c' v' Q+ Z6 T; x+ F: y- I- L
复位值:0x0000" w3 u7 \8 ?( X, [" J

3 \9 M- S& j7 ~) k& {% W 20200825202940954.png % Y6 b. H* v' l, J: O# z3 \
5 z3 G! a5 _8 S9 \8 R7 i- g
5.2 TIMx 控制寄存器 2 (TIMx_CR2)0 D) p( O5 t; j6 ^3 ~2 r2 C# g
TIMx control register 2
7 k6 `& x1 o$ V2 S# ^" J4 i% }偏移地址:0x04& @3 [9 Z: v2 [1 z
复位值:0x0000) _- t2 V( |4 q- k+ Y! x

! k  k. C0 V0 b7 }) q( N$ ~( m1 K 20200825202952731.png : N9 l' }& G7 T" y" \, {3 u1 l: ]
4 k( `: o4 T7 Q+ g  Z  V/ _
5.3 TIMx 从模式控制寄存器 (TIMx_SMCR)
8 z2 f3 ^% N. j2 A  p* JTIMx slave mode control register
, B) m# o* M! x: `2 M3 U2 N9 E偏移地址:0x08
1 a& H: q4 O* e5 V; ]$ h# H复位值:0x0000: e; i7 R9 D% N
7 j7 Y. K  _; r* D
20200825203001370.png ; ]( C* x1 z; v3 v) Z! d
4 X$ r0 E5 z1 a3 L
5.4 TIMx DMA/ 中断使能寄存器 (TIMx_DIER)
. o8 g% d# s. ?; t$ b  H! STIMx DMA/Interrupt enable register
; v* a2 A" X0 Z1 K偏移地址:0x0C
3 p4 \+ c, B0 U) K+ D& g复位值:0x0000
9 Q1 `& B/ x! }0 k
; `) ?7 {) P# ]+ w: m# I, w9 W2 E 2020082520301336.png
$ c) n4 N7 ]- y% c& ]! E* H* q# p
9 W# _5 \9 d+ Z' U( `8 y5.5 TIMx 状态寄存器 (TIMx_SR)
# A; c5 S: t8 h+ B( i0 D6 O& STIMx status register
8 R1 z1 O. C0 E9 H6 y7 P5 b: p5 z* G偏移地址:0x10
2 M- f* J$ ]9 O4 \- i复位值:0x0000
4 ?8 x0 n; B' W# H; ^
( T# g  m5 ]; Z5 W) {: M 20200825203021983.png
* t' `6 _2 d; l9 n) T$ r1 ?0 f2 {$ O0 t
5.6 TIMx 事件生成寄存器 (TIMx_EGR)6 F- K0 x" t& |+ T  u  a& ?4 p; S
TIMx event generation register
  `6 ?" @1 |0 |偏移地址:0x146 \) H' S! ~" p" F" f
复位值:0x0000
2 M! o& \2 Z: `( i
) a9 T0 Q+ j/ V$ M( @3 k 20200825203030607.png $ J! \* F" b( h: N# c* d1 J

2 l( f4 W* u/ s2 R4 q3 `0 q5.7 TIMx 捕获/ 比较模式寄存器 1 (TIMx_CCMR1)
9 w8 O7 ~& ~; O; u1 R  rTIMx capture/compare mode register 1
( g, R. `2 [! a# I# U3 p1 L偏移地址:0x18
: b: `  b% ?0 z% \6 a$ x复位值:0x0000; [) a- o% x' c; S# t1 U( g$ W2 ?* f& l2 `
) W: r; r' c2 A% O3 K
20200825203039652.png 1 J) P. _* _3 G; T- g& G

& {; h* N9 ^9 M5.8 TIMx 捕获/ 比较模式寄存器 2 (TIMx_CCMR2)
' x1 J3 p6 O5 i9 H4 }TIMx capture/compare mode register 2
; A9 j: Q1 a; L% [6 D7 }( `1 M: q& ]7 h偏移地址:0x1C
! O  G: k0 a+ j" g+ W" o$ f: p复位值:0x0000
4 g- t# d+ T" O3 D5 g7 \
. t  x4 X# [4 \ 20200825203051185.png - l( M" C/ `6 B) F
" F, T' `6 \$ U6 m2 }% [
5.9 TIMx 捕获/ 比较使能寄存器 (TIMx_CCER)
# c) S! q7 u4 E- Y) {TIMx capture/compare enable register+ h5 A, n2 t/ i9 W* H
偏移地址:0x201 u: I" X/ o- W9 y  G% k
复位值:0x00002 M# j9 Q% S* ~- ^! j

2 r" a5 T5 i' @! `9 |- K, Q- h+ S 20200825203102283.png 2 B( |$ e  _0 f0 p1 E" i

' X$ K$ D' n% U/ t2 e+ V7 e' \: T5.10 TIMx 计数器 (TIMx_CNT), k6 J* \9 F4 J
TIMx counter% p1 B8 S$ p3 p: }1 E" i# S! V1 P
偏移地址:0x24
" ^- f* g; o3 }' `( @. g$ m' V复位值:0x0000
2 i2 z; Q: o, v% F# Q& o
9 b# H7 |2 f, O! K 20200825203111788.png 3 m1 T5 P- S9 d, {" r1 B1 L

5 F6 [" K0 R9 z: M5.11 TIMx 预分频器 (TIMx_PSC)
: w3 I! P3 R8 F0 B* JTIMx prescaler) C" g- s: E' t  P6 a
偏移地址:0x28
/ o- ]$ ^7 ]# j1 u, B# S" T6 f/ {复位值:0x0000! W  F3 s& h1 m0 s

8 j; U: t/ ^1 H8 D4 g0 c) B 20200825203122418.png
( m6 M+ D! [: C9 }- x: I% \; o( n
6 {5 j; D, }! n/ A5.12 TIMx 自动重载寄存器 (TIMx_ARR)
& S3 ~2 }% P4 OTIMx auto-reload register& R6 O8 x2 ~6 g: g8 Q. N
偏移地址:0x2C
. f0 X: I$ V! f! v  S' g6 T4 s复位值:0x0000
( M6 C! m3 t" K/ k2 q' @" G3 X& U, L) W, k# q8 h  S' J
2020082520313019.png
1 R, \7 Q( {6 B. c: n! J8 k2 V& U! a  ]% H5 n% o6 m/ V5 e
5.13 TIMx 捕获/ 比较寄存器 1 (TIMx_CCR1). `* ]. M$ E) ]; {; T
TIMx capture/compare register 11 u- D' f2 s: c9 S: F  \4 |
偏移地址:0x34
4 C4 \& I5 @* l0 G; U复位值:0x0000 0007 N7 W& m0 D: Q, t/ V! D/ Z( U$ \
4 N8 b8 l# {! l
5.14 TIMx 捕获/ 比较寄存器 2 (TIMx_CCR2)
) ?1 K) D$ W- v( A2 k( ]7 xTIMx capture/compare register 2. V* v4 z5 f) P
偏移地址:0x38
+ P$ ~2 V* z; Q4 T7 m, G% ?3 o复位值:0x0000 0000
+ M7 k* N* P" F- ^: H+ k
" u8 [3 r; u. X* P6 R7 ?+ \ 20200825203142677.png
# X6 W, V! A% p+ `3 [% |# R/ Q7 U8 ^/ S  ^- g, r; ]: x: t5 i* i7 I
5.15 TIMx 捕获/ 比较寄存器 3 (TIMx_CCR3)
! @6 i" T- q1 q# x& J: E. NTIMx capture/compare register 3
7 o; i7 p# X9 P  K0 |3 N1 l偏移地址:0x3C+ q' j8 o; i7 h. z# N' K5 F* D
复位值:0x0000 00003 G. u+ P) y! n9 D$ o6 i

3 s+ b  o  \3 @9 _  R1 T 20200825203158191.png , Z0 Z& O) Y' r5 L# `5 o7 Y
% }, a6 |( }% w- S4 v& Y& P& u
5.16 TIMx 捕获/ 比较寄存器 4 (TIMx_CCR4)
( P% K7 i/ c( u6 f7 tTIMx capture/compare register 4
2 H) U* [7 l3 L- W) F2 j7 A偏移地址:0x40
& e2 c$ l+ v" H; U复位值:0x0000 0000
: R8 e: Z& x8 V& w( O1 ?# g, e# k  P4 o
20200825203209253.png
1 Z( y# B( B0 W( `3 E* |! c3 U9 v( m: R7 c! d) j
5.17 TIMx DMA 控制寄存器 (TIMx_DCR)
* M# h5 m9 X& |TIMx DMA control register6 c* m; {' \/ e. K. N  y5 F- y
偏移地址:0x48
( b5 p1 u* a% F& F8 j复位值:0x0000  G& L/ |6 _( `) L2 B+ e0 y
2 j  T( o  \* j. c6 O2 ?/ x
20200825203219175.png * G( _; c6 h! Q! X

& O" L, d4 l, _' m* i! B; Y5.18 TIMx 全传输 DMA 地址 (TIMx_DMAR)
9 K  X0 p1 X. v: k% t# JTIMx DMA address for full transfer
! J9 G: p/ u$ X. E偏移地址:0x4C! p9 G3 a( w$ @
复位值:0x0000  [' l, s% _5 X2 \
1 R/ ^" q5 p$ [7 F- I
20200825203227355.png - r9 t5 R( D$ i
, u& o2 s) D8 X! ~' c
5.19 TIM2 选项寄存器 (TIM2_OR)
7 _. C/ p, T$ k) D" }' a( b1 o0 YTIM2 option register
0 D- L! R+ ?3 \' n- P" e. ?  I偏移地址:0x50  ?: H" p1 t+ e, o
复位值:0x0000
3 `; ]1 e3 z4 n9 k3 X1 s: h3 r
& `( T$ v6 j. ?4 }5 g# Y 20200825203239310.png " ?8 B4 f  @% A) \; s
# ^( F0 ^. X6 l
5.20 TIM5 选项寄存器 (TIM5_OR), d  D7 E( Y5 u6 r1 j( \) ]
TIM5 option register
0 ^1 j+ K/ L: ]偏移地址:0x50
7 y! |+ E% ~' Z复位值:0x0000
! j( A& S$ B: l! L- i- x! l3 v
0 s7 Z! E. U! Q 20200825203246817.png
! z7 D+ q0 z; b& J
( z/ B* Z0 c. ^$ o; ^/ x3 q. y7 F4 H& q) W7 t# |% ?$ C+ b. |
- z, c8 k. {: j* ?5 W: V
+ }5 p: s; O. T- t/ Q
赞 收藏 评论0 发布时间:2022-6-13 17:33

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版