01. TIM概述
' i8 g- z! {; e3 T) V* _5 [stm32f4xx_tim.h和stm32f4xx_tim.c文件中5 h% |/ |; u# @# J+ A
& A$ ^. A7 m5 \! _ b3 p/ E7 i02. 相关类型
a+ i) v0 v% z) W$ c; h9 `# t+ p* ETIM_TimeBaseInitTypeDef3 F( m9 K H5 ~+ U8 D5 R! a' h
3 y! \; o; x ~# b- /**
- U; q; a2 o7 x w - * @brief TIM Time Base Init structure definition , I+ `, t+ y/ X2 N/ a) w- `
- * @note This structure is used with all TIMx except for TIM6 and TIM7.
. {( \) L% l& V+ m8 Z - */
* M b2 l# V* ]; v* d! g
9 _0 M6 M# U- T( n1 K- typedef struct
! u) e7 B) ?# G7 ^ - {
" j0 B! Z9 `0 J9 d/ E6 h - uint16_t TIM_Prescaler; /*!< Specifies the prescaler value used to divide the TIM clock.$ s+ o) A$ K/ j/ M8 T
- This parameter can be a number between 0x0000 and 0xFFFF */
$ Z% C* _, ^1 x) o - ( N# J7 ~* g! Z! G1 I
- uint16_t TIM_CounterMode; /*!< Specifies the counter mode.& Y9 O3 w6 @" r! V
- This parameter can be a value of @ref TIM_Counter_Mode */. `5 d0 h& J4 i3 y
- $ f( \9 N5 T. _* Z% f \1 G
- uint32_t TIM_Period; /*!< Specifies the period value to be loaded into the active
' O6 ~9 f4 u# Z/ J9 |: ? - Auto-Reload Register at the next update event.
5 l. k1 A: T4 X# H3 l8 d. N - This parameter must be a number between 0x0000 and 0xFFFF. */
& E: [ p, {: o- e. z7 E
3 j) m( f+ ?- s }- uint16_t TIM_ClockDivision; /*!< Specifies the clock division.1 e. V2 B7 w3 b% ~
- This parameter can be a value of @ref TIM_Clock_Division_CKD */8 Q& u' u8 z0 q G! l E- R
" l% t. W9 {6 H- uint8_t TIM_RepetitionCounter; /*!< Specifies the repetition counter value. Each time the RCR downcounter6 W( O' J' U" M+ v4 A3 e1 g( ?* [
- reaches zero, an update event is generated and counting restarts' J G) s% [1 s- a+ {
- from the RCR value (N).
3 q4 M3 [0 W: T2 X# S; y! \/ C - This means in PWM mode that (N+1) corresponds to:9 _8 h6 y( u: ]5 @% d
- - the number of PWM periods in edge-aligned mode
2 E4 ^' V' O2 \. m* l- H - - the number of half PWM period in center-aligned mode5 e) @4 E5 |, f" I
- This parameter must be a number between 0x00 and 0xFF. 1 N0 o9 I% a# C% G$ N3 K% s! {
- @note This parameter is valid only for TIM1 and TIM8. */
! h+ L- c p. [ - } TIM_TimeBaseInitTypeDef;
复制代码
3 H" \5 X2 j2 Y5 F& g8 }1 ~8 hTIM_OCInitTypeDef
; p; ]( s3 E/ F& r- P
1 H* B1 q4 P& s- /** i0 [$ V& a; w( `( O" q
- * @brief TIM Output Compare Init structure definition * ~- K- M y3 g; e4 D6 h( f
- */% e" h. @) }9 Q0 c: e% C& i5 q* r7 l5 V5 Y
- 3 ?2 E B2 A& t2 F, o+ `3 ^) k
- typedef struct8 H; K% r: r2 X H
- {7 o4 p; D U3 |* w
- uint16_t TIM_OCMode; /*!< Specifies the TIM mode.* j2 q' O. H) m+ a
- This parameter can be a value of @ref TIM_Output_Compare_and_PWM_modes */3 k# d# P0 r$ l2 a0 z" x, D
- + T6 J: M7 V) X+ N7 t
- uint16_t TIM_OutputState; /*!< Specifies the TIM Output Compare state.
1 _# D6 E6 d/ D' R& l/ r - This parameter can be a value of @ref TIM_Output_Compare_State */
& i9 _& g1 Y4 [
, e! A' `" ^0 W' }. U* ?5 C- uint16_t TIM_OutputNState; /*!< Specifies the TIM complementary Output Compare state.' E4 l; X# J7 V" s8 V
- This parameter can be a value of @ref TIM_Output_Compare_N_State
- F2 L1 y S& u0 c3 k# f ~: L7 Q - @note This parameter is valid only for TIM1 and TIM8. */' l+ g: M. m2 s/ y$ M1 ~, Z7 F3 L
- 7 d) o Z8 T2 m! t
- uint32_t TIM_Pulse; /*!< Specifies the pulse value to be loaded into the Capture Compare Register. , v2 y7 ]/ s2 h* e( t5 l H: c
- This parameter can be a number between 0x0000 and 0xFFFF */; Y; X$ `5 C" p: B e i$ |& K; g
- " K* [! p1 }* m: B' @; S$ m* T9 l4 s
- uint16_t TIM_OCPolarity; /*!< Specifies the output polarity.( l9 S) Y: r1 X5 k I
- This parameter can be a value of @ref TIM_Output_Compare_Polarity */. |0 O! ~8 O$ H9 }. f
! C3 f. a; T; ^3 g: s O, ]- uint16_t TIM_OCNPolarity; /*!< Specifies the complementary output polarity.
$ i3 J Y3 t) `$ n - This parameter can be a value of @ref TIM_Output_Compare_N_Polarity: o8 q8 i: ?* d# C; y8 U- G' h
- @note This parameter is valid only for TIM1 and TIM8. */
3 U- y0 v8 t3 a0 t. U Q* L - 5 c1 Q' V/ ?9 A3 N) T+ D$ F3 U
- uint16_t TIM_OCIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state.
1 `6 K0 s0 f/ S# }6 }2 |) p! U - This parameter can be a value of @ref TIM_Output_Compare_Idle_State; c9 l- s* j/ Z" e: k+ A
- @note This parameter is valid only for TIM1 and TIM8. */, w p' P, w; z: O" e
- ; V7 A3 K; g! v- ?6 q
- uint16_t TIM_OCNIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state.) w% A0 x' T$ H
- This parameter can be a value of @ref TIM_Output_Compare_N_Idle_State0 r8 H& p4 f5 S1 o
- @note This parameter is valid only for TIM1 and TIM8. */7 o: w8 ^! ^+ X: l
- } TIM_OCInitTypeDef;
复制代码 8 ?5 S5 j9 I+ ~) F6 J6 q9 b- L
TIM_ICInitTypeDef
' h; E& l8 _% Z O }$ ?( m2 _( e2 d# \; O7 w0 w( {* B( K+ U; T$ I1 G
- /**
0 J9 P! v5 {0 C% r - * @brief TIM Input Capture Init structure definition
5 q2 K% U- o; |5 \# w3 t' ?+ A - */
- t9 O1 u6 S" J# \5 o/ \5 n1 T/ i
1 _& {$ }+ [8 S- typedef struct, [$ g& M& _2 B1 @# K) ^4 P
- {; e' z S6 Y9 O6 E/ G2 |
/ p- I$ s6 x% r/ p1 n- uint16_t TIM_Channel; /*!< Specifies the TIM channel.7 j8 u* |) f/ l
- This parameter can be a value of @ref TIM_Channel */
H0 {& S. ?9 j, B1 |- M- G9 O6 ] - 6 X! ?9 S2 {' K/ L. ~
- uint16_t TIM_ICPolarity; /*!< Specifies the active edge of the input signal.
3 d9 g1 S" z- Z) s( N - This parameter can be a value of @ref TIM_Input_Capture_Polarity */& n. i' h; i+ A3 J
- * V5 d) Z; u: ?" Y* |
- uint16_t TIM_ICSelection; /*!< Specifies the input.$ }+ v# a' E8 |$ J6 j9 W* U
- This parameter can be a value of @ref TIM_Input_Capture_Selection */
! \5 ~: ` E2 f. Q9 Y ] N
8 P: F Z. s) `8 I, t- uint16_t TIM_ICPrescaler; /*!< Specifies the Input Capture Prescaler.9 ` }7 k7 p0 u- |9 z
- This parameter can be a value of @ref TIM_Input_Capture_Prescaler */0 K o0 T, t4 B! A' ]
- 8 g$ C( M5 k# V# }
- uint16_t TIM_ICFilter; /*!< Specifies the input capture filter.. B/ N) f& \! J! M' o f0 b- N
- This parameter can be a number between 0x0 and 0xF */% b5 J$ o6 z2 L& \# n
- } TIM_ICInitTypeDef;
复制代码 + o! {. B8 P) w/ R; O
TIM_BDTRInitTypeDef
/ h6 _6 L Y6 ? ^( d. k N; ?0 v) [+ M% p! f$ ~' }! N$ O
- /**
% E( r) s" z, _' r& d - * @brief BDTR structure definition " c) H/ t6 p# w( q3 K+ X0 K& o
- * @note This structure is used only with TIM1 and TIM8. 6 T* s7 Z) A' D Z3 P" _
- */
o! t V$ d5 a5 R. Z$ p- T/ F- ?
1 j( V8 P2 w. i c" t- typedef struct# M# A: H0 f& w2 K6 P
- {
! M+ x: k. ^) I* U7 s# d# w - ' L3 |) ?2 s+ U, U8 {9 P
- uint16_t TIM_OSSRState; /*!< Specifies the Off-State selection used in Run mode." L# d- |: b" v5 V# ~
- This parameter can be a value of @ref TIM_OSSR_Off_State_Selection_for_Run_mode_state */
7 T* m0 r6 _0 T
: k2 u S$ n* C# f- uint16_t TIM_OSSIState; /*!< Specifies the Off-State used in Idle state.* Z1 l" I% Z7 C* h0 }+ P1 n8 _
- This parameter can be a value of @ref TIM_OSSI_Off_State_Selection_for_Idle_mode_state */; N+ k8 S5 F) M+ _+ l' ]* V
* @6 u5 q; ^3 R: A- uint16_t TIM_LOCKLevel; /*!< Specifies the LOCK level parameters.- Q' W& c9 S7 n& \; {
- This parameter can be a value of @ref TIM_Lock_level */ & L, M1 B; j. Y) S8 I. T
- 8 s$ j/ i& m/ u$ x' i
- uint16_t TIM_DeadTime; /*!< Specifies the delay time between the switching-off and the
8 w6 {( x* }! u - switching-on of the outputs., Q9 _# Y% S! s" ]0 d
- This parameter can be a number between 0x00 and 0xFF */
/ ]5 [3 }8 O7 S8 h; z( c
6 D. G3 |; }' H0 `7 s+ r: F- uint16_t TIM_Break; /*!< Specifies whether the TIM Break input is enabled or not.
" Z3 a0 W$ A! B9 } - This parameter can be a value of @ref TIM_Break_Input_enable_disable */
9 m/ ]3 ~* o! t: |: N - * T, g( t V8 s+ m, C4 c; z
- uint16_t TIM_BreakPolarity; /*!< Specifies the TIM Break Input pin polarity.
]+ H: @& E3 z% Q8 t# n* M |! h8 X - This parameter can be a value of @ref TIM_Break_Polarity */
' L& c. w6 T4 j' m: Q/ a
% s& W. c' A4 Z6 J A6 x- uint16_t TIM_AutomaticOutput; /*!< Specifies whether the TIM Automatic Output feature is enabled or not. * s* l4 n! @' ` |
- This parameter can be a value of @ref TIM_AOE_Bit_Set_Reset */
8 L G! [* z* q5 ?7 l& M - } TIM_BDTRInitTypeDef;
复制代码
9 G& v4 c* M& ]- G- N. C& H T; M7 `TIM2 K1 i/ B) Z" {+ ?2 b5 I7 }
$ ^0 J/ D3 k# b6 l7 s- /** @defgroup TIM_Exported_constants
0 |6 c- e! v" X. C: O5 H - * @{
c$ j! r5 e$ ?$ t1 M. m } - */
( l5 }2 o7 u x% O1 e1 h8 s {3 Q7 N
9 v% [ t+ {# |: G, R+ e. S+ h- #define IS_TIM_ALL_PERIPH(PERIPH) (((PERIPH) == TIM1) || \& x& Y) _6 V f) t
- ((PERIPH) == TIM2) || \
0 H7 p) n# K# {$ g - ((PERIPH) == TIM3) || \
& V3 C; ?1 d3 ]2 F/ f: G6 J - ((PERIPH) == TIM4) || \0 U4 ^$ R9 u2 S/ T
- ((PERIPH) == TIM5) || \
6 g" C& w! w% u8 Y - ((PERIPH) == TIM6) || \
) Y3 }" M$ c" K" D - ((PERIPH) == TIM7) || \
2 Z7 q! ?' X5 O& B# t7 } - ((PERIPH) == TIM8) || \' z. n/ C. Q a2 M& G/ M& Q
- ((PERIPH) == TIM9) || \
* j( A! U& U7 L! z* v - ((PERIPH) == TIM10) || \
8 E% o4 f, \; Z& Y( `0 D1 m - ((PERIPH) == TIM11) || \: M5 [! J4 g" a# n
- ((PERIPH) == TIM12) || \
: v r$ z9 l [! G" L - (((PERIPH) == TIM13) || \
a$ z; `5 p" ?8 o6 Y - ((PERIPH) == TIM14)))$ @, N7 \# C( {0 L
- /* LIST1: TIM1, TIM2, TIM3, TIM4, TIM5, TIM8, TIM9, TIM10, TIM11, TIM12, TIM13 and TIM14 */ + `) A+ ?7 T L5 d! ]
- #define IS_TIM_LIST1_PERIPH(PERIPH) (((PERIPH) == TIM1) || \" D; o( U! F) Q8 L* T
- ((PERIPH) == TIM2) || \8 ^5 n! z& u. U; ]2 ^+ E
- ((PERIPH) == TIM3) || \
! w1 T6 A+ O! J& u+ f% W - ((PERIPH) == TIM4) || \
, |+ y @& w; r0 _0 h - ((PERIPH) == TIM5) || \
7 j8 H! b+ _2 D9 w. Y) K) o - ((PERIPH) == TIM8) || \
3 v0 j$ _( Q: F2 ]4 |. Y - ((PERIPH) == TIM9) || \
; S: a' [1 l! u7 j& D' v9 ^3 I: d - ((PERIPH) == TIM10) || \0 }( l* C+ Y% H0 C6 a8 O
- ((PERIPH) == TIM11) || \
, [# {# s r' y5 H - ((PERIPH) == TIM12) || \! Z P c, ]& d+ x5 w& G# H
- ((PERIPH) == TIM13) || \/ y8 p# h0 m! s- ^$ h
- ((PERIPH) == TIM14))- z3 R4 S1 r( ~7 w
- 2 z7 X: t, K7 {; k0 L' R0 v9 z
- /* LIST2: TIM1, TIM2, TIM3, TIM4, TIM5, TIM8, TIM9 and TIM12 */
3 [+ ~. x5 S2 O: Y/ f, F - #define IS_TIM_LIST2_PERIPH(PERIPH) (((PERIPH) == TIM1) || \ c# @( Q9 W- m1 u) @1 q9 F
- ((PERIPH) == TIM2) || \& W+ P) C. S' T# M- v
- ((PERIPH) == TIM3) || \
5 `! H$ f! D* S9 @5 K! x - ((PERIPH) == TIM4) || \ C- R* [6 G# S( t- }6 g# I
- ((PERIPH) == TIM5) || \) F5 v( J" f F- f! w3 d/ @2 o c
- ((PERIPH) == TIM8) || \; K: @$ i i& u B1 r5 a
- ((PERIPH) == TIM9) || \
2 B i* `3 I, c6 ~* x% g - ((PERIPH) == TIM12))4 g2 A% B: R$ F# O1 c2 V
- /* LIST3: TIM1, TIM2, TIM3, TIM4, TIM5 and TIM8 */
- R7 Z. T! O( C0 U- {1 M0 R! I - #define IS_TIM_LIST3_PERIPH(PERIPH) (((PERIPH) == TIM1) || \0 c) h; T5 H2 e0 K& o
- ((PERIPH) == TIM2) || \; R8 a' U X6 G/ O3 F8 ?) i5 q
- ((PERIPH) == TIM3) || \5 k3 ~/ y4 U: H4 g
- ((PERIPH) == TIM4) || \
p; z8 u: q5 V2 f T - ((PERIPH) == TIM5) || \
9 ?' w8 B/ m) R - ((PERIPH) == TIM8))+ k3 I! s! Z' w/ J3 d+ A* h
- /* LIST4: TIM1 and TIM8 */: E: B- y: U' ?! B: O& g a$ [8 m% k5 z
- #define IS_TIM_LIST4_PERIPH(PERIPH) (((PERIPH) == TIM1) || \/ z0 \( D, e, t, H' Y7 l
- ((PERIPH) == TIM8))
7 ^& C+ R, E/ v) O6 d% Y# m4 X; d - /* LIST5: TIM1, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7 and TIM8 */
* e- J4 |7 k1 w4 H0 k. y - #define IS_TIM_LIST5_PERIPH(PERIPH) (((PERIPH) == TIM1) || \
. _: m* V2 @- p8 ^6 a - ((PERIPH) == TIM2) || \1 q- u1 H+ \$ S
- ((PERIPH) == TIM3) || \
. n( k% s6 D, A - ((PERIPH) == TIM4) || \& |# ]5 b8 W$ _
- ((PERIPH) == TIM5) || \, q% C5 X8 f1 ^
- ((PERIPH) == TIM6) || \
. E" F; w, x$ X. d1 O - ((PERIPH) == TIM7) || \
5 G. ?6 u$ x* r( K! |3 z" t7 i4 i - ((PERIPH) == TIM8))
& F( b# J9 `, J6 a- r: } - /* LIST6: TIM2, TIM5 and TIM11 */ - D# i3 j( Z. c0 T, E
- #define IS_TIM_LIST6_PERIPH(TIMx)(((TIMx) == TIM2) || \
/ Q6 m5 n( n& \ - ((TIMx) == TIM5) || \
: J! h2 O3 D; J2 O. v" A% u - ((TIMx) == TIM11))
复制代码
0 q. V2 V4 T* T0 |1 z8 b& k" RTIM_Output_Compare_and_PWM_modes
& `& p% S2 w" y% x5 v, i
_, T0 [. F1 V& ]) h- /** @defgroup TIM_Output_Compare_and_PWM_modes 6 Z2 P9 a; f. i, h) f- N& D
- * @{
( N1 m$ X1 n, d; C) ?4 n7 @ - */
" \8 w! T; C: W9 q$ _' q% X
2 g5 p$ C! d) p+ u& O& `- #define TIM_OCMode_Timing ((uint16_t)0x0000)
7 |1 N3 k8 j% g2 y$ r$ Q* h - #define TIM_OCMode_Active ((uint16_t)0x0010)* _+ R a) U1 X. ?% N1 G
- #define TIM_OCMode_Inactive ((uint16_t)0x0020)1 |6 m5 d$ R, \
- #define TIM_OCMode_Toggle ((uint16_t)0x0030)
9 v4 f, s4 W' ]9 D2 E# n; ^8 p - #define TIM_OCMode_PWM1 ((uint16_t)0x0060)
" L- Y. W1 S6 ?& D7 @! i- | - #define TIM_OCMode_PWM2 ((uint16_t)0x0070)2 E3 D; a3 t) f* j' u
- #define IS_TIM_OC_MODE(MODE) (((MODE) == TIM_OCMode_Timing) || \
4 [9 j+ y+ K# c% @ - ((MODE) == TIM_OCMode_Active) || \
$ [# [7 ?; u% S. ^+ O - ((MODE) == TIM_OCMode_Inactive) || \
& r" ~( S" h( p4 N - ((MODE) == TIM_OCMode_Toggle)|| \1 `, O0 {& g$ x) k
- ((MODE) == TIM_OCMode_PWM1) || \8 E, |0 B- b$ z8 `& s6 r+ k' T
- ((MODE) == TIM_OCMode_PWM2))
- n% x, K, p) {& i/ \ ~8 f' Y - #define IS_TIM_OCM(MODE) (((MODE) == TIM_OCMode_Timing) || \1 L: W0 x4 ?3 N8 H
- ((MODE) == TIM_OCMode_Active) || \- @5 J6 @" \, p
- ((MODE) == TIM_OCMode_Inactive) || \. Z$ t: _1 r# n6 v. @
- ((MODE) == TIM_OCMode_Toggle)|| \
^7 b5 ~% }! h - ((MODE) == TIM_OCMode_PWM1) || \" g$ }4 n. k, F& ]; _0 e; `: _
- ((MODE) == TIM_OCMode_PWM2) || \
" W9 Y$ o3 b8 m# g$ H5 n, v - ((MODE) == TIM_ForcedAction_Active) || \
w% j1 E2 J5 U1 a+ m0 p: G; S - ((MODE) == TIM_ForcedAction_InActive))
复制代码
: Q, w# P6 y# j0 H7 m0 E5 r( n, lTIM_One_Pulse_Mode
+ ?3 @ ~/ h3 F6 {
e7 R# O2 G) N' L- /** @defgroup TIM_One_Pulse_Mode
* f, @) m6 `0 t5 Z) v: k3 ^- i' i+ D - * @{
% g& ^' P" `* `# {8 R% h, a% c1 b - */
( a/ p* p: N5 c9 f& k1 H
9 Q" G, D; C" E1 R' q- #define TIM_OPMode_Single ((uint16_t)0x0008)
* s/ d2 H9 k/ C: B" N - #define TIM_OPMode_Repetitive ((uint16_t)0x0000), Q: ^2 i0 Z2 S
- #define IS_TIM_OPM_MODE(MODE) (((MODE) == TIM_OPMode_Single) || \
0 m4 `8 \6 ]. y0 Y+ e8 S: k* G9 y: y - ((MODE) == TIM_OPMode_Repetitive))
复制代码
3 z9 H8 B$ b3 ETIM_Channel
7 d, }6 t t( z* r1 `8 ~/ ^, o) h4 p+ X2 H0 S) I8 y2 }
- /** @defgroup TIM_Channel
z7 R/ S1 F9 g8 e$ H: E* F7 A - * @{, w3 Z, ?$ B3 m! d) J- C$ A! ^
- */
) d) ^$ M# E4 T& u - - |1 f Y2 ]4 Q+ y
- #define TIM_Channel_1 ((uint16_t)0x0000)! N8 l- S2 n; n4 r2 w
- #define TIM_Channel_2 ((uint16_t)0x0004), z- e- Z- X* T/ ~0 e
- #define TIM_Channel_3 ((uint16_t)0x0008)
. O) J. H5 @1 n7 y+ G6 x - #define TIM_Channel_4 ((uint16_t)0x000C)& N# t- `+ J7 F7 E0 i/ k
- , }; c1 e- T) `* G
- #define IS_TIM_CHANNEL(CHANNEL) (((CHANNEL) == TIM_Channel_1) || \
$ R4 J a# E4 v. v - ((CHANNEL) == TIM_Channel_2) || \& F0 \( S5 g' V' |0 s* v$ Q# V2 Q) M
- ((CHANNEL) == TIM_Channel_3) || \
6 f' K2 h: u+ q/ m B/ | - ((CHANNEL) == TIM_Channel_4))3 _+ j$ f2 J0 y6 E+ n, Y. V9 F4 S
$ O- j. o- K% ?- #define IS_TIM_PWMI_CHANNEL(CHANNEL) (((CHANNEL) == TIM_Channel_1) || \7 ]2 i$ {3 |" ~6 T9 j/ ^# i$ j' g
- ((CHANNEL) == TIM_Channel_2)) |6 L) p! H0 e- D
- #define IS_TIM_COMPLEMENTARY_CHANNEL(CHANNEL) (((CHANNEL) == TIM_Channel_1) || \$ w2 l/ m" l( B9 V
- ((CHANNEL) == TIM_Channel_2) || \: \7 z; b( h0 d3 h. o0 a& j2 |
- ((CHANNEL) == TIM_Channel_3))
% R# U5 z( s+ A- @7 z0 B% P
复制代码 : b+ a& w2 j: B& }
TIM_Clock_Division_CKD e* P9 c; Z& i0 A0 Z
3 ^3 {1 k8 I* f7 E8 ?. L- /** @defgroup TIM_Clock_Division_CKD
& l" M; d! V+ m6 @+ I7 @ - * @{- E% H" n- `* |( o' f
- */
* q( o; g! n) a' f/ S% N# h6 E - 0 K9 @8 E" i% Z& U$ C! z
- #define TIM_CKD_DIV1 ((uint16_t)0x0000)
% \4 Y [7 m* c$ L( w# u; J - #define TIM_CKD_DIV2 ((uint16_t)0x0100)6 h2 H, F) h1 y6 u1 y) X
- #define TIM_CKD_DIV4 ((uint16_t)0x0200)
3 {1 D$ H/ m, }% a3 s9 P( ^ - #define IS_TIM_CKD_DIV(DIV) (((DIV) == TIM_CKD_DIV1) || \
* K9 w0 s+ r8 J - ((DIV) == TIM_CKD_DIV2) || \1 W& J5 N6 A0 ~# z1 ]2 y
- ((DIV) == TIM_CKD_DIV4))
复制代码 ; r0 @) `/ ^6 c. x: e+ G
TIM_Counter_Mode# v$ W2 ~/ b1 H8 g4 s, R" H
6 x3 Z7 n# @0 z4 f/ `% e% V
- /** @defgroup TIM_Counter_Mode
+ O" v7 |& r" I. {1 H: s - * @{' u) [, m; S4 r. r: T
- */
0 J/ G) I8 K% |" T- P3 i) J5 N - 0 {1 `+ y% }, Z# E- K
- #define TIM_CounterMode_Up ((uint16_t)0x0000)
% Z+ A7 M, A4 D* x; {- r- R: v - #define TIM_CounterMode_Down ((uint16_t)0x0010)
- F/ J( Z3 b$ r. {2 Z+ z - #define TIM_CounterMode_CenterAligned1 ((uint16_t)0x0020)
0 @8 O$ k" v. I. e& Q - #define TIM_CounterMode_CenterAligned2 ((uint16_t)0x0040)% z$ Z, ` Y, f/ i* ] J
- #define TIM_CounterMode_CenterAligned3 ((uint16_t)0x0060)
1 s4 B6 I) W8 s7 x o5 _* n - #define IS_TIM_COUNTER_MODE(MODE) (((MODE) == TIM_CounterMode_Up) || \
G- M% N' G( m* |8 B# N# U. ` - ((MODE) == TIM_CounterMode_Down) || \
! o" ?7 {) v9 F$ n( V! I - ((MODE) == TIM_CounterMode_CenterAligned1) || \
$ H5 ^1 O& O. s - ((MODE) == TIM_CounterMode_CenterAligned2) || \, V0 y( `3 C6 o* M- M$ C0 i
- ((MODE) == TIM_CounterMode_CenterAligned3))
复制代码
/ x% V+ g8 N. d4 p! B% F2 ]6 iTIM_Output_Compare_Polarity0 R4 |" d" E3 Z- M i
1 \% q2 R; }0 `0 B4 w5 g9 [- /** @defgroup TIM_Output_Compare_Polarity 0 X) O. @7 Q- A. ^+ j
- * @{" Q4 B: k' j9 y8 H
- */8 }* i, ]9 _$ S9 ?1 u6 k- n. J7 o8 [
- ' \; q" d" C7 b* C
- #define TIM_OCPolarity_High ((uint16_t)0x0000)
/ h. F" B7 g3 g2 r# J# M - #define TIM_OCPolarity_Low ((uint16_t)0x0002)3 {3 Y. q s. E! N9 R* S) d* E
- #define IS_TIM_OC_POLARITY(POLARITY) (((POLARITY) == TIM_OCPolarity_High) || \
7 S2 h+ }) O+ {& O. k# [ - ((POLARITY) == TIM_OCPolarity_Low))
复制代码
% e' q4 K1 ~7 v/ T0 w: s. \TIM_Output_Compare_N_Polarity- /** @defgroup TIM_Output_Compare_N_Polarity # J! N0 \/ Z9 E2 k( h
- * @{' M; a! {; ]8 E, i, a
- */
' \( ~ \- K% L& _& V$ y0 {( x5 m
' |+ V+ @) p( N. y- #define TIM_OCNPolarity_High ((uint16_t)0x0000)
- {* T' t; j: Z+ U& { - #define TIM_OCNPolarity_Low ((uint16_t)0x0008)
3 y' H/ J) z m; y7 g - #define IS_TIM_OCN_POLARITY(POLARITY) (((POLARITY) == TIM_OCNPolarity_High) || \$ c: i/ C; `0 A2 z
- ((POLARITY) == TIM_OCNPolarity_Low))
复制代码 : m* U* F( E( k" [. I* N
TIM_Output_Compare_State. u2 V8 H' Q8 v7 Q0 L
( m9 Z( I8 Y3 Q6 Z- /** @defgroup TIM_Output_Compare_State
1 G! n8 p6 o* c: ~1 q# h4 w - * @{
2 y3 t$ x+ i) P( f$ y - */8 [/ v D! _6 Z& l8 @4 R
: w( s' V5 C3 w- #define TIM_OutputState_Disable ((uint16_t)0x0000), J" N* v C/ z
- #define TIM_OutputState_Enable ((uint16_t)0x0001)
4 J: P/ j& W+ V1 ^% Y - #define IS_TIM_OUTPUT_STATE(STATE) (((STATE) == TIM_OutputState_Disable) || \- N- o2 o! ]& w; Q) w) ] }
- ((STATE) == TIM_OutputState_Enable))
复制代码
3 C. O; Z3 \, h kTIM_Output_Compare_N_State& P4 A8 r/ y7 _# b
$ u; k( A( c3 n- /** @defgroup TIM_Output_Compare_N_State- \, s( o6 w) N
- * @{0 b" Z; l7 J- E; ^0 K' P
- */0 M2 W1 n) o5 D- v; `3 }* D
6 V1 o2 }2 f6 F& Z( n% n! V- #define TIM_OutputNState_Disable ((uint16_t)0x0000)
4 }) T7 r' l( q4 d - #define TIM_OutputNState_Enable ((uint16_t)0x0004)
" X9 |4 t" ?2 }$ F- ^; t - #define IS_TIM_OUTPUTN_STATE(STATE) (((STATE) == TIM_OutputNState_Disable) || \! W/ E! B- k5 ~# P1 j: q$ V6 E2 o
- ((STATE) == TIM_OutputNState_Enable))
复制代码 * l1 Y# u" q! j) |' X
TIM_Capture_Compare_State) x6 D* d. W3 v0 z% c" f+ a
3 Z* {; I; v* N9 y! [% J
- /** @defgroup TIM_Capture_Compare_State" _2 Z. d" `' E9 q2 S0 g
- * @{
' x* D- }* M K& a$ \0 u# f0 E9 M - */4 m2 R: R8 Z7 @4 ?# i- n
1 @; `& b6 u0 w; z& ^3 S- #define TIM_CCx_Enable ((uint16_t)0x0001)7 z e/ g0 g. n& C4 {0 x6 G& J
- #define TIM_CCx_Disable ((uint16_t)0x0000)8 s& ]1 |% V- @" w" c L5 O
- #define IS_TIM_CCX(CCX) (((CCX) == TIM_CCx_Enable) || \7 Y1 P! y$ V+ h; Y+ r0 x `8 D
- ((CCX) == TIM_CCx_Disable))
复制代码
) y8 Y! @4 P' }( d8 S' S- U9 KTIM_Capture_Compare_N_State- f( \* v4 \- e3 f
* v" g$ ]: B, c2 y' H' n. I- /** @defgroup TIM_Capture_Compare_N_State
$ J) Y6 M. c7 l& N, D% @9 U- k& B9 G - * @{
8 `6 P4 z! a( V- y% k - */
$ K7 ~, @ L+ v3 d - ; V5 F! R4 F) {* a# K- C. p
- #define TIM_CCxN_Enable ((uint16_t)0x0004)
* d' n& v4 V' N- i - #define TIM_CCxN_Disable ((uint16_t)0x0000)
9 n( A' x8 [) B# g0 c; }( s - #define IS_TIM_CCXN(CCXN) (((CCXN) == TIM_CCxN_Enable) || \# E9 R3 E+ `* G1 T" ^- F; k r
- ((CCXN) == TIM_CCxN_Disable))
复制代码 $ P8 V" @6 t& E5 M' y
TIM_Break_Input_enable_disable
8 K3 b# G- t) z( {" ~* Q$ c1 X5 N, Q' H
- /** @defgroup TIM_Break_Input_enable_disable
, H8 ]& d9 a4 m9 Q - * @{
_, j2 W) R- G0 q6 X1 u - */
1 B' F( z% Z! {! D
) `) M/ X8 f8 F+ f2 J( t- #define TIM_Break_Enable ((uint16_t)0x1000)
4 x9 O9 @0 t: \ - #define TIM_Break_Disable ((uint16_t)0x0000)( h0 ^; [4 P5 b, ~& q
- #define IS_TIM_BREAK_STATE(STATE) (((STATE) == TIM_Break_Enable) || \
9 g, U& E9 f) g9 |* i+ L; B - ((STATE) == TIM_Break_Disable))
复制代码
; Q, G* m d; c; N( J3 j6 DTIM_Break_Polarity
" K! H( V, ]8 t3 E# U4 A3 Y5 X
& N. ^- ~/ H9 b! g- /** @defgroup TIM_Break_Polarity
% o, k) s9 H* C6 P) l, R - * @{
* T/ \# o5 O2 }% R1 {7 C - */* {& V- O5 s% a; o
- 3 q* m2 v6 m% w6 J6 V7 X
- #define TIM_BreakPolarity_Low ((uint16_t)0x0000)
( g8 X. V% \0 J& l4 @$ u - #define TIM_BreakPolarity_High ((uint16_t)0x2000)
' _/ f$ P+ u* F* I4 K- T7 c - #define IS_TIM_BREAK_POLARITY(POLARITY) (((POLARITY) == TIM_BreakPolarity_Low) || \
1 L/ a1 I2 r1 ~ - ((POLARITY) == TIM_BreakPolarity_High))
复制代码
( g) X3 }8 g1 v# L7 XTIM_AOE_Bit_Set_Reset- I, Y9 V2 q2 O6 N9 \& n: s1 X
- /** @defgroup TIM_AOE_Bit_Set_Reset
3 R9 t' l5 ?7 [3 X8 |, p+ i - * @{+ a% R0 P* Z% S. M" S6 y
- */3 l5 f3 U" ]2 _- ]1 }5 Z
- J1 y; b) v4 B! Z0 E- #define TIM_AutomaticOutput_Enable ((uint16_t)0x4000)
: i7 L6 C% f3 p/ _- r z - #define TIM_AutomaticOutput_Disable ((uint16_t)0x0000)
/ F4 S# V; O2 P) `0 t& f& R - #define IS_TIM_AUTOMATIC_OUTPUT_STATE(STATE) (((STATE) == TIM_AutomaticOutput_Enable) || \
+ H7 b4 F z- `7 g1 R/ y9 i: ^ - ((STATE) == TIM_AutomaticOutput_Disable))
复制代码 ; q8 G( h; Z0 R8 q- k) G. j, J( B
TIM_Lock_level
0 r+ j3 B1 z+ ^) Q" p) V$ i0 ~% w v& n$ r9 p+ ~0 @8 ?
- /** @defgroup TIM_Lock_level
- B* T* a$ L$ V$ y1 b8 r% ?. x - * @{
% b1 s5 s; O3 L# g& w( R - */: E5 U, ?* m* F
- . Z) H3 Y0 Q5 h
- #define TIM_LOCKLevel_OFF ((uint16_t)0x0000)
& C1 @) q5 b& |, z1 W& ~ - #define TIM_LOCKLevel_1 ((uint16_t)0x0100)
6 S6 _" L! k2 W/ B- }' L - #define TIM_LOCKLevel_2 ((uint16_t)0x0200)* V5 J3 J" d9 C
- #define TIM_LOCKLevel_3 ((uint16_t)0x0300)
( X* ?& i/ B# B# f/ ] - #define IS_TIM_LOCK_LEVEL(LEVEL) (((LEVEL) == TIM_LOCKLevel_OFF) || \2 j9 W2 r$ v4 ?2 `5 ]
- ((LEVEL) == TIM_LOCKLevel_1) || \3 z3 n1 Z4 v% @* v
- ((LEVEL) == TIM_LOCKLevel_2) || \
. [1 C- n8 m6 R0 C3 n# X( b# E3 G, u; D - ((LEVEL) == TIM_LOCKLevel_3))
复制代码
$ w9 U' R" a' _ j2 h/ a6 G1 ~TIM_OSSI_Off_State_Selection_for_Idle_mode_state- /** @defgroup TIM_OSSI_Off_State_Selection_for_Idle_mode_state
8 f; G3 k& H. B+ P7 ^ - * @{# ^9 [) v0 V7 j6 [6 x, `
- */$ l& y. k( _- K. Q
/ e$ ^! C4 p7 T& \6 a- #define TIM_OSSIState_Enable ((uint16_t)0x0400)
~: M' }! M& E* T8 J8 A - #define TIM_OSSIState_Disable ((uint16_t)0x0000)! W9 h5 }3 D; ?' p0 u
- #define IS_TIM_OSSI_STATE(STATE) (((STATE) == TIM_OSSIState_Enable) || \
\0 C, h/ h0 j9 M& M - ((STATE) == TIM_OSSIState_Disable))
复制代码
9 v. x2 g* k6 v8 ^5 M; R! d4 fTIM_OSSR_Off_State_Selection_for_Run_mode_state9 b3 O i* l" R$ q& n/ f
2 ?3 `% {+ u5 O p% U" h% H" @+ Q
- /** @defgroup TIM_OSSR_Off_State_Selection_for_Run_mode_state% `. V3 Q( b4 j2 W `
- * @{
& o4 U7 e0 r: ]% i1 B2 |# f - */9 b6 M6 K1 f) q7 k$ k
- : y; l9 s5 Q9 n) ]+ i
- #define TIM_OSSRState_Enable ((uint16_t)0x0800)4 X/ S6 L9 y2 d7 R" w
- #define TIM_OSSRState_Disable ((uint16_t)0x0000), I% L& |4 I3 U8 K( G: t4 Y" S2 l
- #define IS_TIM_OSSR_STATE(STATE) (((STATE) == TIM_OSSRState_Enable) || \
3 p- y5 E; f9 c8 H+ p - ((STATE) == TIM_OSSRState_Disable))
复制代码
! C: P6 Q9 P+ F1 O6 N1 i# \2 t: U7 R3 UTIM_Output_Compare_Idle_State
/ C5 ?0 l0 U- a6 T: Y& S
. k k% T+ W- F9 z' N% k C- /** @defgroup TIM_Output_Compare_Idle_State * p5 x7 a3 {3 P# H; Z! l
- * @{. a4 j7 i u9 U! T
- */; z G8 c+ W p0 ]
- & U$ {# _% B2 M/ J
- #define TIM_OCIdleState_Set ((uint16_t)0x0100)1 | o& Z7 y$ d$ C( Z. [; ?4 Q
- #define TIM_OCIdleState_Reset ((uint16_t)0x0000)
* d8 K# }4 O2 T1 D1 I6 a - #define IS_TIM_OCIDLE_STATE(STATE) (((STATE) == TIM_OCIdleState_Set) || \
^5 T% t3 |& m, t - ((STATE) == TIM_OCIdleState_Reset))
复制代码
0 n5 w7 Q- p4 G$ nTIM_Output_Compare_N_Idle_State
& x' }& q* D/ z0 w% Q1 k+ x. r1 K" H% c/ X: L$ s
- /** @defgroup TIM_Output_Compare_N_Idle_State
, S4 ]7 g5 O0 \" ?4 U. y5 } - * @{1 K' o9 f" u* Z+ @' u6 `
- */- f7 H; d$ ~7 i9 F% N/ m" x" }& |7 C
- $ \9 V; _) v, c
- #define TIM_OCNIdleState_Set ((uint16_t)0x0200)1 `2 {1 A* Z: C; e% f9 T
- #define TIM_OCNIdleState_Reset ((uint16_t)0x0000), `+ ?8 w: B; I; ?8 r$ }
- #define IS_TIM_OCNIDLE_STATE(STATE) (((STATE) == TIM_OCNIdleState_Set) || \
, g- c8 \) z0 O j5 ` - ((STATE) == TIM_OCNIdleState_Reset))
复制代码
: C5 Y' o8 K3 \, x' N. zTIM_Input_Capture_Polarity
- @- Y6 e0 j+ G" v4 ^2 ^6 X2 [, d' d
, ~9 |$ I) y6 W1 E7 v% }- /** @defgroup TIM_Input_Capture_Polarity + B/ O2 g+ r& l0 m
- * @{) E) Q" v; b | Z0 H
- */
+ j- ?3 o2 I! ]9 {7 {) Q. `8 D - $ H& F1 N H. I, s" e& u
- #define TIM_ICPolarity_Rising ((uint16_t)0x0000)
0 S( J- x% E# l! Z* { - #define TIM_ICPolarity_Falling ((uint16_t)0x0002)! I g+ w% H( ?. ? l
- #define TIM_ICPolarity_BothEdge ((uint16_t)0x000A) t. Z' Z7 S4 j# R0 m' |+ ^
- #define IS_TIM_IC_POLARITY(POLARITY) (((POLARITY) == TIM_ICPolarity_Rising) || \
+ c" i* @9 |& ^ ? - ((POLARITY) == TIM_ICPolarity_Falling)|| \
) G2 R# l, X& d' z' ?( _% {$ | - ((POLARITY) == TIM_ICPolarity_BothEdge))
复制代码
# g9 W- E( J5 t7 z7 R' p: ZTIM_Input_Capture_Selection
$ k- Y! K. k; I* Z* i0 z. \0 E7 }8 n- L) o$ J: n
- /** @defgroup TIM_Input_Capture_Selection
# T; I& p+ j' d! _! A - * @{
, D) U W6 g( R8 P0 l" z9 v$ D - */6 G8 E4 `9 K) |6 c" ?" _: m/ d
- , s* X& E; r9 x" a
- #define TIM_ICSelection_DirectTI ((uint16_t)0x0001) /*!< TIM Input 1, 2, 3 or 4 is selected to be $ M! J1 Z. ^% E5 r+ J& e. S
- connected to IC1, IC2, IC3 or IC4, respectively */$ T% A7 F' U+ k4 _" e
- #define TIM_ICSelection_IndirectTI ((uint16_t)0x0002) /*!< TIM Input 1, 2, 3 or 4 is selected to be" [& H/ V8 j, R8 [6 z0 C4 k+ e/ Z, h
- connected to IC2, IC1, IC4 or IC3, respectively. */
6 C, \7 {% l' A" Y8 k - #define TIM_ICSelection_TRC ((uint16_t)0x0003) /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to TRC. */
- O3 d4 t7 I' M3 C! b- H- P1 x - #define IS_TIM_IC_SELECTION(SELECTION) (((SELECTION) == TIM_ICSelection_DirectTI) || \
8 c/ D, O/ Q5 S" @1 Q% } - ((SELECTION) == TIM_ICSelection_IndirectTI) || \
6 {4 s0 R3 o; d0 q0 K - ((SELECTION) == TIM_ICSelection_TRC))
复制代码
4 @% K2 V" K5 K$ A: mTIM_Input_Capture_Prescaler/ A1 |# e, R$ c) M9 B: Y
$ t$ Y9 [$ {9 A4 O
- /** @defgroup TIM_Input_Capture_Prescaler + l9 H8 ^- `& p8 p9 H
- * @{
1 t' R7 k7 z# j J+ ? - */
2 @) L( f* A" C, j& o; Q8 P# @ - ; l7 g0 W6 T7 Z; w) J4 |6 z
- #define TIM_ICPSC_DIV1 ((uint16_t)0x0000) /*!< Capture performed each time an edge is detected on the capture input. */
, L; x- y! D; H4 L2 A; o - #define TIM_ICPSC_DIV2 ((uint16_t)0x0004) /*!< Capture performed once every 2 events. *// b8 \+ O% T- u5 C
- #define TIM_ICPSC_DIV4 ((uint16_t)0x0008) /*!< Capture performed once every 4 events. */
& s' p+ B U( c3 Q! A2 w) y - #define TIM_ICPSC_DIV8 ((uint16_t)0x000C) /*!< Capture performed once every 8 events. *// `$ u$ T+ N( c) g& w
- #define IS_TIM_IC_PRESCALER(PRESCALER) (((PRESCALER) == TIM_ICPSC_DIV1) || \
# v1 z5 B6 ]6 M n2 @$ q - ((PRESCALER) == TIM_ICPSC_DIV2) || \
9 {; e" z+ C6 e - ((PRESCALER) == TIM_ICPSC_DIV4) || \
2 S0 y7 Y/ f: {/ B - ((PRESCALER) == TIM_ICPSC_DIV8))
: V7 r, e! X4 J* `9 K) G
复制代码 , i" y* O# `* w. r$ Q6 U) ~+ c; ?
TIM_interrupt_sources8 R4 g* `! D: ?, P* p
" a- J* L9 b" _/ ?6 u
- /** @defgroup TIM_interrupt_sources
( s( \ |0 Q7 N1 U8 g - * @{
- l! E. X* b; b8 V" I - */; g1 j4 K m, p+ V
- " D: ~* X2 C; i
- #define TIM_IT_Update ((uint16_t)0x0001)+ K9 a4 B5 U, G
- #define TIM_IT_CC1 ((uint16_t)0x0002)
$ T" ~- I" L; z# M8 B. e - #define TIM_IT_CC2 ((uint16_t)0x0004)
- h6 ` f: \0 P1 g" S - #define TIM_IT_CC3 ((uint16_t)0x0008)! ]" |- c- k! u6 O* G
- #define TIM_IT_CC4 ((uint16_t)0x0010)
1 @, G# {; S4 P9 W4 g - #define TIM_IT_COM ((uint16_t)0x0020)
+ w6 t% h; X+ l- l( D - #define TIM_IT_Trigger ((uint16_t)0x0040)/ X& l* ?: ^8 R5 a# G
- #define TIM_IT_Break ((uint16_t)0x0080)$ B: X, o" ^- z
- #define IS_TIM_IT(IT) ((((IT) & (uint16_t)0xFF00) == 0x0000) && ((IT) != 0x0000))0 U C, c- K2 k5 \ J" n
- 0 u! O+ {: G. P* I, D" a0 N5 b
- #define IS_TIM_GET_IT(IT) (((IT) == TIM_IT_Update) || \9 S2 I0 P8 R: F. K$ z& I1 R
- ((IT) == TIM_IT_CC1) || \8 k s/ B' b" P3 z- }! I! i. k) p
- ((IT) == TIM_IT_CC2) || \, K6 `& Q6 f. X& v q' _: G
- ((IT) == TIM_IT_CC3) || \
( B0 e4 O" W4 | - ((IT) == TIM_IT_CC4) || \: }- c! x" X0 x% g R
- ((IT) == TIM_IT_COM) || \
2 U$ u5 C1 i* H5 M - ((IT) == TIM_IT_Trigger) || \4 |; S; u! O8 z7 E# t4 V
- ((IT) == TIM_IT_Break))
0 z+ M: l" S! R$ z, D8 {" ~9 z& @
复制代码
6 c4 J- `% N- f1 T) k3 uTIM_DMA_Base_address- |! D" d" Z2 C$ C) r" @- t, l
; p( o/ S$ I# m3 O6 {- /** @defgroup TIM_DMA_Base_address
$ o8 ]4 T/ b, g! t - * @{
0 t( |/ i' F1 @( s - */, {3 A- G) h) N: V" e
- * m$ Z, ^ h! g) l/ v# u
- #define TIM_DMABase_CR1 ((uint16_t)0x0000)
/ e; K5 q( k2 N! y! w* o, O- T - #define TIM_DMABase_CR2 ((uint16_t)0x0001)
- l: P9 }, w2 A" ]. B+ U5 C - #define TIM_DMABase_SMCR ((uint16_t)0x0002)! F- j% j+ r3 j: I3 O* x- |
- #define TIM_DMABase_DIER ((uint16_t)0x0003)1 `" Q: p! E8 ^; V
- #define TIM_DMABase_SR ((uint16_t)0x0004)" q: I! U* w+ x0 f
- #define TIM_DMABase_EGR ((uint16_t)0x0005)3 J5 e( R2 p! {3 B) J, X
- #define TIM_DMABase_CCMR1 ((uint16_t)0x0006)1 \8 u" H+ q' E$ W X) T4 O
- #define TIM_DMABase_CCMR2 ((uint16_t)0x0007)
) m" |+ ^1 x9 e - #define TIM_DMABase_CCER ((uint16_t)0x0008)( b( P9 _- S9 q6 f* r
- #define TIM_DMABase_CNT ((uint16_t)0x0009)
9 t' A3 x$ k8 A0 Z5 M - #define TIM_DMABase_PSC ((uint16_t)0x000A) @8 n2 ^- T' p* i+ A7 _* A4 {: @
- #define TIM_DMABase_ARR ((uint16_t)0x000B)+ J. c! t; E1 z2 n% X
- #define TIM_DMABase_RCR ((uint16_t)0x000C)- H. I: q) s, E2 N2 G( ]
- #define TIM_DMABase_CCR1 ((uint16_t)0x000D), l* O7 K) E4 @5 w# o) |- \9 `
- #define TIM_DMABase_CCR2 ((uint16_t)0x000E)
2 a4 o: p+ V: v - #define TIM_DMABase_CCR3 ((uint16_t)0x000F)
; G2 k( k, J, {9 b3 I( h+ \ - #define TIM_DMABase_CCR4 ((uint16_t)0x0010)2 T( J% J# Q& F. i* ?
- #define TIM_DMABase_BDTR ((uint16_t)0x0011)) A% h b1 X7 @, s4 W. r7 O7 E
- #define TIM_DMABase_DCR ((uint16_t)0x0012)% ^2 [1 k1 B( ?3 f' L6 [( F
- #define TIM_DMABase_OR ((uint16_t)0x0013)
) e8 z0 Y# s9 v' t* V8 Q( @ - #define IS_TIM_DMA_BASE(BASE) (((BASE) == TIM_DMABase_CR1) || \
( N5 [; U! S1 }+ U - ((BASE) == TIM_DMABase_CR2) || \( d' x) ]( O8 b- u- _
- ((BASE) == TIM_DMABase_SMCR) || \
, v; x9 n7 E5 r1 Z+ E- G/ w) h; j7 V - ((BASE) == TIM_DMABase_DIER) || \
& X8 ^. W4 C0 R2 z- e% F0 \( Q' A: X - ((BASE) == TIM_DMABase_SR) || \
2 E6 L9 y& n4 P - ((BASE) == TIM_DMABase_EGR) || \& H' {2 I- `# H! c- w
- ((BASE) == TIM_DMABase_CCMR1) || \$ f2 h- T4 o" ~; [1 P! {3 w; `
- ((BASE) == TIM_DMABase_CCMR2) || \6 G e' ?8 `3 n: j6 m' x
- ((BASE) == TIM_DMABase_CCER) || \
" s! s1 I. J: Q9 i, ^9 W2 [2 F - ((BASE) == TIM_DMABase_CNT) || \
p- h( q3 `* F; `' I0 c5 [6 b$ y - ((BASE) == TIM_DMABase_PSC) || \
" U( X* T* ~& _) A6 m& `' ~" o - ((BASE) == TIM_DMABase_ARR) || \8 Q$ S; @0 J5 ^4 _
- ((BASE) == TIM_DMABase_RCR) || \# x$ g4 j W+ K% {& W( K
- ((BASE) == TIM_DMABase_CCR1) || \
4 W4 E+ ]! V! h' ?8 X; ] - ((BASE) == TIM_DMABase_CCR2) || \: F/ b. s; O! ^( N& m
- ((BASE) == TIM_DMABase_CCR3) || \3 k$ _; c7 G) O% i; F+ p
- ((BASE) == TIM_DMABase_CCR4) || \3 R% }+ e& H+ P N* f
- ((BASE) == TIM_DMABase_BDTR) || \
# U, b8 e- }! R, q$ m3 S$ b - ((BASE) == TIM_DMABase_DCR) || \
. N% z6 v v0 }) W- @ - ((BASE) == TIM_DMABase_OR))
复制代码
: R5 \7 C. u, V7 y+ w4 _TIM_DMA_Burst_Length2 Q3 ^2 q: e, D3 \" y
6 y. d& B: \$ A% c( D
- /** @defgroup TIM_DMA_Burst_Length
7 H$ X6 \& V/ t; \7 t/ R* ?* D - * @{" m2 ?$ J1 d: _' s% J. P& f/ }
- */
( Z& t" \- @; W# o0 q( i0 g
9 W5 q! B& R$ p! X Y- #define TIM_DMABurstLength_1Transfer ((uint16_t)0x0000)- W0 o/ ]9 z* F0 p/ w3 _- L
- #define TIM_DMABurstLength_2Transfers ((uint16_t)0x0100)1 c7 u1 @/ s- x/ f' F1 O5 M! J6 t o
- #define TIM_DMABurstLength_3Transfers ((uint16_t)0x0200)
# H0 w% h% L( f. |% V- b9 L - #define TIM_DMABurstLength_4Transfers ((uint16_t)0x0300)
! l' _+ V" D* E% d5 _7 N - #define TIM_DMABurstLength_5Transfers ((uint16_t)0x0400)
( Y' P$ ^2 a2 W0 U# P3 |" b# e$ L - #define TIM_DMABurstLength_6Transfers ((uint16_t)0x0500): @% ^ r& w, h9 H* z+ U3 q
- #define TIM_DMABurstLength_7Transfers ((uint16_t)0x0600)
! s9 y3 X4 O/ U# J - #define TIM_DMABurstLength_8Transfers ((uint16_t)0x0700)
) ?6 f9 e4 n- e2 E" x - #define TIM_DMABurstLength_9Transfers ((uint16_t)0x0800)
# K! S [' Q r2 k, m4 T1 y( H - #define TIM_DMABurstLength_10Transfers ((uint16_t)0x0900)5 w l1 L: P$ y" c
- #define TIM_DMABurstLength_11Transfers ((uint16_t)0x0A00)) S" D1 U* D1 K" @0 O
- #define TIM_DMABurstLength_12Transfers ((uint16_t)0x0B00)+ _/ {# a1 I! s( g
- #define TIM_DMABurstLength_13Transfers ((uint16_t)0x0C00)
. L4 P/ V6 h3 Q6 f - #define TIM_DMABurstLength_14Transfers ((uint16_t)0x0D00)
' P! k- T j7 q! M1 v - #define TIM_DMABurstLength_15Transfers ((uint16_t)0x0E00)
, t/ w/ D: k1 u" [ - #define TIM_DMABurstLength_16Transfers ((uint16_t)0x0F00)% v2 ^! ~* B; g9 t
- #define TIM_DMABurstLength_17Transfers ((uint16_t)0x1000)
1 |; k. J d% }5 t - #define TIM_DMABurstLength_18Transfers ((uint16_t)0x1100)+ L% y- s# }: w( ^
- #define IS_TIM_DMA_LENGTH(LENGTH) (((LENGTH) == TIM_DMABurstLength_1Transfer) || \
" E+ i6 W: N# w$ {& m$ \" M - ((LENGTH) == TIM_DMABurstLength_2Transfers) || \
# t$ q% `7 M; h6 b& p/ W5 g" ~) k! T - ((LENGTH) == TIM_DMABurstLength_3Transfers) || \
' A7 K) m8 u4 n, y$ R; H2 {* D - ((LENGTH) == TIM_DMABurstLength_4Transfers) || \1 s' `' |+ y" i: b
- ((LENGTH) == TIM_DMABurstLength_5Transfers) || \
% d3 i. `# M6 r- o. `) G6 G - ((LENGTH) == TIM_DMABurstLength_6Transfers) || \- W8 R( @7 T; _1 `3 J7 I! ~0 V
- ((LENGTH) == TIM_DMABurstLength_7Transfers) || \
8 _( [4 A) E0 A2 H: @ - ((LENGTH) == TIM_DMABurstLength_8Transfers) || \# e! x3 G& D6 w% \2 }) ?8 X8 j
- ((LENGTH) == TIM_DMABurstLength_9Transfers) || \# Z2 N& H, I P6 A0 q6 X: H! n* p8 q
- ((LENGTH) == TIM_DMABurstLength_10Transfers) || \4 E; L/ F& B0 o( {6 N, h- d7 o
- ((LENGTH) == TIM_DMABurstLength_11Transfers) || \
7 F- i$ _+ M% b - ((LENGTH) == TIM_DMABurstLength_12Transfers) || \
9 ~! p7 T d3 `1 ` - ((LENGTH) == TIM_DMABurstLength_13Transfers) || \
4 \6 U2 _4 G. _ ^8 w8 Q( i - ((LENGTH) == TIM_DMABurstLength_14Transfers) || \- i! r8 \& Q! J6 V3 i
- ((LENGTH) == TIM_DMABurstLength_15Transfers) || \
5 p6 f3 A2 i' ~4 w, d - ((LENGTH) == TIM_DMABurstLength_16Transfers) || \
w: X+ f$ Z' w+ b; z! R - ((LENGTH) == TIM_DMABurstLength_17Transfers) || \3 ~/ s( ^/ c/ x! d9 v
- ((LENGTH) == TIM_DMABurstLength_18Transfers))
复制代码
. B# @, P! _6 L( Y: V$ wTIM_DMA_sources) o; a/ E0 J) F" Y% x1 M7 c# x1 F
+ ]2 e& i+ U- T4 p- /** @defgroup TIM_DMA_sources
$ o8 r2 \7 [7 \# Z - * @{
; a4 U7 t8 {( `, \ - */9 n$ e" Z, B! U+ {' a
) ~$ f0 j; b7 r% v5 y7 M) w& a- #define TIM_DMA_Update ((uint16_t)0x0100)
, A' u* f3 T1 { - #define TIM_DMA_CC1 ((uint16_t)0x0200)9 v& ^, s) Y |& p- b9 g) c
- #define TIM_DMA_CC2 ((uint16_t)0x0400)/ |1 C: \( {2 w' s( A% w
- #define TIM_DMA_CC3 ((uint16_t)0x0800)+ t: K+ _( N9 g: c3 c3 \+ l
- #define TIM_DMA_CC4 ((uint16_t)0x1000)
0 c: L: ~# k2 a+ }' M - #define TIM_DMA_COM ((uint16_t)0x2000)
: W2 l+ x; T; y( Q - #define TIM_DMA_Trigger ((uint16_t)0x4000)
2 o7 J1 y% g5 f/ N) {* o - #define IS_TIM_DMA_SOURCE(SOURCE) ((((SOURCE) & (uint16_t)0x80FF) == 0x0000) && ((SOURCE) != 0x0000))
复制代码 0 r* W8 `' m ~4 p# X( s" u" N) ]0 I Y
TIM_External_Trigger_Prescaler( n( f9 G- u G9 _
- ?# R9 }7 h5 F- /** @defgroup TIM_External_Trigger_Prescaler
7 R/ r, d0 m* \ - * @{: L& ?7 w8 }4 M- F' f
- */
* v, G; k! r* J4 w6 ?' L - 2 J Y) g. b7 r
- #define TIM_ExtTRGPSC_OFF ((uint16_t)0x0000)
) G4 q% L5 S* r - #define TIM_ExtTRGPSC_DIV2 ((uint16_t)0x1000)3 q' h1 G; k( J/ X% ]5 o
- #define TIM_ExtTRGPSC_DIV4 ((uint16_t)0x2000). z' n( x8 Y$ t8 z* e1 g- `+ B* c
- #define TIM_ExtTRGPSC_DIV8 ((uint16_t)0x3000)8 f: M$ ?7 }( [% A, D7 V4 s
- #define IS_TIM_EXT_PRESCALER(PRESCALER) (((PRESCALER) == TIM_ExtTRGPSC_OFF) || \8 B! r2 f5 A2 }
- ((PRESCALER) == TIM_ExtTRGPSC_DIV2) || \
2 I E4 A- x1 E% P9 t4 A& U) K/ \ - ((PRESCALER) == TIM_ExtTRGPSC_DIV4) || \8 }+ j6 M8 u- Q; I
- ((PRESCALER) == TIM_ExtTRGPSC_DIV8))
复制代码
; \5 h% b4 Y* e# k4 x+ [: NTIM_Internal_Trigger_Selection3 h1 h5 x+ w; f3 D; G, v( e6 j S
/ n) \. V6 q$ S. `7 N9 ?! x8 T. |7 r5 o
- /** @defgroup TIM_Internal_Trigger_Selection s0 W" l9 K% q% ^9 w
- * @{
6 @$ y' y- m9 Q$ A1 H - */
! P% S. k2 j* z7 I0 W
& D7 Q: z1 {+ ~0 v" F- #define TIM_TS_ITR0 ((uint16_t)0x0000)! z7 G: @4 N& g+ q- z1 s0 X4 q# |
- #define TIM_TS_ITR1 ((uint16_t)0x0010)* d/ n, i0 i, A, K" i* T
- #define TIM_TS_ITR2 ((uint16_t)0x0020)
* H' B( R9 U# `# K/ j: c - #define TIM_TS_ITR3 ((uint16_t)0x0030)" ^5 D6 n' K0 k" M* g( x( i7 f
- #define TIM_TS_TI1F_ED ((uint16_t)0x0040)3 v& u* G7 t& B2 ` x+ \
- #define TIM_TS_TI1FP1 ((uint16_t)0x0050)
$ J* u7 v$ {) l, D' u2 }/ L - #define TIM_TS_TI2FP2 ((uint16_t)0x0060)
* _% k/ A6 e! S- A! V& U/ p" K - #define TIM_TS_ETRF ((uint16_t)0x0070)# k+ Z& X6 u, w, ^' J! O9 w9 x
- #define IS_TIM_TRIGGER_SELECTION(SELECTION) (((SELECTION) == TIM_TS_ITR0) || \
6 {5 M% X3 x2 M; L0 W0 x - ((SELECTION) == TIM_TS_ITR1) || \7 f. B) y, Q7 S% R# _7 w
- ((SELECTION) == TIM_TS_ITR2) || \
0 r- I7 [" m: W - ((SELECTION) == TIM_TS_ITR3) || \) Z6 L: Y5 c" @% [& }) \" S
- ((SELECTION) == TIM_TS_TI1F_ED) || \
% K# ?5 ~& j+ c - ((SELECTION) == TIM_TS_TI1FP1) || \
! [; h6 L" G* [) e - ((SELECTION) == TIM_TS_TI2FP2) || \
8 \0 X: m8 P% ^5 z" ^$ x& X$ J - ((SELECTION) == TIM_TS_ETRF))
- ]9 M G5 g Q0 E6 a - #define IS_TIM_INTERNAL_TRIGGER_SELECTION(SELECTION) (((SELECTION) == TIM_TS_ITR0) || \- z* Q! D4 Y* U3 D% u9 I3 r8 a7 u$ E
- ((SELECTION) == TIM_TS_ITR1) || \: U8 N2 \) D9 T# A, P+ r
- ((SELECTION) == TIM_TS_ITR2) || \
$ ]; ?3 ~! C; ], \ - ((SELECTION) == TIM_TS_ITR3))
复制代码 # D$ I y+ ?, n7 ~' \3 z5 j
TIM_TIx_External_Clock_Source
% C$ R4 D) Y) u; m, Q+ m+ P/ v
( q# P& D9 D7 B( |' A2 |3 k- /** @defgroup TIM_TIx_External_Clock_Source : S% e; [ T5 D- a' G
- * @{' `( A* m7 V7 Q
- */& K$ G2 @$ e7 D \
- 4 w! F9 v' k( w% d- ?
- #define TIM_TIxExternalCLK1Source_TI1 ((uint16_t)0x0050) V$ e- f, `5 D8 X; Y9 H& k+ z9 T0 x
- #define TIM_TIxExternalCLK1Source_TI2 ((uint16_t)0x0060)
/ y* J/ B0 c, |' B' W - #define TIM_TIxExternalCLK1Source_TI1ED ((uint16_t)0x0040)
: U$ F7 s, L7 c+ Y. M4 m
复制代码 & E' f: ?* O \1 S- V
TIM_External_Trigger_Polarity# y2 ]; f/ J* v# S1 b8 z
H& v7 X) {: m" m6 V$ F1 M; `- /** @defgroup TIM_External_Trigger_Polarity
" @+ |& K7 f, H7 c. G; N/ w- U3 c7 } - * @{6 W9 u* e; S W! n: W8 ]& s
- */
, U5 K: f; ~ F! h" n - #define TIM_ExtTRGPolarity_Inverted ((uint16_t)0x8000)
& r+ ^' k C) j& C/ { - #define TIM_ExtTRGPolarity_NonInverted ((uint16_t)0x0000)9 j: H3 l2 R/ @5 d* K1 ~
- #define IS_TIM_EXT_POLARITY(POLARITY) (((POLARITY) == TIM_ExtTRGPolarity_Inverted) || \
. C9 e/ n/ d* a - ((POLARITY) == TIM_ExtTRGPolarity_NonInverted))
复制代码
9 `0 x I8 U1 ?" [# W0 fTIM_Prescaler_Reload_Mode
; m' u" R( @, }$ S3 c" {* Q* P N* l/ J4 [
- /** @defgroup TIM_Prescaler_Reload_Mode
+ y2 H7 {" h. B# [( a - * @{
0 c0 _' p7 P# a [: ], Y: }: i" B$ _ - */& m; ~! o7 e% l4 F; c P& M
' F; o% Z* `. W" T% a+ U. C- #define TIM_PSCReloadMode_Update ((uint16_t)0x0000)
) z8 R1 \8 i) Z5 O) Z - #define TIM_PSCReloadMode_Immediate ((uint16_t)0x0001)6 O) r/ M- Y1 L, b9 w3 D
- #define IS_TIM_PRESCALER_RELOAD(RELOAD) (((RELOAD) == TIM_PSCReloadMode_Update) || \
* Q$ E. V! i8 h) I - ((RELOAD) == TIM_PSCReloadMode_Immediate))
复制代码 0 Q% P8 A& ]7 e
TIM_Forced_Action7 z$ q$ E. j2 ~" N X
% \# g* b8 F" j' z; Y7 x h- /** @defgroup TIM_Forced_Action
& e; [0 T( l8 U" D3 `( w4 f - * @{
+ M6 X+ J* F: K3 D - */
$ g6 G7 E. \% h8 ~ - " ~7 }, L7 F7 O( z+ P
- #define TIM_ForcedAction_Active ((uint16_t)0x0050)
# X& r3 X1 {+ ^8 O$ `& H - #define TIM_ForcedAction_InActive ((uint16_t)0x0040)% u/ c; t9 z2 U# G1 E) w' I; I" F$ O' E
- #define IS_TIM_FORCED_ACTION(ACTION) (((ACTION) == TIM_ForcedAction_Active) || \9 i. Y" F( j$ _' q# I, z
- ((ACTION) == TIM_ForcedAction_InActive))
复制代码 # l l3 f; \) F- c/ @( x
TIM_Encoder_Mode
% U9 E a4 F# `. G6 F9 [4 p- @/ c; r& G
- /** @defgroup TIM_Encoder_Mode
& P- p( r6 T# o. N" c! P - * @{8 S/ u# `" W5 G' |
- */
/ _% F, B& ~ `' y, s- D4 y: o - . X6 P" h$ N8 i- {- p
- #define TIM_EncoderMode_TI1 ((uint16_t)0x0001), y7 N* a0 b' K3 s
- #define TIM_EncoderMode_TI2 ((uint16_t)0x0002)
, H3 m+ u0 A* b- v9 J; F - #define TIM_EncoderMode_TI12 ((uint16_t)0x0003)
, x9 ]% R" b Z @8 c5 D - #define IS_TIM_ENCODER_MODE(MODE) (((MODE) == TIM_EncoderMode_TI1) || \
7 Q1 r, C5 k4 J2 F - ((MODE) == TIM_EncoderMode_TI2) || \
/ X; s7 i9 `4 u - ((MODE) == TIM_EncoderMode_TI12))
复制代码 1 e9 x; W0 u4 J. m& R* U7 F
TIM_Event_Source
% p! L: u* A B$ F* W* R2 B/ ]& m2 @+ y/ S" v
- /** @defgroup TIM_Event_Source : V- [& W# z7 R* @/ s2 |- S0 X' ]
- * @{
W# ^# e3 B" Q3 _. K, L$ j - */
# b8 ^( f5 f; B, | - ' e. |2 w( v1 D! l. x' `5 i- t1 o( M
- #define TIM_EventSource_Update ((uint16_t)0x0001)$ I1 s% E8 F9 o+ j
- #define TIM_EventSource_CC1 ((uint16_t)0x0002)2 W8 U% Z, _7 s [. n! N- J+ q( i9 X
- #define TIM_EventSource_CC2 ((uint16_t)0x0004), @- B+ Z5 n( g- H1 Y$ g" L' l
- #define TIM_EventSource_CC3 ((uint16_t)0x0008)! d& K. F7 B, ^
- #define TIM_EventSource_CC4 ((uint16_t)0x0010)) Y' `! g% U& d8 V) }
- #define TIM_EventSource_COM ((uint16_t)0x0020)
" M# t9 Z+ D" ^0 e/ r9 y; L - #define TIM_EventSource_Trigger ((uint16_t)0x0040)* |' N2 ~( G9 x8 {- q/ D3 G
- #define TIM_EventSource_Break ((uint16_t)0x0080)- b& Y# t' U8 J% z j
- #define IS_TIM_EVENT_SOURCE(SOURCE) ((((SOURCE) & (uint16_t)0xFF00) == 0x0000) && ((SOURCE) != 0x0000))
复制代码 ) m/ |9 j; k( `
TIM_Update_Source
" s4 e4 J* X+ H4 g( t
! e. w$ g2 S& E3 L- /** @defgroup TIM_Update_Source
7 E2 K4 m/ |$ i: X. h - * @{
9 I7 B, \ m% t/ d8 f; P! e - */% I, _: T+ r; ?. J6 g
% x% q; P3 d' P& F- S; Q- #define TIM_UpdateSource_Global ((uint16_t)0x0000) /*!< Source of update is the counter overflow/underflow, C$ v0 J; @7 y6 O" Y
- or the setting of UG bit, or an update generation
, E, L4 R; W) v! _" F - through the slave mode controller. */0 f% N1 k9 Y! C! _( d
- #define TIM_UpdateSource_Regular ((uint16_t)0x0001) /*!< Source of update is counter overflow/underflow. */. C; d( O1 M8 e- t+ b
- #define IS_TIM_UPDATE_SOURCE(SOURCE) (((SOURCE) == TIM_UpdateSource_Global) || \; U4 |; S1 e3 B4 P* o' r/ b7 v1 {
- ((SOURCE) == TIM_UpdateSource_Regular))
复制代码
7 B; K; i7 x4 ]0 ATIM_Output_Compare_Preload_State
& U* J: F& J. `7 f" x
$ N$ a8 j. k n+ @5 t+ f. G9 {7 Z; O2 `- /** @defgroup TIM_Output_Compare_Preload_State : J# f" P+ I. [2 l4 C
- * @{" `/ W3 K! Q3 M
- */
( L# s6 y5 a" ^( w1 u$ A7 l2 n - 0 e, U* T( y' ` \5 M* f
- #define TIM_OCPreload_Enable ((uint16_t)0x0008)
" w( d/ [$ R& n0 P/ N, Y7 P$ W - #define TIM_OCPreload_Disable ((uint16_t)0x0000)/ c) F7 u( f4 v3 Z8 o" ^$ G% c
- #define IS_TIM_OCPRELOAD_STATE(STATE) (((STATE) == TIM_OCPreload_Enable) || \
4 y& ^, F b; ?& n& h) d. U( t0 p( z( q - ((STATE) == TIM_OCPreload_Disable))
复制代码
- G. q, x i/ }8 o+ ~TIM_Output_Compare_Fast_State3 Q9 R0 L8 H2 r5 ?. w7 Q3 {: E
; Y1 Q9 X4 _' R$ _( D9 q
- /** @defgroup TIM_Output_Compare_Fast_State
! E5 i) B0 A/ ]2 K) o1 e) r" ^$ K - * @{
$ m1 M& I: M" V0 S( T5 E$ ^* I - */: z/ S) l0 a- @' e7 |
4 I; m% ]* D1 B+ ^! u2 d) u- #define TIM_OCFast_Enable ((uint16_t)0x0004)
; @0 f7 [& a0 F! V2 { - #define TIM_OCFast_Disable ((uint16_t)0x0000)2 a# q1 G- y2 z) |- r
- #define IS_TIM_OCFAST_STATE(STATE) (((STATE) == TIM_OCFast_Enable) || \
2 G8 f, s% i7 P* Z - ((STATE) == TIM_OCFast_Disable))
复制代码 0 r, J0 V' u L! |" B
TIM_Output_Compare_Clear_State
' Z* f4 Z! \ U2 R# w3 ^
% Q; A& H" p/ J$ d- /** @defgroup TIM_Output_Compare_Clear_State
4 W0 C) O2 M1 K' v& o - * @{
& x( E2 e, U v* @* N. W R7 ?; H% o7 B - */$ ?3 c% |! E6 D3 c/ v% N
* _9 a H3 `/ X; a% J6 i- #define TIM_OCClear_Enable ((uint16_t)0x0080)
3 ?1 M; B0 |) v5 A9 ]( L - #define TIM_OCClear_Disable ((uint16_t)0x0000)3 h$ k+ w8 q: D# [
- #define IS_TIM_OCCLEAR_STATE(STATE) (((STATE) == TIM_OCClear_Enable) || \1 K8 m3 S9 M( z' Z- W
- ((STATE) == TIM_OCClear_Disable))
复制代码 8 a6 }$ b, j4 i) ?$ \1 T6 K
TIM_Trigger_Output_Source: M; i" `+ L6 H' `
, p& ^' ^8 a3 a* r, @' W8 E/ Y- /** @defgroup TIM_Trigger_Output_Source 0 u) m8 X g8 W2 j/ h
- * @{
# B: V" }: q7 g, G - */
- ^- B% [# G/ l$ B# B; ^4 {
6 k3 G% [: K0 K2 p) z: [- #define TIM_TRGOSource_Reset ((uint16_t)0x0000)
$ y; [. f) |0 v& a* f7 v0 { - #define TIM_TRGOSource_Enable ((uint16_t)0x0010)
3 H& m: Z2 q. w, I, o - #define TIM_TRGOSource_Update ((uint16_t)0x0020)7 e% ]/ ^' i# N+ o- z5 G
- #define TIM_TRGOSource_OC1 ((uint16_t)0x0030)6 Y8 |+ e, f) a# ?0 E+ p& Z
- #define TIM_TRGOSource_OC1Ref ((uint16_t)0x0040)4 h* z( M6 Q- Q4 B2 @0 U2 g
- #define TIM_TRGOSource_OC2Ref ((uint16_t)0x0050)+ r& R. t' s( g$ _
- #define TIM_TRGOSource_OC3Ref ((uint16_t)0x0060)
3 g B; x/ f! A2 o: ~0 q - #define TIM_TRGOSource_OC4Ref ((uint16_t)0x0070)/ H7 G+ r1 ?" [4 a
- #define IS_TIM_TRGO_SOURCE(SOURCE) (((SOURCE) == TIM_TRGOSource_Reset) || \ b+ G: W; S( H. c( A( X
- ((SOURCE) == TIM_TRGOSource_Enable) || \
( H) B" B( m( q! O q+ K4 P* k: l - ((SOURCE) == TIM_TRGOSource_Update) || \
! T: |# s, ~ \0 ~% n7 ` - ((SOURCE) == TIM_TRGOSource_OC1) || \) }: f# G1 [4 u6 [7 U
- ((SOURCE) == TIM_TRGOSource_OC1Ref) || \
% E6 J: L3 }6 o# G - ((SOURCE) == TIM_TRGOSource_OC2Ref) || \" e! ?& A! C: k/ `
- ((SOURCE) == TIM_TRGOSource_OC3Ref) || \
. Y3 V% r0 s. b2 s - ((SOURCE) == TIM_TRGOSource_OC4Ref))
复制代码
( G, _7 L: n; Z; PTIM_Slave_Mode, k- o, o& ]; t4 W* t! l4 X
W& f/ B y! C4 k5 k
- /** @defgroup TIM_Slave_Mode
, e. u) e1 ?8 U2 J: ~6 t - * @{
& k$ @0 n" ]8 m% i @, `* U7 X. p - */
1 z. ]& I6 V" M# _, u
$ {* U0 S9 y% B2 I3 A4 n' Z$ F- #define TIM_SlaveMode_Reset ((uint16_t)0x0004)" Q- ~, k! h3 |8 K: L' e
- #define TIM_SlaveMode_Gated ((uint16_t)0x0005)3 I% X% X7 a7 Z
- #define TIM_SlaveMode_Trigger ((uint16_t)0x0006)" V n% j L; D' B* B7 [1 G4 |
- #define TIM_SlaveMode_External1 ((uint16_t)0x0007)
3 v4 a$ y% y B1 i$ k4 B - #define IS_TIM_SLAVE_MODE(MODE) (((MODE) == TIM_SlaveMode_Reset) || \/ i2 z$ d/ Q5 Q5 y* X; f
- ((MODE) == TIM_SlaveMode_Gated) || \! r/ A! y) r/ d% x4 E
- ((MODE) == TIM_SlaveMode_Trigger) || \
+ W5 |) f7 j9 K% e: W" h' H% ^ - ((MODE) == TIM_SlaveMode_External1))
复制代码 e* U/ ~0 x q. a {" r
TIM_Master_Slave_Mode# e2 E6 T3 F5 d+ v
9 L: f" o8 `& m, p' R k
- /** @defgroup TIM_Master_Slave_Mode 2 B/ u& F; u% m# ?/ Y- B
- * @{
* v8 m$ T( j; W2 G7 ^ - */" B1 u) c ~) y+ K0 H, M2 Q
- : w, n: h3 z/ b5 |
- #define TIM_MasterSlaveMode_Enable ((uint16_t)0x0080)
+ W3 g" o0 M9 ?2 c3 S - #define TIM_MasterSlaveMode_Disable ((uint16_t)0x0000)
2 D9 p- f0 R. U$ F' s' K& j - #define IS_TIM_MSM_STATE(STATE) (((STATE) == TIM_MasterSlaveMode_Enable) || \1 B. R& G8 X4 g3 V0 j
- ((STATE) == TIM_MasterSlaveMode_Disable))
复制代码
1 s" ?' U4 @: k5 x9 w4 i% OTIM_Remap
, r5 ]7 C6 v+ X) b/ k& }3 r- g: r+ L5 m& ^( ?
- /** @defgroup TIM_Remap
# F* ]' X! T, G, n0 M% E+ W) [" N0 x9 U - * @{5 \3 e5 S7 z$ j d W1 w6 @
- */, L# v2 L% z4 C, a, i, ?
- - ?0 C6 M. ~/ V Y4 y
- #define TIM2_TIM8_TRGO ((uint16_t)0x0000)
+ v! f6 h8 {: y - #define TIM2_ETH_PTP ((uint16_t)0x0400)* {! M- O( Y0 a3 B
- #define TIM2_USBFS_SOF ((uint16_t)0x0800)
& w2 g5 R6 Y6 A2 Z0 i/ v7 H - #define TIM2_USBHS_SOF ((uint16_t)0x0C00)
- M( k& z+ T3 @$ b& p - & z$ m/ l \/ a# c+ W! h) l
- #define TIM5_GPIO ((uint16_t)0x0000)
8 }9 \: Y7 p0 A5 l4 |# | - #define TIM5_LSI ((uint16_t)0x0040)
& U4 k' [) c& [1 ? - #define TIM5_LSE ((uint16_t)0x0080)# J7 J/ ~+ U( ~ `( @2 e9 l9 E# p* X( P
- #define TIM5_RTC ((uint16_t)0x00C0)% p- u z; r0 G: x1 x
- 4 C- d+ f; A; f1 o6 S; D' ]
- #define TIM11_GPIO ((uint16_t)0x0000)
' V5 S& D; h/ ]- g7 J1 L% O( } - #define TIM11_HSE ((uint16_t)0x0002)* N! S$ l7 K/ k$ T+ l
. g. I% ?1 u0 g7 y2 ^* K$ {) o- #define IS_TIM_REMAP(TIM_REMAP) (((TIM_REMAP) == TIM2_TIM8_TRGO)||\
+ s! B& D0 t2 R+ e9 C; B - ((TIM_REMAP) == TIM2_ETH_PTP)||\1 |9 b0 o; n5 h/ f$ f. O% O
- ((TIM_REMAP) == TIM2_USBFS_SOF)||\
* S$ _, f# i6 Y4 | - ((TIM_REMAP) == TIM2_USBHS_SOF)||\4 R6 s+ g0 l, _
- ((TIM_REMAP) == TIM5_GPIO)||\
G% P9 ^2 c: i - ((TIM_REMAP) == TIM5_LSI)||\8 [! T) E/ R2 e% K0 b
- ((TIM_REMAP) == TIM5_LSE)||\
4 |& N( C. o, D% u" T - ((TIM_REMAP) == TIM5_RTC)||\2 H U! ~* p m
- ((TIM_REMAP) == TIM11_GPIO)||\
! L+ ?9 H/ u% k" u# H - ((TIM_REMAP) == TIM11_HSE))
复制代码
" C" w7 ^; a5 `- {* Y# U# X# xTIM_Flags* @6 W. ?% [' L1 q- I, h$ G
* X) N$ v" n* h% s( V9 p- /** @defgroup TIM_Flags * j, A4 O5 Q+ ~" _
- * @{
% b8 {( U0 u c9 N7 X% A - */
; _4 O3 u! `+ V! T6 D
( K' _' G: E2 @9 }. k% h) D- #define TIM_FLAG_Update ((uint16_t)0x0001)
' r6 q% X% E% A* J2 C, n - #define TIM_FLAG_CC1 ((uint16_t)0x0002)( j* @2 R. _' P* J+ ~
- #define TIM_FLAG_CC2 ((uint16_t)0x0004)
! j% M2 V- E9 I# v, `* a - #define TIM_FLAG_CC3 ((uint16_t)0x0008)9 ^$ g3 |1 F$ w3 T: J0 V
- #define TIM_FLAG_CC4 ((uint16_t)0x0010)
d* l5 _/ J4 Y" S) [) ]+ y' A* j - #define TIM_FLAG_COM ((uint16_t)0x0020) A! w" e. B6 G5 h
- #define TIM_FLAG_Trigger ((uint16_t)0x0040) u; W* i. e( r
- #define TIM_FLAG_Break ((uint16_t)0x0080)- y, e4 V) j9 r ^$ ]2 V0 `: F
- #define TIM_FLAG_CC1OF ((uint16_t)0x0200)8 o( {) U5 m) _7 S& s
- #define TIM_FLAG_CC2OF ((uint16_t)0x0400)2 q3 d" P9 S. P r
- #define TIM_FLAG_CC3OF ((uint16_t)0x0800)
1 t* ^0 ]/ h" T- }+ a3 B3 b9 I) j/ J - #define TIM_FLAG_CC4OF ((uint16_t)0x1000)
/ Z* u; ~- a2 R& y! w - #define IS_TIM_GET_FLAG(FLAG) (((FLAG) == TIM_FLAG_Update) || \1 H0 n" p2 h6 m5 i! N7 \
- ((FLAG) == TIM_FLAG_CC1) || \. R' I% F$ }' i& D( H$ Y
- ((FLAG) == TIM_FLAG_CC2) || \+ ~3 F2 P& F* B$ ^& l8 `/ x6 W$ L
- ((FLAG) == TIM_FLAG_CC3) || \
6 K$ _( `& J: r - ((FLAG) == TIM_FLAG_CC4) || \
, @$ F* q( C( ^4 q2 H3 y+ l% u - ((FLAG) == TIM_FLAG_COM) || \3 C w, V- Z/ s) \3 m" J
- ((FLAG) == TIM_FLAG_Trigger) || \
/ U; |* n+ u* L, x2 X - ((FLAG) == TIM_FLAG_Break) || \
: V( @2 m3 O5 t( @' M6 h - ((FLAG) == TIM_FLAG_CC1OF) || \
6 I/ w7 u; n: G) L4 j& Q - ((FLAG) == TIM_FLAG_CC2OF) || \
0 W: d9 M3 n& F$ p! C/ x - ((FLAG) == TIM_FLAG_CC3OF) || \; ?( l' }: V3 a4 _ b' ^
- ((FLAG) == TIM_FLAG_CC4OF))
复制代码
7 A$ u. P) M* ]# r. g4 c' |3 H4 P其它
# H3 `8 B d- j4 e, w% S' [0 q% s* H7 `/ ~& _, o/ c& {
- /** @defgroup TIM_Input_Capture_Filer_Value . d/ f9 i% M& p4 [$ U
- * @{
3 _/ V9 P% C! i2 K: A - */, t% E5 s( n; u" b! p
$ g$ j- }5 J6 B* ]- #define IS_TIM_IC_FILTER(ICFILTER) ((ICFILTER) <= 0xF) % {6 Q+ d& S9 O }* g! b4 j3 k
- /**
2 K& D4 P& p% @5 {! M" E$ {2 v - * @}! t b+ d* I8 \ j) C
- */
m. n* O/ b! d! K# s- Q$ s/ s - ! H: i+ G; F* m
- /** @defgroup TIM_External_Trigger_Filter
! R3 h) F- ]: j i( G4 h5 E - * @{
! [% |: M9 U1 p0 c% ~+ f - */
# @: r: @) w+ n6 s3 O
; m" c6 u. X7 D. F, Y- #define IS_TIM_EXT_FILTER(EXTFILTER) ((EXTFILTER) <= 0xF): N' M5 m# V' }7 P
- /**
( c" S# {' N9 c9 w- }5 d - * @}
* ?* g [: m. }) E - */ {3 c, ^) `: }/ ~+ R0 |8 r9 J4 a/ R
; \8 v; D6 O$ I3 t5 }6 Y- /** @defgroup TIM_Legacy
+ N* G, o& J# j5 D* {5 H7 { - * @{
. g8 J, s5 T6 t6 k- ?3 V% `4 M - */
, g+ b' ~7 H1 }1 |3 ~: c& z# i" g - 5 U3 Z% r+ ?3 d" c, e
- #define TIM_DMABurstLength_1Byte TIM_DMABurstLength_1Transfer
, q8 x3 _: r( k4 J2 T7 p( P* q# `" u* z - #define TIM_DMABurstLength_2Bytes TIM_DMABurstLength_2Transfers
( P% P0 W7 W: b/ A( Q5 q$ } - #define TIM_DMABurstLength_3Bytes TIM_DMABurstLength_3Transfers
9 u$ t' F* W6 }% B& {, N - #define TIM_DMABurstLength_4Bytes TIM_DMABurstLength_4Transfers: M; b( Q9 f8 y: r2 C/ Y2 R
- #define TIM_DMABurstLength_5Bytes TIM_DMABurstLength_5Transfers
6 `0 @$ b3 v; [# S3 V2 N0 U4 ~ - #define TIM_DMABurstLength_6Bytes TIM_DMABurstLength_6Transfers% c9 Y( J( G j* i
- #define TIM_DMABurstLength_7Bytes TIM_DMABurstLength_7Transfers0 ?/ Y t* m) h4 X4 K9 G: q% |
- #define TIM_DMABurstLength_8Bytes TIM_DMABurstLength_8Transfers
5 u/ U6 [4 k7 @ - #define TIM_DMABurstLength_9Bytes TIM_DMABurstLength_9Transfers
[, [6 K4 z* m& }* H3 e% Y. t - #define TIM_DMABurstLength_10Bytes TIM_DMABurstLength_10Transfers
$ c) O+ b F9 Z# |' F: R - #define TIM_DMABurstLength_11Bytes TIM_DMABurstLength_11Transfers
* L+ M' `2 y% Q! A" k( F+ \6 P - #define TIM_DMABurstLength_12Bytes TIM_DMABurstLength_12Transfers. H- P+ b2 o0 A$ U0 Y) T, n
- #define TIM_DMABurstLength_13Bytes TIM_DMABurstLength_13Transfers! I, _! O( {& }/ M' t% c
- #define TIM_DMABurstLength_14Bytes TIM_DMABurstLength_14Transfers
_! c- l0 V( H( L, z# T1 T - #define TIM_DMABurstLength_15Bytes TIM_DMABurstLength_15Transfers; ~3 a- C; x+ S+ \% g
- #define TIM_DMABurstLength_16Bytes TIM_DMABurstLength_16Transfers/ x; l+ n% r& I- {& F
- #define TIM_DMABurstLength_17Bytes TIM_DMABurstLength_17Transfers" O( c" Y/ x K0 v7 N7 V
- #define TIM_DMABurstLength_18Bytes TIM_DMABurstLength_18Transfers
复制代码 + X2 g3 N. B' K4 M p# B6 _& L
03. 相关函数4 {# T& a S# J* F- j
- /* TimeBase management ********************************************************/+ F* T+ j7 [( l l! u) j% q, F5 Q/ {. L- l
- void TIM_DeInit(TIM_TypeDef* TIMx);
! l9 E: B% v Z# P' K) ~9 p - void TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);% N a5 k4 T/ {2 E
- void TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);
/ y- p. ~$ q4 l4 g0 r - void TIM_PrescalerConfig(TIM_TypeDef* TIMx, uint16_t Prescaler, uint16_t TIM_PSCReloadMode);4 v7 x3 \3 |3 r+ Y; ]
- void TIM_CounterModeConfig(TIM_TypeDef* TIMx, uint16_t TIM_CounterMode);( u' B A9 r) {+ ]0 P' E9 n
- void TIM_SetCounter(TIM_TypeDef* TIMx, uint32_t Counter);
3 V6 l, w& H3 c) d! L6 |- n9 ?5 \ - void TIM_SetAutoreload(TIM_TypeDef* TIMx, uint32_t Autoreload);$ U: \/ Z, ~$ t/ {9 N& j' R( y8 Q
- uint32_t TIM_GetCounter(TIM_TypeDef* TIMx);
( J' G8 F" g' \2 c& K - uint16_t TIM_GetPrescaler(TIM_TypeDef* TIMx);8 c7 q+ S! C: n, ~( r6 a) A
- void TIM_UpdateDisableConfig(TIM_TypeDef* TIMx, FunctionalState NewState);) b1 V+ F7 e7 X# N. u! ]. W
- void TIM_UpdateRequestConfig(TIM_TypeDef* TIMx, uint16_t TIM_UpdateSource);9 j7 {1 f& W$ n T4 D
- void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState);. N5 J# N% ~2 L9 s: I4 ~4 b; ]
- void TIM_SelectOnePulseMode(TIM_TypeDef* TIMx, uint16_t TIM_OPMode);( ?8 u2 ~% t0 I" |! j5 x
- void TIM_SetClockDivision(TIM_TypeDef* TIMx, uint16_t TIM_CKD);
, H9 D4 X4 z$ ?! c I6 ^ - void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState);
$ e4 d0 w2 w1 J$ C: N% I' f Y - + k: s/ N( }! \& |
- /* Output Compare management **************************************************/, `7 g/ ]* t1 q" y
- void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
: L; ]3 V, }" a+ U - void TIM_OC2Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);- k; b5 Q! Q7 T$ [
- void TIM_OC3Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
! I0 }4 {% \& T, Y8 c2 T - void TIM_OC4Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
( Q& q! d% u1 K3 J+ Q2 T# x" L - void TIM_OCStructInit(TIM_OCInitTypeDef* TIM_OCInitStruct);
" C+ X3 O) q/ `3 a' V. ` - void TIM_SelectOCxM(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_OCMode);
( j. o6 R' C. l2 y. ?( k# Q - void TIM_SetCompare1(TIM_TypeDef* TIMx, uint32_t Compare1);
% x* r7 B/ E( w0 z8 R - void TIM_SetCompare2(TIM_TypeDef* TIMx, uint32_t Compare2);
! D6 u+ e j% Y# E% G' \1 h$ e - void TIM_SetCompare3(TIM_TypeDef* TIMx, uint32_t Compare3);/ \8 \* K2 s- \2 A" `3 Y$ _
- void TIM_SetCompare4(TIM_TypeDef* TIMx, uint32_t Compare4);
@8 P; b% f3 B - void TIM_ForcedOC1Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);- Y# f4 v1 ]! B# g* r) K
- void TIM_ForcedOC2Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);9 a1 I1 v- x3 B% y
- void TIM_ForcedOC3Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
% x/ Y; g) \! A$ d* j% f) _& ^ - void TIM_ForcedOC4Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
2 d$ [0 X' j- @8 Y) S+ q5 ` - void TIM_OC1PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
+ Q ]! p9 Q) u4 r - void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);2 `2 g! A( m1 E
- void TIM_OC3PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
( j4 _6 L1 f, N - void TIM_OC4PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);3 W2 r/ | E+ ^; c1 _' X
- void TIM_OC1FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);. R. l! D! A- Y p7 N7 I1 G1 J
- void TIM_OC2FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);/ V% W5 u9 u# V3 L. P. ]1 A" V
- void TIM_OC3FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
( m2 F! R. w: \% S, z1 G P4 H: k( W - void TIM_OC4FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);3 {$ z, c* v& @* Z2 G. a/ h
- void TIM_ClearOC1Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);' W3 C& H/ m5 z O/ Z8 V
- void TIM_ClearOC2Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);6 y) e/ q$ A+ o3 l% A
- void TIM_ClearOC3Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
4 H0 t/ C9 T9 |+ o- B6 T. k4 ~, Z) q - void TIM_ClearOC4Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);$ T) M/ i4 n1 v) X
- void TIM_OC1PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);2 k* Q4 p, T& n) }
- void TIM_OC1NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);
& y$ j& _# f4 F7 ?# f2 ~ - void TIM_OC2PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
2 A( e9 Y0 n. H1 V3 L$ \ - void TIM_OC2NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);
5 v4 H; M! ~1 e& E! P1 y - void TIM_OC3PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);: p3 a3 A9 Z) A% n6 u, J X1 \
- void TIM_OC3NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);
7 j0 n: N, X/ V0 n8 | - void TIM_OC4PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);9 M1 V3 D5 m3 o$ W+ M+ A
- void TIM_CCxCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCx);
8 z- s! b4 c/ Z9 ~! p2 { - void TIM_CCxNCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCxN);4 \5 O) k+ l! d& _
/ H0 U+ d. D' Y- /* Input Capture management ***************************************************/. w1 Y9 R" z' D
- void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);
( u8 V) Z5 i3 x" V. d; J1 u - void TIM_ICStructInit(TIM_ICInitTypeDef* TIM_ICInitStruct);
! S6 f! z ^! {$ W7 Z( a9 B& V - void TIM_PWMIConfig(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);
& t. J& y" H/ U - uint32_t TIM_GetCapture1(TIM_TypeDef* TIMx);
7 ~: J9 |1 Z) i8 ^4 s7 L$ E4 p - uint32_t TIM_GetCapture2(TIM_TypeDef* TIMx);
; F* z4 p3 B/ W# a! W- d - uint32_t TIM_GetCapture3(TIM_TypeDef* TIMx);8 C6 W5 O) {, s( x E+ s0 R
- uint32_t TIM_GetCapture4(TIM_TypeDef* TIMx);
3 n: h: F& ?: \4 G6 t' f - void TIM_SetIC1Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
- w2 E$ D v5 d* Q - void TIM_SetIC2Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
' f6 j$ [ z# o - void TIM_SetIC3Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC); t! Y, M$ X n3 Z
- void TIM_SetIC4Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
1 c0 I5 i5 F3 v# B+ z5 C% {; N( N% e
! d; i2 c- w3 Y# P9 X- q9 q* q- /* Advanced-control timers (TIM1 and TIM8) specific features ******************/
. p1 O) P8 N& y0 _ - void TIM_BDTRConfig(TIM_TypeDef* TIMx, TIM_BDTRInitTypeDef *TIM_BDTRInitStruct);& `& b, b: J2 B( a/ F# |4 y4 ]: j% N
- void TIM_BDTRStructInit(TIM_BDTRInitTypeDef* TIM_BDTRInitStruct);
$ W3 P# ^) m9 a6 S - void TIM_CtrlPWMOutputs(TIM_TypeDef* TIMx, FunctionalState NewState);
8 y, E8 b R2 O/ z! l! O - void TIM_SelectCOM(TIM_TypeDef* TIMx, FunctionalState NewState);( M8 n. m9 u: Q/ s/ Y" ?$ W3 c
- void TIM_CCPreloadControl(TIM_TypeDef* TIMx, FunctionalState NewState);3 f c, A! T. e7 Z; g
- 1 D9 C l d& ?; Y) c
- /* Interrupts, DMA and flags management ***************************************/: q% [. ^* w* a8 e2 ^# d
- void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);
: N; m7 S! w ^/ X# C, C - void TIM_GenerateEvent(TIM_TypeDef* TIMx, uint16_t TIM_EventSource);
?" |9 g+ p: m# n - FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);7 d. u, f C& Q: F- k
- void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);; |/ P& n$ ~8 a; m5 x: d. \
- ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT);% l$ l) e* s' B. B
- void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT);! j7 A( ` D' S/ S8 ^9 @
- void TIM_DMAConfig(TIM_TypeDef* TIMx, uint16_t TIM_DMABase, uint16_t TIM_DMABurstLength);/ _7 f5 V" b# ?+ g3 @' K
- void TIM_DMACmd(TIM_TypeDef* TIMx, uint16_t TIM_DMASource, FunctionalState NewState);
# ]: ?& Z& X$ s: e - void TIM_SelectCCDMA(TIM_TypeDef* TIMx, FunctionalState NewState);, m/ Y) n) t2 P# R9 d# \1 J c
5 |( u3 m* l" K7 R5 r- /* Clocks management **********************************************************/
9 M6 |4 ]) q, B8 y8 H& U9 t - void TIM_InternalClockConfig(TIM_TypeDef* TIMx);- X5 I" g' g' T4 I
- void TIM_ITRxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);
1 @: ]6 m5 F! X" S - void TIM_TIxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_TIxExternalCLKSource,% c% z t# p8 v6 d% y$ U8 d
- uint16_t TIM_ICPolarity, uint16_t ICFilter);' }5 R1 b( ^" Y/ u: j, {% t
- void TIM_ETRClockMode1Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,
! k( ~% \: K( S. n; g# Y6 |4 N - uint16_t ExtTRGFilter);
2 ]+ t& i8 F" `! q; D/ T - void TIM_ETRClockMode2Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, $ n$ B* O$ A4 W2 O1 _
- uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter);
7 e1 x- D* u3 ]2 j. d4 M/ L! U6 n
: e6 Q& L/ Q! j( s/ f( P- /* Synchronization management *************************************************/
$ z8 w" W' I2 D1 q% u/ a - void TIM_SelectInputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);
% N6 f6 y$ X9 j - void TIM_SelectOutputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_TRGOSource);0 f# z0 s B! |6 U! \* M/ ~
- void TIM_SelectSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_SlaveMode);
9 s& j; P5 I5 F# }% y0 @ - void TIM_SelectMasterSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_MasterSlaveMode);
9 _: c8 G$ N5 ?3 v7 j4 A1 { - void TIM_ETRConfig(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,
# a4 z6 J, B# I/ r - uint16_t ExtTRGFilter);
( H, |; a0 q1 q( }
& o) y* [8 \3 [1 Z- U( u% G% ^- /* Specific interface management **********************************************/ : w4 K$ f" x: x: l& N4 F1 t
- void TIM_EncoderInterfaceConfig(TIM_TypeDef* TIMx, uint16_t TIM_EncoderMode,. ^/ J: R# y4 J
- uint16_t TIM_IC1Polarity, uint16_t TIM_IC2Polarity);
! Q- \2 i1 ^+ e7 F- l# I - void TIM_SelectHallSensor(TIM_TypeDef* TIMx, FunctionalState NewState);
" @% O. \5 c5 U6 i0 H- A6 h/ c5 b
$ |4 N: Q0 t1 {, Q: e- /* Specific remapping management **********************************************/
4 a j8 E% s; e: a# Q/ k - void TIM_RemapConfig(TIM_TypeDef* TIMx, uint16_t TIM_Remap);
复制代码 0 s; h8 r' z# J2 t$ Q+ v
04. 结构体封装
+ {6 O) J. c P. _8 m2 S- /** ( o O* z/ b+ u0 ^. i
- * @brief TIM0 D& j/ o% Q8 ~1 a" Q
- */
3 ^, F# ^* y' I% [% O' {
/ P, X/ L7 k1 O$ l; ~+ S( S- typedef struct
4 ^* r# A% Q& `) D8 h6 w6 a - {
3 U8 r+ y. s4 c5 a$ \ - __IO uint16_t CR1; /*!< TIM control register 1, Address offset: 0x00 */3 B |% b, g1 P* \8 t' ~0 |) l
- uint16_t RESERVED0; /*!< Reserved, 0x02 */0 I; P7 \* e/ Q6 t5 N
- __IO uint16_t CR2; /*!< TIM control register 2, Address offset: 0x04 */
4 h; ^6 e$ _" b, c6 ~% ?; _- Y* @ - uint16_t RESERVED1; /*!< Reserved, 0x06 */6 T3 F7 r2 J- T6 O* }
- __IO uint16_t SMCR; /*!< TIM slave mode control register, Address offset: 0x08 */9 o( M e( P R2 }! U. S- H
- uint16_t RESERVED2; /*!< Reserved, 0x0A */ N3 H1 i! y; l7 {* z
- __IO uint16_t DIER; /*!< TIM DMA/interrupt enable register, Address offset: 0x0C *// l, E# }! P G% K% b
- uint16_t RESERVED3; /*!< Reserved, 0x0E */
# d. X+ j% q& B/ h/ L - __IO uint16_t SR; /*!< TIM status register, Address offset: 0x10 */
: ^1 h1 D( n$ a; R2 M Z - uint16_t RESERVED4; /*!< Reserved, 0x12 */6 K% n, j0 V; H/ P1 }
- __IO uint16_t EGR; /*!< TIM event generation register, Address offset: 0x14 */
/ v" f8 x) p# \1 A - uint16_t RESERVED5; /*!< Reserved, 0x16 */7 F1 D; D& k! k$ }
- __IO uint16_t CCMR1; /*!< TIM capture/compare mode register 1, Address offset: 0x18 */: a$ j# O0 M q0 a( [
- uint16_t RESERVED6; /*!< Reserved, 0x1A */
# a% [2 G0 F/ s& ^ - __IO uint16_t CCMR2; /*!< TIM capture/compare mode register 2, Address offset: 0x1C */! _" e$ [7 D. s2 f t) j8 Z( N
- uint16_t RESERVED7; /*!< Reserved, 0x1E */
7 D0 d9 E' s- F - __IO uint16_t CCER; /*!< TIM capture/compare enable register, Address offset: 0x20 */
5 P9 G# \7 c) K0 l; N. C - uint16_t RESERVED8; /*!< Reserved, 0x22 */
8 C: H" J2 }* S8 V - __IO uint32_t CNT; /*!< TIM counter register, Address offset: 0x24 */- N3 F( @4 g$ j. l) Q$ O
- __IO uint16_t PSC; /*!< TIM prescaler, Address offset: 0x28 */
M& l' M' D( ?0 B - uint16_t RESERVED9; /*!< Reserved, 0x2A */$ y9 O" ?) y3 n5 I
- __IO uint32_t ARR; /*!< TIM auto-reload register, Address offset: 0x2C */9 U# S! @8 g; C X C/ B' B
- __IO uint16_t RCR; /*!< TIM repetition counter register, Address offset: 0x30 */- D5 \+ |/ o1 ~( D
- uint16_t RESERVED10; /*!< Reserved, 0x32 */
2 ?4 K4 c$ U4 Y# V# T% ^: k - __IO uint32_t CCR1; /*!< TIM capture/compare register 1, Address offset: 0x34 */+ a" Q, U' t" {! p' T
- __IO uint32_t CCR2; /*!< TIM capture/compare register 2, Address offset: 0x38 */. B; H1 d/ t F8 s+ t; @2 @
- __IO uint32_t CCR3; /*!< TIM capture/compare register 3, Address offset: 0x3C */: g+ M9 F- U1 T
- __IO uint32_t CCR4; /*!< TIM capture/compare register 4, Address offset: 0x40 */
2 j2 [ I$ r H3 B$ Q2 G# | U) O - __IO uint16_t BDTR; /*!< TIM break and dead-time register, Address offset: 0x44 */
$ S) W9 y& G' X' ? - uint16_t RESERVED11; /*!< Reserved, 0x46 */* q- I+ g/ {" T- Q- n u5 Q
- __IO uint16_t DCR; /*!< TIM DMA control register, Address offset: 0x48 */6 b0 u& R N; J2 R7 P
- uint16_t RESERVED12; /*!< Reserved, 0x4A */( g) f5 w5 Z9 ^; g6 h9 p
- __IO uint16_t DMAR; /*!< TIM DMA address for full transfer, Address offset: 0x4C */- b8 s& j& x; |( M* ?2 k
- uint16_t RESERVED13; /*!< Reserved, 0x4E */
$ V w0 m' x% @8 f. i - __IO uint16_t OR; /*!< TIM option register, Address offset: 0x50 */; ?3 w* X2 k- w- X* s& j( z
- uint16_t RESERVED14; /*!< Reserved, 0x52 */
% j! m3 J! l3 p! q: N - } TIM_TypeDef;
复制代码 9 G) l3 H' j+ y% _5 Q% j$ o- [
6 y. t" ]& h# c6 M6 C# H# o
) S; S2 D! d8 w |