STMCU小助手
发布时间:2022-6-13 17:33
|
01. 通用定时器简介 通用定时器包含一个 16 位或 32 位自动重载计数器,该计数器由可编程预分频器驱动。 它们可用于多种用途,包括测量输入信号的脉冲宽度( 输入捕获 )或生成输出波形( 输出比较和 PWM)。 使用定时器预分频器和 RCC 时钟控制器预分频器,可将脉冲宽度和波形周期从几微秒调制到几毫秒。+ s7 M1 W7 N: k # d1 w- _" a ?; S9 X5 w5 F; T 这些定时器彼此完全独立,不共享任何资源。! {0 b+ \2 s6 v. V7 j% {& f 02. TIM2到TIM5主要特性 通用 TIMx 定时器具有以下特性:. o) N8 W ]$ c- T4 i* X2 A+ M ● 16 位(TIM3 和 TIM4)或 32 位(TIM2 和 TIM5) 递增、递减和递增/递减自动重载计数器。/ z; }$ ?/ H% b) I# l ● 16 位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数介于 1 到 65536 之间。 ● 多达 4 个独立通道,可用于:& _! T$ i' Y/ S- `$ V- K8 H — 输入捕获 — 输出比较1 G n2 q2 M' G+ b6 S. I — PWM 生成(边沿和中心对齐模式) — 单脉冲模式输出 ● 使用外部信号控制定时器且可实现多个定时器互连的同步电路。; |' w! x/ g* z ● 发生如下事件时生成中断/DMA 请求: — 更新:计数器上溢/下溢、计数器初始化(通过软件或内部/外部触发) — 触发事件(计数器启动、停止、初始化或通过内部/外部触发计数) — 输入捕获 — 输出比较 ● 支持定位用增量(正交)编码器和霍尔传感器电路 ● 外部时钟触发输入或逐周期电流管理. \/ F6 @3 i4 V7 }" {( p 03. TIM2到TIM5功能说明 时基单元 Z! v( X& j4 \$ [" }5 J1 U G & r# P# S5 ~! y \ 可编程定时器的主要模块由一个 16 位/32 位计数器及其相关的自动重装寄存器组成。此计数器可采用递增方式计数。计数器的时钟可通过预分频器进行分频。 . T* |9 H6 s% d! `1 D# _ 计数器、自动重载寄存器和预分频器寄存器可通过软件进行读写。即使在计数器运行时也可执行读写操作。0 ~1 x5 c4 @. |& y $ v) J5 h& ]- v- [ 时基单元包括:0 ~1 Z, {9 m, S5 i( N ● 计数器寄存器 (TIMx_CNT) 6 J0 r' b/ w4 _/ b ● 预分频器寄存器 (TIMx_PSC) ● 自动重载寄存器 (TIMx_ARR) 自动重载寄存器是预装载的。对自动重载寄存器执行写入或读取操作时会访问预装载寄存器。预装载寄存器的内容既可以直接传送到影子寄存器,也可以在每次发生更新事件 (UEV)时传送到影子寄存器,这取决于 TIMx_CR1 寄存器中的自动重载预装载使能位 (ARPE)。当计数器达到上溢值(或者在递减计数时达到下溢值)并且 TIMx_CR1 寄存器中的 UDIS 位为0 时,将发送更新事件。该更新事件也可由软件产生。下文将针对各配置的更新事件的产生进行详细介绍。 s v2 q7 V, }% j8 f/ J0 p 计数器由预分频器输出 CK_CNT 提供时钟,仅当 TIMx_CR1 寄存器中的计数器启动位 (CEN)置 1 时,才会启动计数器(有关计数器使能的更多详细信息,另请参见从模式控制器的相关说明)。 9 h. d' N2 O m1 p' j 请注意,真正的计数器使能信号 CNT_EN 在 CEN 置 1 的一个时钟周期后被置 1。 预分频器说明 预分频器可对计数器时钟频率进行分频,分频系数介于 1 到 65536 之间。该预分频器基于16 位/32 位寄存器(TIMx_PSC 寄存器)所控8 V- `$ R* q& E5 ^0 U 制的 16 位计数器。由于该控制寄存器具有缓冲功能,因此预分频器可实现实时更改。而新的预分频比将在下一更新事件发生时被采用。 图 120 和 图 121 给出了在预分频比发生实时变化时一些计数器行为的示例:2 a* _- G" `# J) m( P 预分频器分频由 1 变为 2 时的计数器时序图3 @9 O( K: }) X. M8 @ 1 I E5 U1 {" \, b
% R2 k, q5 U/ s/ T 预分频器分频由 1 变为 4 时的计数器时序图
计数器模式2 p7 E" \! O! u- { 递增计数模式 A- d7 L L0 ?# j3 ~5 U , n6 k) z( m: @% V 在递增计数模式下,计数器从 0 计数到自动重载值(TIMx_ARR 寄存器的内容),然后重新从 0 开始计数并生成计数器上溢事件。 递减计数模式8 X: [) y3 J0 Z 在递减计数模式下,计数器从自动重载值(TIMx_ARR 寄存器的内容)开始递减计数到 0,然后重新从自动重载值开始计数并生成计数器 下溢事件。& _. L r# S& O- P5 v; H 中心对齐模式(递增/ 递减计数) 在中心对齐模式下,计数器从 0 开始计数到自动重载值(TIMx_ARR 寄存器的内容)— 1,生成计数器上溢事件;然后从自动重载值开始/ O: X6 d3 O5 U ) Q4 q# ?9 b! P" l& e: m G9 k 向下计数到 1 并生成计数器下溢事件。之后从0 开始重新计数。$ V8 j; ?8 d6 V2 B5 X* c, ? 4 M$ i! p3 q( V# r ` 04. 时钟选择 u/ Z- E @& r: k7 i5 `# o3 D 计数器时钟可由下列时钟源提供:: j' }2 X* W# s/ m% o1 c % z7 |: ?8 g4 v ● 内部时钟 (CK_INT) 2 ]5 M% A8 V7 x6 g ● 外部时钟模式 1:外部输入引脚 (TIx) 6 K* F( a) B6 A7 p9 T' j ● 外部时钟模式 2:外部触发输入 (ETR),仅适用于 TIM2、TIM3 和 TIM4。6 W5 U3 Q/ B; _; M2 G0 ? ● 内部触发输入 (ITRx):使用一个定时器作为另一个定时器的预分频器,例如可以将定时器配置为定时器 2 的预分频器。 ) t' R0 @. Y* r1 d6 a2 [' K! n 05. 寄存器 5.1 TIMx 控制寄存器 1 (TIMx_CR1) TIMx control register 13 l& }+ V/ y {# e 偏移地址:0x000 G+ w, U4 I8 _% o. b. C( I 复位值:0x0000
" [6 Y. C. C8 Y) n, K. z% A4 j 5.2 TIMx 控制寄存器 2 (TIMx_CR2) TIMx control register 27 L& I- [/ ~; U& T3 s5 y3 O8 e 偏移地址:0x048 ~4 M1 t* b X0 | 复位值:0x0000: N# Q3 z; ] o4 T 0 O* G! V( h% F) P$ B/ F" ]3 l
5.3 TIMx 从模式控制寄存器 (TIMx_SMCR)6 K0 U; w" e9 |" A z TIMx slave mode control register 偏移地址:0x08 f2 G" [! N2 A0 ] 复位值:0x0000$ v1 ?. D* _7 c9 G
5.4 TIMx DMA/ 中断使能寄存器 (TIMx_DIER) TIMx DMA/Interrupt enable register 偏移地址:0x0C 复位值:0x0000
5.5 TIMx 状态寄存器 (TIMx_SR)+ _8 W( j d- N4 {0 P TIMx status register4 R4 u$ t7 q: v! ] I) x 偏移地址:0x10 复位值:0x0000* A- _+ R- H3 t& z9 n9 b ! k1 k2 a. O9 _$ J' @" }
" A l) L0 `: H. v$ n0 M 5.6 TIMx 事件生成寄存器 (TIMx_EGR): `7 o! [$ s8 F, e3 x) k TIMx event generation register 偏移地址:0x14" H: L1 g* ~. o, O/ g3 | 复位值:0x0000
" g& J3 L" f; R+ p, |7 I 5.7 TIMx 捕获/ 比较模式寄存器 1 (TIMx_CCMR1) TIMx capture/compare mode register 1 偏移地址:0x18; s0 _6 G0 b; A8 R U4 X 复位值:0x0000- N) f8 w; J, P' q0 J! c
5.8 TIMx 捕获/ 比较模式寄存器 2 (TIMx_CCMR2)' M4 z8 p# }; }" k) t! s" J7 N# p TIMx capture/compare mode register 2, h; b; r6 u3 Q o 偏移地址:0x1C 复位值:0x0000 , |' j) ~ O/ D! i4 ]
5.9 TIMx 捕获/ 比较使能寄存器 (TIMx_CCER) TIMx capture/compare enable register0 u9 v/ A9 W+ {2 X% ^$ _ 偏移地址:0x20 复位值:0x0000 5 }- ]0 R, }2 y+ k
& o! _# _: \6 t9 w+ F) _6 H& f- Y 5.10 TIMx 计数器 (TIMx_CNT) TIMx counter1 v9 J3 b: l. H. g, Z/ z 偏移地址:0x241 x, f2 \7 v, q$ G% `( X: o+ J: L 复位值:0x00008 U/ @% t/ b+ L, q) A6 C
: e# X5 A4 f# J% ]1 y, _ 5.11 TIMx 预分频器 (TIMx_PSC) TIMx prescaler 偏移地址:0x28 复位值:0x0000
9 }" s' M5 n* e& v, Y/ r 5.12 TIMx 自动重载寄存器 (TIMx_ARR)- ~# F$ m+ a: ?# W: N- c TIMx auto-reload register+ Q$ K$ w$ a: e+ N9 W 偏移地址:0x2C 复位值:0x00007 ]2 w* b& `) B% J& l ' C/ l& T4 \7 F# t
5.13 TIMx 捕获/ 比较寄存器 1 (TIMx_CCR1) TIMx capture/compare register 1 偏移地址:0x34 复位值:0x0000 000 " s' R% L. {7 p1 A0 Z( c) b) L 5.14 TIMx 捕获/ 比较寄存器 2 (TIMx_CCR2). x" Q. e2 r5 f" N' Z TIMx capture/compare register 2 偏移地址:0x38 复位值:0x0000 0000
% L7 J; x* d' _ f- Y* R( e( q( m 5.15 TIMx 捕获/ 比较寄存器 3 (TIMx_CCR3) TIMx capture/compare register 3 偏移地址:0x3C' g( w1 m Z d4 |( X+ t6 ~ 复位值:0x0000 0000
! {, f* V7 r8 M8 A9 y6 z7 b 5.16 TIMx 捕获/ 比较寄存器 4 (TIMx_CCR4)3 S5 ]: H9 Q5 s7 r6 Y+ Z! K/ B' M TIMx capture/compare register 4# l$ W( m9 d2 t# v- U) k* P+ R8 y 偏移地址:0x40 复位值:0x0000 00008 h+ x1 R E& y" L9 \1 |
5.17 TIMx DMA 控制寄存器 (TIMx_DCR) TIMx DMA control register 偏移地址:0x48 复位值:0x0000 ' O) M$ c( d4 u4 [
) h9 {. e, ]0 C( [ 5.18 TIMx 全传输 DMA 地址 (TIMx_DMAR) TIMx DMA address for full transfer1 @; Y) ^2 |* z$ Z, ^6 | 偏移地址:0x4C 复位值:0x0000 5 G, L( c. m* H- f2 ? F' q7 U
5.19 TIM2 选项寄存器 (TIM2_OR). {0 \$ n0 y9 u) f4 _0 X TIM2 option register$ R, s1 z: j& ` 偏移地址:0x50 复位值:0x0000 5 Y' N, V5 _" h, Q6 c
# \% q3 g7 ~' ~( u6 ~ 5.20 TIM5 选项寄存器 (TIM5_OR)" o; H r0 Z3 S& G TIM5 option register' f5 _) k5 m# Q# ^ m' w3 s 偏移地址:0x50 复位值:0x0000 9 d5 C/ ?* N) c% i
) d6 L* R! j9 _; @1 f' W3 P0 x/ w$ d * h3 l* \5 R9 v8 \% \ g% d# M" W4 i0 a* R. D |
想找个ST芯片
[GPIO] 使用新型抽象开始C++嵌入式编程,从GPIO开始
技术手册stm32f1xx中的一个小问题
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
OpenSTLinux 6.1发布:M33-TD加持+安全升级,STM32MPU开发效率翻倍!
微信公众号
手机版