STMCU小助手
发布时间:2022-6-13 17:33
|
01. 通用定时器简介 通用定时器包含一个 16 位或 32 位自动重载计数器,该计数器由可编程预分频器驱动。. i# i3 J9 h+ H+ ` & e8 O- f. t, n" Q I3 I 它们可用于多种用途,包括测量输入信号的脉冲宽度( 输入捕获 )或生成输出波形( 输出比较和 PWM)。 使用定时器预分频器和 RCC 时钟控制器预分频器,可将脉冲宽度和波形周期从几微秒调制到几毫秒。; j9 L) O3 m9 B5 Q' O9 w$ n* x 这些定时器彼此完全独立,不共享任何资源。 02. TIM2到TIM5主要特性9 F! D% z c5 Z) ?' N 通用 TIMx 定时器具有以下特性: ● 16 位(TIM3 和 TIM4)或 32 位(TIM2 和 TIM5) 递增、递减和递增/递减自动重载计数器。 ● 16 位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数介于 1 到 65536 之间。 ● 多达 4 个独立通道,可用于:% @1 J9 t6 w/ y8 v) v — 输入捕获 — 输出比较& F6 o' T" g6 `4 ~* s5 x# l( m — PWM 生成(边沿和中心对齐模式) — 单脉冲模式输出 B& ?/ Y" i( I: h ● 使用外部信号控制定时器且可实现多个定时器互连的同步电路。2 ]. p. J3 Y; c* K F ● 发生如下事件时生成中断/DMA 请求: — 更新:计数器上溢/下溢、计数器初始化(通过软件或内部/外部触发) v* b5 T7 o% ?" r/ s8 j2 Q2 i. M — 触发事件(计数器启动、停止、初始化或通过内部/外部触发计数) — 输入捕获 — 输出比较 ● 支持定位用增量(正交)编码器和霍尔传感器电路 ● 外部时钟触发输入或逐周期电流管理% 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 时基单元 2 x, R' S( }) k3 ~' `. O6 e 可编程定时器的主要模块由一个 16 位/32 位计数器及其相关的自动重装寄存器组成。此计数器可采用递增方式计数。计数器的时钟可通过预分频器进行分频。: n6 @4 z5 I4 `/ _ ; i4 l9 ?( F$ |/ N7 _& ^ 计数器、自动重载寄存器和预分频器寄存器可通过软件进行读写。即使在计数器运行时也可执行读写操作。 时基单元包括:! A, D4 i$ G3 C+ Y+ h ● 计数器寄存器 (TIMx_CNT) G# \& [7 @% [6 _8 J% ?+ A# _" J8 K ● 预分频器寄存器 (TIMx_PSC)) N" M& N8 V# T " ~% M. ^$ z" d ● 自动重载寄存器 (TIMx_ARR) , K; s# T! z8 F5 E" ?# w( Z* N 自动重载寄存器是预装载的。对自动重载寄存器执行写入或读取操作时会访问预装载寄存器。预装载寄存器的内容既可以直接传送到影子寄存器,也可以在每次发生更新事件 (UEV)时传送到影子寄存器,这取决于 TIMx_CR1 寄存器中的自动重载预装载使能位 (ARPE)。当计数器达到上溢值(或者在递减计数时达到下溢值)并且 TIMx_CR1 寄存器中的 UDIS 位为0 时,将发送更新事件。该更新事件也可由软件产生。下文将针对各配置的更新事件的产生进行详细介绍。# J/ g# N# J1 i; O. o 计数器由预分频器输出 CK_CNT 提供时钟,仅当 TIMx_CR1 寄存器中的计数器启动位 (CEN)置 1 时,才会启动计数器(有关计数器使能的更多详细信息,另请参见从模式控制器的相关说明)。 请注意,真正的计数器使能信号 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 } 预分频器可对计数器时钟频率进行分频,分频系数介于 1 到 65536 之间。该预分频器基于16 位/32 位寄存器(TIMx_PSC 寄存器)所控 制的 16 位计数器。由于该控制寄存器具有缓冲功能,因此预分频器可实现实时更改。而新的预分频比将在下一更新事件发生时被采用。 3 d+ K t1 w/ `& b ~) b4 n 图 120 和 图 121 给出了在预分频比发生实时变化时一些计数器行为的示例: 1 W& r9 r- g7 |% O& G 预分频器分频由 1 变为 2 时的计数器时序图
' Q! S+ `. B5 N4 f$ R 预分频器分频由 1 变为 4 时的计数器时序图. x0 H: O" S5 U0 z+ c" K+ ` % N9 [/ A- d/ z" L4 [. B( b
计数器模式7 C" e: r# ^/ ~ 递增计数模式 在递增计数模式下,计数器从 0 计数到自动重载值(TIMx_ARR 寄存器的内容),然后重新从 0 开始计数并生成计数器上溢事件。 : l, d1 m7 |9 T+ n 递减计数模式( w6 X8 G9 v+ m+ q0 O $ ]* b; f' c/ @7 C5 t: n- W 在递减计数模式下,计数器从自动重载值(TIMx_ARR 寄存器的内容)开始递减计数到 0,然后重新从自动重载值开始计数并生成计数器 6 V* U, b. P/ C. b- j 下溢事件。 中心对齐模式(递增/ 递减计数)/ 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 向下计数到 1 并生成计数器下溢事件。之后从0 开始重新计数。' }# M" s* C) t( y# m 04. 时钟选择 计数器时钟可由下列时钟源提供:- B! y* i$ R% g* z' m2 { ● 内部时钟 (CK_INT) ● 外部时钟模式 1:外部输入引脚 (TIx)! t/ a& M$ e( K7 R0 n ● 外部时钟模式 2:外部触发输入 (ETR),仅适用于 TIM2、TIM3 和 TIM4。 ● 内部触发输入 (ITRx):使用一个定时器作为另一个定时器的预分频器,例如可以将定时器配置为定时器 2 的预分频器。 05. 寄存器* W% G( d) o: ~: X# s3 l: n1 f 5.1 TIMx 控制寄存器 1 (TIMx_CR1) 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
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 偏移地址:0x04& @3 [9 Z: v2 [1 z 复位值:0x0000) _- t2 V( |4 q- k+ Y! x
4 k( `: o4 T7 Q+ g Z V/ _ 5.3 TIMx 从模式控制寄存器 (TIMx_SMCR) TIMx slave mode control register 偏移地址:0x08 复位值:0x0000: e; i7 R9 D% N 7 j7 Y. K _; r* D
4 X$ r0 E5 z1 a3 L 5.4 TIMx DMA/ 中断使能寄存器 (TIMx_DIER) TIMx DMA/Interrupt enable register 偏移地址:0x0C 复位值:0x0000
5.5 TIMx 状态寄存器 (TIMx_SR) TIMx status register 偏移地址:0x10 复位值:0x0000
) 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 偏移地址:0x146 \) H' S! ~" p" F" f 复位值:0x0000
5.7 TIMx 捕获/ 比较模式寄存器 1 (TIMx_CCMR1) TIMx capture/compare mode register 1 偏移地址:0x18 复位值:0x0000; [) a- o% x' c; S# t1 U( g$ W2 ?* f& l2 ` ) W: r; r' c2 A% O3 K
5.8 TIMx 捕获/ 比较模式寄存器 2 (TIMx_CCMR2) TIMx capture/compare mode register 2 偏移地址:0x1C 复位值:0x0000
" F, T' `6 \$ U6 m2 }% [ 5.9 TIMx 捕获/ 比较使能寄存器 (TIMx_CCER) 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
5.10 TIMx 计数器 (TIMx_CNT), k6 J* \9 F4 J TIMx counter% p1 B8 S$ p3 p: }1 E" i# S! V1 P 偏移地址:0x24 复位值:0x0000
5.11 TIMx 预分频器 (TIMx_PSC) TIMx prescaler) C" g- s: E' t P6 a 偏移地址:0x28 复位值:0x0000! W F3 s& h1 m0 s
5.12 TIMx 自动重载寄存器 (TIMx_ARR) TIMx auto-reload register& R6 O8 x2 ~6 g: g8 Q. N 偏移地址:0x2C 复位值:0x0000 & U, L) W, k# q8 h S' J
& 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 复位值:0x0000 0007 N7 W& m0 D: Q, t/ V! D/ Z( U$ \ 4 N8 b8 l# {! l 5.14 TIMx 捕获/ 比较寄存器 2 (TIMx_CCR2) TIMx capture/compare register 2. V* v4 z5 f) P 偏移地址:0x38 复位值:0x0000 0000
^- g, r; ]: x: t5 i* i7 I 5.15 TIMx 捕获/ 比较寄存器 3 (TIMx_CCR3) TIMx capture/compare register 3 偏移地址:0x3C+ q' j8 o; i7 h. z# N' K5 F* D 复位值:0x0000 00003 G. u+ P) y! n9 D$ o6 i
% }, a6 |( }% w- S4 v& Y& P& u 5.16 TIMx 捕获/ 比较寄存器 4 (TIMx_CCR4) TIMx capture/compare register 4 偏移地址:0x40 复位值:0x0000 0000 1 ?# g, e# k P4 o
! c3 U9 v( m: R7 c! d) j 5.17 TIMx DMA 控制寄存器 (TIMx_DCR) TIMx DMA control register6 c* m; {' \/ e. K. N y5 F- y 偏移地址:0x48 复位值:0x0000 G& L/ |6 _( `) L2 B+ e0 y 2 j T( o \* j. c6 O2 ?/ x
5.18 TIMx 全传输 DMA 地址 (TIMx_DMAR) TIMx DMA address for full transfer 偏移地址:0x4C! p9 G3 a( w$ @ 复位值:0x0000 [' l, s% _5 X2 \ 1 R/ ^" q5 p$ [7 F- I
, u& o2 s) D8 X! ~' c 5.19 TIM2 选项寄存器 (TIM2_OR) TIM2 option register 偏移地址:0x50 ?: H" p1 t+ e, o 复位值:0x0000
# ^( F0 ^. X6 l 5.20 TIM5 选项寄存器 (TIM5_OR), d D7 E( Y5 u6 r1 j( \) ] TIM5 option register 偏移地址:0x50 复位值:0x0000
7 F4 H& q) W7 t# |% ?$ C+ b. | - z, c8 k. {: j* ?5 W: V + }5 p: s; O. T- t/ Q |
【经验分享】STM32语音识别的智能蓝牙音箱(源程序+原理图+PCB+设计说明书+PPT)
想找个ST芯片
[GPIO] 使用新型抽象开始C++嵌入式编程,从GPIO开始
技术手册stm32f1xx中的一个小问题
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
微信公众号
手机版