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

【经验分享】STM32 定时器相关函数和类型

[复制链接]
STMCU小助手 发布时间:2022-6-13 17:40
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
  1. /**
    - U; q; a2 o7 x  w
  2.   * @brief  TIM Time Base Init structure definition  , I+ `, t+ y/ X2 N/ a) w- `
  3.   * @note   This structure is used with all TIMx except for TIM6 and TIM7.  
    . {( \) L% l& V+ m8 Z
  4.   */
    * M  b2 l# V* ]; v* d! g

  5. 9 _0 M6 M# U- T( n1 K
  6. typedef struct
    ! u) e7 B) ?# G7 ^
  7. {
    " j0 B! Z9 `0 J9 d/ E6 h
  8.   uint16_t TIM_Prescaler;         /*!< Specifies the prescaler value used to divide the TIM clock.$ s+ o) A$ K/ j/ M8 T
  9.                                        This parameter can be a number between 0x0000 and 0xFFFF */
    $ Z% C* _, ^1 x) o
  10. ( N# J7 ~* g! Z! G1 I
  11.   uint16_t TIM_CounterMode;       /*!< Specifies the counter mode.& Y9 O3 w6 @" r! V
  12.                                        This parameter can be a value of @ref TIM_Counter_Mode */. `5 d0 h& J4 i3 y
  13. $ f( \9 N5 T. _* Z% f  \1 G
  14.   uint32_t TIM_Period;            /*!< Specifies the period value to be loaded into the active
    ' O6 ~9 f4 u# Z/ J9 |: ?
  15.                                        Auto-Reload Register at the next update event.
    5 l. k1 A: T4 X# H3 l8 d. N
  16.                                        This parameter must be a number between 0x0000 and 0xFFFF.  */
    & E: [  p, {: o- e. z7 E

  17. 3 j) m( f+ ?- s  }
  18.   uint16_t TIM_ClockDivision;     /*!< Specifies the clock division.1 e. V2 B7 w3 b% ~
  19.                                       This parameter can be a value of @ref TIM_Clock_Division_CKD */8 Q& u' u8 z0 q  G! l  E- R

  20. " l% t. W9 {6 H
  21.   uint8_t TIM_RepetitionCounter;  /*!< Specifies the repetition counter value. Each time the RCR downcounter6 W( O' J' U" M+ v4 A3 e1 g( ?* [
  22.                                        reaches zero, an update event is generated and counting restarts' J  G) s% [1 s- a+ {
  23.                                        from the RCR value (N).
    3 q4 M3 [0 W: T2 X# S; y! \/ C
  24.                                        This means in PWM mode that (N+1) corresponds to:9 _8 h6 y( u: ]5 @% d
  25.                                           - the number of PWM periods in edge-aligned mode
    2 E4 ^' V' O2 \. m* l- H
  26.                                           - the number of half PWM period in center-aligned mode5 e) @4 E5 |, f" I
  27.                                        This parameter must be a number between 0x00 and 0xFF. 1 N0 o9 I% a# C% G$ N3 K% s! {
  28.                                        @note This parameter is valid only for TIM1 and TIM8. */
    ! h+ L- c  p. [
  29. } 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
  1. /**   i0 [$ V& a; w( `( O" q
  2.   * @brief  TIM Output Compare Init structure definition  * ~- K- M  y3 g; e4 D6 h( f
  3.   */% e" h. @) }9 Q0 c: e% C& i5 q* r7 l5 V5 Y
  4. 3 ?2 E  B2 A& t2 F, o+ `3 ^) k
  5. typedef struct8 H; K% r: r2 X  H
  6. {7 o4 p; D  U3 |* w
  7.   uint16_t TIM_OCMode;        /*!< Specifies the TIM mode.* j2 q' O. H) m+ a
  8.                                    This parameter can be a value of @ref TIM_Output_Compare_and_PWM_modes */3 k# d# P0 r$ l2 a0 z" x, D
  9. + T6 J: M7 V) X+ N7 t
  10.   uint16_t TIM_OutputState;   /*!< Specifies the TIM Output Compare state.
    1 _# D6 E6 d/ D' R& l/ r
  11.                                    This parameter can be a value of @ref TIM_Output_Compare_State */
    & i9 _& g1 Y4 [

  12. , e! A' `" ^0 W' }. U* ?5 C
  13.   uint16_t TIM_OutputNState;  /*!< Specifies the TIM complementary Output Compare state.' E4 l; X# J7 V" s8 V
  14.                                    This parameter can be a value of @ref TIM_Output_Compare_N_State
    - F2 L1 y  S& u0 c3 k# f  ~: L7 Q
  15.                                    @note This parameter is valid only for TIM1 and TIM8. */' l+ g: M. m2 s/ y$ M1 ~, Z7 F3 L
  16. 7 d) o  Z8 T2 m! t
  17.   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
  18.                                    This parameter can be a number between 0x0000 and 0xFFFF */; Y; X$ `5 C" p: B  e  i$ |& K; g
  19. " K* [! p1 }* m: B' @; S$ m* T9 l4 s
  20.   uint16_t TIM_OCPolarity;    /*!< Specifies the output polarity.( l9 S) Y: r1 X5 k  I
  21.                                    This parameter can be a value of @ref TIM_Output_Compare_Polarity */. |0 O! ~8 O$ H9 }. f

  22. ! C3 f. a; T; ^3 g: s  O, ]
  23.   uint16_t TIM_OCNPolarity;   /*!< Specifies the complementary output polarity.
    $ i3 J  Y3 t) `$ n
  24.                                    This parameter can be a value of @ref TIM_Output_Compare_N_Polarity: o8 q8 i: ?* d# C; y8 U- G' h
  25.                                    @note This parameter is valid only for TIM1 and TIM8. */
    3 U- y0 v8 t3 a0 t. U  Q* L
  26. 5 c1 Q' V/ ?9 A3 N) T+ D$ F3 U
  27.   uint16_t TIM_OCIdleState;   /*!< Specifies the TIM Output Compare pin state during Idle state.
    1 `6 K0 s0 f/ S# }6 }2 |) p! U
  28.                                    This parameter can be a value of @ref TIM_Output_Compare_Idle_State; c9 l- s* j/ Z" e: k+ A
  29.                                    @note This parameter is valid only for TIM1 and TIM8. */, w  p' P, w; z: O" e
  30. ; V7 A3 K; g! v- ?6 q
  31.   uint16_t TIM_OCNIdleState;  /*!< Specifies the TIM Output Compare pin state during Idle state.) w% A0 x' T$ H
  32.                                    This parameter can be a value of @ref TIM_Output_Compare_N_Idle_State0 r8 H& p4 f5 S1 o
  33.                                    @note This parameter is valid only for TIM1 and TIM8. */7 o: w8 ^! ^+ X: l
  34. } 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
  1. /**
    0 J9 P! v5 {0 C% r
  2.   * @brief  TIM Input Capture Init structure definition  
    5 q2 K% U- o; |5 \# w3 t' ?+ A
  3.   */
    - t9 O1 u6 S" J# \5 o/ \5 n1 T/ i

  4. 1 _& {$ }+ [8 S
  5. typedef struct, [$ g& M& _2 B1 @# K) ^4 P
  6. {; e' z  S6 Y9 O6 E/ G2 |

  7. / p- I$ s6 x% r/ p1 n
  8.   uint16_t TIM_Channel;      /*!< Specifies the TIM channel.7 j8 u* |) f/ l
  9.                                   This parameter can be a value of @ref TIM_Channel */
      H0 {& S. ?9 j, B1 |- M- G9 O6 ]
  10. 6 X! ?9 S2 {' K/ L. ~
  11.   uint16_t TIM_ICPolarity;   /*!< Specifies the active edge of the input signal.
    3 d9 g1 S" z- Z) s( N
  12.                                   This parameter can be a value of @ref TIM_Input_Capture_Polarity */& n. i' h; i+ A3 J
  13. * V5 d) Z; u: ?" Y* |
  14.   uint16_t TIM_ICSelection;  /*!< Specifies the input.$ }+ v# a' E8 |$ J6 j9 W* U
  15.                                   This parameter can be a value of @ref TIM_Input_Capture_Selection */
    ! \5 ~: `  E2 f. Q9 Y  ]  N

  16. 8 P: F  Z. s) `8 I, t
  17.   uint16_t TIM_ICPrescaler;  /*!< Specifies the Input Capture Prescaler.9 `  }7 k7 p0 u- |9 z
  18.                                   This parameter can be a value of @ref TIM_Input_Capture_Prescaler */0 K  o0 T, t4 B! A' ]
  19. 8 g$ C( M5 k# V# }
  20.   uint16_t TIM_ICFilter;     /*!< Specifies the input capture filter.. B/ N) f& \! J! M' o  f0 b- N
  21.                                   This parameter can be a number between 0x0 and 0xF */% b5 J$ o6 z2 L& \# n
  22. } TIM_ICInitTypeDef;
复制代码
+ o! {. B8 P) w/ R; O
TIM_BDTRInitTypeDef
/ h6 _6 L  Y6 ?  ^( d. k  N; ?0 v) [+ M% p! f$ ~' }! N$ O
  1. /**
    % E( r) s" z, _' r& d
  2.   * @brief  BDTR structure definition " c) H/ t6 p# w( q3 K+ X0 K& o
  3.   * @note   This structure is used only with TIM1 and TIM8.    6 T* s7 Z) A' D  Z3 P" _
  4.   */
      o! t  V$ d5 a5 R. Z$ p- T/ F- ?

  5. 1 j( V8 P2 w. i  c" t
  6. typedef struct# M# A: H0 f& w2 K6 P
  7. {
    ! M+ x: k. ^) I* U7 s# d# w
  8. ' L3 |) ?2 s+ U, U8 {9 P
  9.   uint16_t TIM_OSSRState;        /*!< Specifies the Off-State selection used in Run mode." L# d- |: b" v5 V# ~
  10.                                       This parameter can be a value of @ref TIM_OSSR_Off_State_Selection_for_Run_mode_state */
    7 T* m0 r6 _0 T

  11. : k2 u  S$ n* C# f
  12.   uint16_t TIM_OSSIState;        /*!< Specifies the Off-State used in Idle state.* Z1 l" I% Z7 C* h0 }+ P1 n8 _
  13.                                       This parameter can be a value of @ref TIM_OSSI_Off_State_Selection_for_Idle_mode_state */; N+ k8 S5 F) M+ _+ l' ]* V

  14. * @6 u5 q; ^3 R: A
  15.   uint16_t TIM_LOCKLevel;        /*!< Specifies the LOCK level parameters.- Q' W& c9 S7 n& \; {
  16.                                       This parameter can be a value of @ref TIM_Lock_level */ & L, M1 B; j. Y) S8 I. T
  17. 8 s$ j/ i& m/ u$ x' i
  18.   uint16_t TIM_DeadTime;         /*!< Specifies the delay time between the switching-off and the
    8 w6 {( x* }! u
  19.                                       switching-on of the outputs., Q9 _# Y% S! s" ]0 d
  20.                                       This parameter can be a number between 0x00 and 0xFF  */
    / ]5 [3 }8 O7 S8 h; z( c

  21. 6 D. G3 |; }' H0 `7 s+ r: F
  22.   uint16_t TIM_Break;            /*!< Specifies whether the TIM Break input is enabled or not.
    " Z3 a0 W$ A! B9 }
  23.                                       This parameter can be a value of @ref TIM_Break_Input_enable_disable */
    9 m/ ]3 ~* o! t: |: N
  24. * T, g( t  V8 s+ m, C4 c; z
  25.   uint16_t TIM_BreakPolarity;    /*!< Specifies the TIM Break Input pin polarity.
      ]+ H: @& E3 z% Q8 t# n* M  |! h8 X
  26.                                       This parameter can be a value of @ref TIM_Break_Polarity */
    ' L& c. w6 T4 j' m: Q/ a

  27. % s& W. c' A4 Z6 J  A6 x
  28.   uint16_t TIM_AutomaticOutput;  /*!< Specifies whether the TIM Automatic Output feature is enabled or not. * s* l4 n! @' `  |
  29.                                       This parameter can be a value of @ref TIM_AOE_Bit_Set_Reset */
    8 L  G! [* z* q5 ?7 l& M
  30. } 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
  1. /** @defgroup TIM_Exported_constants
    0 |6 c- e! v" X. C: O5 H
  2.   * @{
      c$ j! r5 e$ ?$ t1 M. m  }
  3.   */
    ( l5 }2 o7 u  x% O1 e1 h8 s  {3 Q7 N

  4. 9 v% [  t+ {# |: G, R+ e. S+ h
  5. #define IS_TIM_ALL_PERIPH(PERIPH) (((PERIPH) == TIM1) || \& x& Y) _6 V  f) t
  6.                                    ((PERIPH) == TIM2) || \
    0 H7 p) n# K# {$ g
  7.                                    ((PERIPH) == TIM3) || \
    & V3 C; ?1 d3 ]2 F/ f: G6 J
  8.                                    ((PERIPH) == TIM4) || \0 U4 ^$ R9 u2 S/ T
  9.                                    ((PERIPH) == TIM5) || \
    6 g" C& w! w% u8 Y
  10.                                    ((PERIPH) == TIM6) || \
    ) Y3 }" M$ c" K" D
  11.                                    ((PERIPH) == TIM7) || \
    2 Z7 q! ?' X5 O& B# t7 }
  12.                                    ((PERIPH) == TIM8) || \' z. n/ C. Q  a2 M& G/ M& Q
  13.                                    ((PERIPH) == TIM9) || \
    * j( A! U& U7 L! z* v
  14.                                    ((PERIPH) == TIM10) || \
    8 E% o4 f, \; Z& Y( `0 D1 m
  15.                                    ((PERIPH) == TIM11) || \: M5 [! J4 g" a# n
  16.                                    ((PERIPH) == TIM12) || \
    : v  r$ z9 l  [! G" L
  17.                                    (((PERIPH) == TIM13) || \
      a$ z; `5 p" ?8 o6 Y
  18.                                    ((PERIPH) == TIM14)))$ @, N7 \# C( {0 L
  19. /* LIST1: TIM1, TIM2, TIM3, TIM4, TIM5, TIM8, TIM9, TIM10, TIM11, TIM12, TIM13 and TIM14 */                                         + `) A+ ?7 T  L5 d! ]
  20. #define IS_TIM_LIST1_PERIPH(PERIPH) (((PERIPH) == TIM1) || \" D; o( U! F) Q8 L* T
  21.                                      ((PERIPH) == TIM2) || \8 ^5 n! z& u. U; ]2 ^+ E
  22.                                      ((PERIPH) == TIM3) || \
    ! w1 T6 A+ O! J& u+ f% W
  23.                                      ((PERIPH) == TIM4) || \
    , |+ y  @& w; r0 _0 h
  24.                                      ((PERIPH) == TIM5) || \
    7 j8 H! b+ _2 D9 w. Y) K) o
  25.                                      ((PERIPH) == TIM8) || \
    3 v0 j$ _( Q: F2 ]4 |. Y
  26.                                      ((PERIPH) == TIM9) || \
    ; S: a' [1 l! u7 j& D' v9 ^3 I: d
  27.                                      ((PERIPH) == TIM10) || \0 }( l* C+ Y% H0 C6 a8 O
  28.                                      ((PERIPH) == TIM11) || \
    , [# {# s  r' y5 H
  29.                                      ((PERIPH) == TIM12) || \! Z  P  c, ]& d+ x5 w& G# H
  30.                                      ((PERIPH) == TIM13) || \/ y8 p# h0 m! s- ^$ h
  31.                                      ((PERIPH) == TIM14))- z3 R4 S1 r( ~7 w
  32. 2 z7 X: t, K7 {; k0 L' R0 v9 z
  33. /* LIST2: TIM1, TIM2, TIM3, TIM4, TIM5, TIM8, TIM9 and TIM12 */
    3 [+ ~. x5 S2 O: Y/ f, F
  34. #define IS_TIM_LIST2_PERIPH(PERIPH) (((PERIPH) == TIM1) || \  c# @( Q9 W- m1 u) @1 q9 F
  35.                                      ((PERIPH) == TIM2) || \& W+ P) C. S' T# M- v
  36.                                      ((PERIPH) == TIM3) || \
    5 `! H$ f! D* S9 @5 K! x
  37.                                      ((PERIPH) == TIM4) || \  C- R* [6 G# S( t- }6 g# I
  38.                                      ((PERIPH) == TIM5) || \) F5 v( J" f  F- f! w3 d/ @2 o  c
  39.                                      ((PERIPH) == TIM8) || \; K: @$ i  i& u  B1 r5 a
  40.                                      ((PERIPH) == TIM9) || \
    2 B  i* `3 I, c6 ~* x% g
  41.                                      ((PERIPH) == TIM12))4 g2 A% B: R$ F# O1 c2 V
  42. /* LIST3: TIM1, TIM2, TIM3, TIM4, TIM5 and TIM8 */
    - R7 Z. T! O( C0 U- {1 M0 R! I
  43. #define IS_TIM_LIST3_PERIPH(PERIPH) (((PERIPH) == TIM1) || \0 c) h; T5 H2 e0 K& o
  44.                                      ((PERIPH) == TIM2) || \; R8 a' U  X6 G/ O3 F8 ?) i5 q
  45.                                      ((PERIPH) == TIM3) || \5 k3 ~/ y4 U: H4 g
  46.                                      ((PERIPH) == TIM4) || \
      p; z8 u: q5 V2 f  T
  47.                                      ((PERIPH) == TIM5) || \
    9 ?' w8 B/ m) R
  48.                                      ((PERIPH) == TIM8))+ k3 I! s! Z' w/ J3 d+ A* h
  49. /* LIST4: TIM1 and TIM8 */: E: B- y: U' ?! B: O& g  a$ [8 m% k5 z
  50. #define IS_TIM_LIST4_PERIPH(PERIPH) (((PERIPH) == TIM1) || \/ z0 \( D, e, t, H' Y7 l
  51.                                      ((PERIPH) == TIM8))
    7 ^& C+ R, E/ v) O6 d% Y# m4 X; d
  52. /* LIST5: TIM1, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7 and TIM8 */
    * e- J4 |7 k1 w4 H0 k. y
  53. #define IS_TIM_LIST5_PERIPH(PERIPH) (((PERIPH) == TIM1) || \
    . _: m* V2 @- p8 ^6 a
  54.                                      ((PERIPH) == TIM2) || \1 q- u1 H+ \$ S
  55.                                      ((PERIPH) == TIM3) || \
    . n( k% s6 D, A
  56.                                      ((PERIPH) == TIM4) || \& |# ]5 b8 W$ _
  57.                                      ((PERIPH) == TIM5) || \, q% C5 X8 f1 ^
  58.                                      ((PERIPH) == TIM6) || \
    . E" F; w, x$ X. d1 O
  59.                                      ((PERIPH) == TIM7) || \
    5 G. ?6 u$ x* r( K! |3 z" t7 i4 i
  60.                                      ((PERIPH) == TIM8))
    & F( b# J9 `, J6 a- r: }
  61. /* LIST6: TIM2, TIM5 and TIM11 */                               - D# i3 j( Z. c0 T, E
  62. #define IS_TIM_LIST6_PERIPH(TIMx)(((TIMx) == TIM2) || \
    / Q6 m5 n( n& \
  63.                                  ((TIMx) == TIM5) || \
    : J! h2 O3 D; J2 O. v" A% u
  64.                                  ((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
  1. /** @defgroup TIM_Output_Compare_and_PWM_modes 6 Z2 P9 a; f. i, h) f- N& D
  2.   * @{
    ( N1 m$ X1 n, d; C) ?4 n7 @
  3.   */
    " \8 w! T; C: W9 q$ _' q% X

  4. 2 g5 p$ C! d) p+ u& O& `
  5. #define TIM_OCMode_Timing                  ((uint16_t)0x0000)
    7 |1 N3 k8 j% g2 y$ r$ Q* h
  6. #define TIM_OCMode_Active                  ((uint16_t)0x0010)* _+ R  a) U1 X. ?% N1 G
  7. #define TIM_OCMode_Inactive                ((uint16_t)0x0020)1 |6 m5 d$ R, \
  8. #define TIM_OCMode_Toggle                  ((uint16_t)0x0030)
    9 v4 f, s4 W' ]9 D2 E# n; ^8 p
  9. #define TIM_OCMode_PWM1                    ((uint16_t)0x0060)
    " L- Y. W1 S6 ?& D7 @! i- |
  10. #define TIM_OCMode_PWM2                    ((uint16_t)0x0070)2 E3 D; a3 t) f* j' u
  11. #define IS_TIM_OC_MODE(MODE) (((MODE) == TIM_OCMode_Timing) || \
    4 [9 j+ y+ K# c% @
  12.                               ((MODE) == TIM_OCMode_Active) || \
    $ [# [7 ?; u% S. ^+ O
  13.                               ((MODE) == TIM_OCMode_Inactive) || \
    & r" ~( S" h( p4 N
  14.                               ((MODE) == TIM_OCMode_Toggle)|| \1 `, O0 {& g$ x) k
  15.                               ((MODE) == TIM_OCMode_PWM1) || \8 E, |0 B- b$ z8 `& s6 r+ k' T
  16.                               ((MODE) == TIM_OCMode_PWM2))
    - n% x, K, p) {& i/ \  ~8 f' Y
  17. #define IS_TIM_OCM(MODE) (((MODE) == TIM_OCMode_Timing) || \1 L: W0 x4 ?3 N8 H
  18.                           ((MODE) == TIM_OCMode_Active) || \- @5 J6 @" \, p
  19.                           ((MODE) == TIM_OCMode_Inactive) || \. Z$ t: _1 r# n6 v. @
  20.                           ((MODE) == TIM_OCMode_Toggle)|| \
      ^7 b5 ~% }! h
  21.                           ((MODE) == TIM_OCMode_PWM1) || \" g$ }4 n. k, F& ]; _0 e; `: _
  22.                           ((MODE) == TIM_OCMode_PWM2) ||        \
    " W9 Y$ o3 b8 m# g$ H5 n, v
  23.                           ((MODE) == TIM_ForcedAction_Active) || \
      w% j1 E2 J5 U1 a+ m0 p: G; S
  24.                           ((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
  1. /** @defgroup TIM_One_Pulse_Mode
    * f, @) m6 `0 t5 Z) v: k3 ^- i' i+ D
  2.   * @{
    % g& ^' P" `* `# {8 R% h, a% c1 b
  3.   */
    ( a/ p* p: N5 c9 f& k1 H

  4. 9 Q" G, D; C" E1 R' q
  5. #define TIM_OPMode_Single                  ((uint16_t)0x0008)
    * s/ d2 H9 k/ C: B" N
  6. #define TIM_OPMode_Repetitive              ((uint16_t)0x0000), Q: ^2 i0 Z2 S
  7. #define IS_TIM_OPM_MODE(MODE) (((MODE) == TIM_OPMode_Single) || \
    0 m4 `8 \6 ]. y0 Y+ e8 S: k* G9 y: y
  8.                                ((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 }
  1. /** @defgroup TIM_Channel
      z7 R/ S1 F9 g8 e$ H: E* F7 A
  2.   * @{, w3 Z, ?$ B3 m! d) J- C$ A! ^
  3.   */
    ) d) ^$ M# E4 T& u
  4. - |1 f  Y2 ]4 Q+ y
  5. #define TIM_Channel_1                      ((uint16_t)0x0000)! N8 l- S2 n; n4 r2 w
  6. #define TIM_Channel_2                      ((uint16_t)0x0004), z- e- Z- X* T/ ~0 e
  7. #define TIM_Channel_3                      ((uint16_t)0x0008)
    . O) J. H5 @1 n7 y+ G6 x
  8. #define TIM_Channel_4                      ((uint16_t)0x000C)& N# t- `+ J7 F7 E0 i/ k
  9. , }; c1 e- T) `* G
  10. #define IS_TIM_CHANNEL(CHANNEL) (((CHANNEL) == TIM_Channel_1) || \
    $ R4 J  a# E4 v. v
  11.                                  ((CHANNEL) == TIM_Channel_2) || \& F0 \( S5 g' V' |0 s* v$ Q# V2 Q) M
  12.                                  ((CHANNEL) == TIM_Channel_3) || \
    6 f' K2 h: u+ q/ m  B/ |
  13.                                  ((CHANNEL) == TIM_Channel_4))3 _+ j$ f2 J0 y6 E+ n, Y. V9 F4 S

  14. $ O- j. o- K% ?
  15. #define IS_TIM_PWMI_CHANNEL(CHANNEL) (((CHANNEL) == TIM_Channel_1) || \7 ]2 i$ {3 |" ~6 T9 j/ ^# i$ j' g
  16.                                       ((CHANNEL) == TIM_Channel_2))  |6 L) p! H0 e- D
  17. #define IS_TIM_COMPLEMENTARY_CHANNEL(CHANNEL) (((CHANNEL) == TIM_Channel_1) || \$ w2 l/ m" l( B9 V
  18.                                                ((CHANNEL) == TIM_Channel_2) || \: \7 z; b( h0 d3 h. o0 a& j2 |
  19.                                                ((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
  1. /** @defgroup TIM_Clock_Division_CKD
    & l" M; d! V+ m6 @+ I7 @
  2.   * @{- E% H" n- `* |( o' f
  3.   */
    * q( o; g! n) a' f/ S% N# h6 E
  4. 0 K9 @8 E" i% Z& U$ C! z
  5. #define TIM_CKD_DIV1                       ((uint16_t)0x0000)
    % \4 Y  [7 m* c$ L( w# u; J
  6. #define TIM_CKD_DIV2                       ((uint16_t)0x0100)6 h2 H, F) h1 y6 u1 y) X
  7. #define TIM_CKD_DIV4                       ((uint16_t)0x0200)
    3 {1 D$ H/ m, }% a3 s9 P( ^
  8. #define IS_TIM_CKD_DIV(DIV) (((DIV) == TIM_CKD_DIV1) || \
    * K9 w0 s+ r8 J
  9.                              ((DIV) == TIM_CKD_DIV2) || \1 W& J5 N6 A0 ~# z1 ]2 y
  10.                              ((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
  1. /** @defgroup TIM_Counter_Mode
    + O" v7 |& r" I. {1 H: s
  2.   * @{' u) [, m; S4 r. r: T
  3.   */
    0 J/ G) I8 K% |" T- P3 i) J5 N
  4. 0 {1 `+ y% }, Z# E- K
  5. #define TIM_CounterMode_Up                 ((uint16_t)0x0000)
    % Z+ A7 M, A4 D* x; {- r- R: v
  6. #define TIM_CounterMode_Down               ((uint16_t)0x0010)
    - F/ J( Z3 b$ r. {2 Z+ z
  7. #define TIM_CounterMode_CenterAligned1     ((uint16_t)0x0020)
    0 @8 O$ k" v. I. e& Q
  8. #define TIM_CounterMode_CenterAligned2     ((uint16_t)0x0040)% z$ Z, `  Y, f/ i* ]  J
  9. #define TIM_CounterMode_CenterAligned3     ((uint16_t)0x0060)
    1 s4 B6 I) W8 s7 x  o5 _* n
  10. #define IS_TIM_COUNTER_MODE(MODE) (((MODE) == TIM_CounterMode_Up) ||  \
      G- M% N' G( m* |8 B# N# U. `
  11.                                    ((MODE) == TIM_CounterMode_Down) || \
    ! o" ?7 {) v9 F$ n( V! I
  12.                                    ((MODE) == TIM_CounterMode_CenterAligned1) || \
    $ H5 ^1 O& O. s
  13.                                    ((MODE) == TIM_CounterMode_CenterAligned2) || \, V0 y( `3 C6 o* M- M$ C0 i
  14.                                    ((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 [
  1. /** @defgroup TIM_Output_Compare_Polarity 0 X) O. @7 Q- A. ^+ j
  2.   * @{" Q4 B: k' j9 y8 H
  3.   */8 }* i, ]9 _$ S9 ?1 u6 k- n. J7 o8 [
  4. ' \; q" d" C7 b* C
  5. #define TIM_OCPolarity_High                ((uint16_t)0x0000)
    / h. F" B7 g3 g2 r# J# M
  6. #define TIM_OCPolarity_Low                 ((uint16_t)0x0002)3 {3 Y. q  s. E! N9 R* S) d* E
  7. #define IS_TIM_OC_POLARITY(POLARITY) (((POLARITY) == TIM_OCPolarity_High) || \
    7 S2 h+ }) O+ {& O. k# [
  8.                                       ((POLARITY) == TIM_OCPolarity_Low))
复制代码

% e' q4 K1 ~7 v/ T0 w: s. \TIM_Output_Compare_N_Polarity
  1. /** @defgroup TIM_Output_Compare_N_Polarity # J! N0 \/ Z9 E2 k( h
  2.   * @{' M; a! {; ]8 E, i, a
  3.   */
    ' \( ~  \- K% L& _& V$ y0 {( x5 m

  4. ' |+ V+ @) p( N. y
  5. #define TIM_OCNPolarity_High               ((uint16_t)0x0000)
    - {* T' t; j: Z+ U& {
  6. #define TIM_OCNPolarity_Low                ((uint16_t)0x0008)
    3 y' H/ J) z  m; y7 g
  7. #define IS_TIM_OCN_POLARITY(POLARITY) (((POLARITY) == TIM_OCNPolarity_High) || \$ c: i/ C; `0 A2 z
  8.                                        ((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
  1. /** @defgroup TIM_Output_Compare_State
    1 G! n8 p6 o* c: ~1 q# h4 w
  2.   * @{
    2 y3 t$ x+ i) P( f$ y
  3.   */8 [/ v  D! _6 Z& l8 @4 R

  4. : w( s' V5 C3 w
  5. #define TIM_OutputState_Disable            ((uint16_t)0x0000), J" N* v  C/ z
  6. #define TIM_OutputState_Enable             ((uint16_t)0x0001)
    4 J: P/ j& W+ V1 ^% Y
  7. #define IS_TIM_OUTPUT_STATE(STATE) (((STATE) == TIM_OutputState_Disable) || \- N- o2 o! ]& w; Q) w) ]  }
  8.                                     ((STATE) == TIM_OutputState_Enable))
复制代码

3 C. O; Z3 \, h  kTIM_Output_Compare_N_State& P4 A8 r/ y7 _# b

$ u; k( A( c3 n
  1. /** @defgroup TIM_Output_Compare_N_State- \, s( o6 w) N
  2.   * @{0 b" Z; l7 J- E; ^0 K' P
  3.   */0 M2 W1 n) o5 D- v; `3 }* D

  4. 6 V1 o2 }2 f6 F& Z( n% n! V
  5. #define TIM_OutputNState_Disable           ((uint16_t)0x0000)
    4 }) T7 r' l( q4 d
  6. #define TIM_OutputNState_Enable            ((uint16_t)0x0004)
    " X9 |4 t" ?2 }$ F- ^; t
  7. #define IS_TIM_OUTPUTN_STATE(STATE) (((STATE) == TIM_OutputNState_Disable) || \! W/ E! B- k5 ~# P1 j: q$ V6 E2 o
  8.                                      ((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
  1. /** @defgroup TIM_Capture_Compare_State" _2 Z. d" `' E9 q2 S0 g
  2.   * @{
    ' x* D- }* M  K& a$ \0 u# f0 E9 M
  3.   */4 m2 R: R8 Z7 @4 ?# i- n

  4. 1 @; `& b6 u0 w; z& ^3 S
  5. #define TIM_CCx_Enable                      ((uint16_t)0x0001)7 z  e/ g0 g. n& C4 {0 x6 G& J
  6. #define TIM_CCx_Disable                     ((uint16_t)0x0000)8 s& ]1 |% V- @" w" c  L5 O
  7. #define IS_TIM_CCX(CCX) (((CCX) == TIM_CCx_Enable) || \7 Y1 P! y$ V+ h; Y+ r0 x  `8 D
  8.                          ((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
  1. /** @defgroup TIM_Capture_Compare_N_State
    $ J) Y6 M. c7 l& N, D% @9 U- k& B9 G
  2.   * @{
    8 `6 P4 z! a( V- y% k
  3.   */
    $ K7 ~, @  L+ v3 d
  4. ; V5 F! R4 F) {* a# K- C. p
  5. #define TIM_CCxN_Enable                     ((uint16_t)0x0004)
    * d' n& v4 V' N- i
  6. #define TIM_CCxN_Disable                    ((uint16_t)0x0000)
    9 n( A' x8 [) B# g0 c; }( s
  7. #define IS_TIM_CCXN(CCXN) (((CCXN) == TIM_CCxN_Enable) || \# E9 R3 E+ `* G1 T" ^- F; k  r
  8.                            ((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
  1. /** @defgroup TIM_Break_Input_enable_disable
    , H8 ]& d9 a4 m9 Q
  2.   * @{
      _, j2 W) R- G0 q6 X1 u
  3.   */
    1 B' F( z% Z! {! D

  4. ) `) M/ X8 f8 F+ f2 J( t
  5. #define TIM_Break_Enable                   ((uint16_t)0x1000)
    4 x9 O9 @0 t: \
  6. #define TIM_Break_Disable                  ((uint16_t)0x0000)( h0 ^; [4 P5 b, ~& q
  7. #define IS_TIM_BREAK_STATE(STATE) (((STATE) == TIM_Break_Enable) || \
    9 g, U& E9 f) g9 |* i+ L; B
  8.                                    ((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
  1. /** @defgroup TIM_Break_Polarity
    % o, k) s9 H* C6 P) l, R
  2.   * @{
    * T/ \# o5 O2 }% R1 {7 C
  3.   */* {& V- O5 s% a; o
  4. 3 q* m2 v6 m% w6 J6 V7 X
  5. #define TIM_BreakPolarity_Low              ((uint16_t)0x0000)
    ( g8 X. V% \0 J& l4 @$ u
  6. #define TIM_BreakPolarity_High             ((uint16_t)0x2000)
    ' _/ f$ P+ u* F* I4 K- T7 c
  7. #define IS_TIM_BREAK_POLARITY(POLARITY) (((POLARITY) == TIM_BreakPolarity_Low) || \
    1 L/ a1 I2 r1 ~
  8.                                          ((POLARITY) == TIM_BreakPolarity_High))
复制代码

( g) X3 }8 g1 v# L7 XTIM_AOE_Bit_Set_Reset- I, Y9 V2 q2 O6 N9 \& n: s1 X
  1. /** @defgroup TIM_AOE_Bit_Set_Reset
    3 R9 t' l5 ?7 [3 X8 |, p+ i
  2.   * @{+ a% R0 P* Z% S. M" S6 y
  3.   */3 l5 f3 U" ]2 _- ]1 }5 Z

  4. - J1 y; b) v4 B! Z0 E
  5. #define TIM_AutomaticOutput_Enable         ((uint16_t)0x4000)
    : i7 L6 C% f3 p/ _- r  z
  6. #define TIM_AutomaticOutput_Disable        ((uint16_t)0x0000)
    / F4 S# V; O2 P) `0 t& f& R
  7. #define IS_TIM_AUTOMATIC_OUTPUT_STATE(STATE) (((STATE) == TIM_AutomaticOutput_Enable) || \
    + H7 b4 F  z- `7 g1 R/ y9 i: ^
  8.                                               ((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 ?
  1. /** @defgroup TIM_Lock_level
    - B* T* a$ L$ V$ y1 b8 r% ?. x
  2.   * @{
    % b1 s5 s; O3 L# g& w( R
  3.   */: E5 U, ?* m* F
  4. . Z) H3 Y0 Q5 h
  5. #define TIM_LOCKLevel_OFF                  ((uint16_t)0x0000)
    & C1 @) q5 b& |, z1 W& ~
  6. #define TIM_LOCKLevel_1                    ((uint16_t)0x0100)
    6 S6 _" L! k2 W/ B- }' L
  7. #define TIM_LOCKLevel_2                    ((uint16_t)0x0200)* V5 J3 J" d9 C
  8. #define TIM_LOCKLevel_3                    ((uint16_t)0x0300)
    ( X* ?& i/ B# B# f/ ]
  9. #define IS_TIM_LOCK_LEVEL(LEVEL) (((LEVEL) == TIM_LOCKLevel_OFF) || \2 j9 W2 r$ v4 ?2 `5 ]
  10.                                   ((LEVEL) == TIM_LOCKLevel_1) || \3 z3 n1 Z4 v% @* v
  11.                                   ((LEVEL) == TIM_LOCKLevel_2) || \
    . [1 C- n8 m6 R0 C3 n# X( b# E3 G, u; D
  12.                                   ((LEVEL) == TIM_LOCKLevel_3))
复制代码

$ w9 U' R" a' _  j2 h/ a6 G1 ~TIM_OSSI_Off_State_Selection_for_Idle_mode_state
  1. /** @defgroup TIM_OSSI_Off_State_Selection_for_Idle_mode_state
    8 f; G3 k& H. B+ P7 ^
  2.   * @{# ^9 [) v0 V7 j6 [6 x, `
  3.   */$ l& y. k( _- K. Q

  4. / e$ ^! C4 p7 T& \6 a
  5. #define TIM_OSSIState_Enable               ((uint16_t)0x0400)
      ~: M' }! M& E* T8 J8 A
  6. #define TIM_OSSIState_Disable              ((uint16_t)0x0000)! W9 h5 }3 D; ?' p0 u
  7. #define IS_TIM_OSSI_STATE(STATE) (((STATE) == TIM_OSSIState_Enable) || \
      \0 C, h/ h0 j9 M& M
  8.                                   ((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
  1. /** @defgroup TIM_OSSR_Off_State_Selection_for_Run_mode_state% `. V3 Q( b4 j2 W  `
  2.   * @{
    & o4 U7 e0 r: ]% i1 B2 |# f
  3.   */9 b6 M6 K1 f) q7 k$ k
  4. : y; l9 s5 Q9 n) ]+ i
  5. #define TIM_OSSRState_Enable               ((uint16_t)0x0800)4 X/ S6 L9 y2 d7 R" w
  6. #define TIM_OSSRState_Disable              ((uint16_t)0x0000), I% L& |4 I3 U8 K( G: t4 Y" S2 l
  7. #define IS_TIM_OSSR_STATE(STATE) (((STATE) == TIM_OSSRState_Enable) || \
    3 p- y5 E; f9 c8 H+ p
  8.                                   ((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
  1. /** @defgroup TIM_Output_Compare_Idle_State * p5 x7 a3 {3 P# H; Z! l
  2.   * @{. a4 j7 i  u9 U! T
  3.   */; z  G8 c+ W  p0 ]
  4. & U$ {# _% B2 M/ J
  5. #define TIM_OCIdleState_Set                ((uint16_t)0x0100)1 |  o& Z7 y$ d$ C( Z. [; ?4 Q
  6. #define TIM_OCIdleState_Reset              ((uint16_t)0x0000)
    * d8 K# }4 O2 T1 D1 I6 a
  7. #define IS_TIM_OCIDLE_STATE(STATE) (((STATE) == TIM_OCIdleState_Set) || \
      ^5 T% t3 |& m, t
  8.                                     ((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
  1. /** @defgroup TIM_Output_Compare_N_Idle_State
    , S4 ]7 g5 O0 \" ?4 U. y5 }
  2.   * @{1 K' o9 f" u* Z+ @' u6 `
  3.   */- f7 H; d$ ~7 i9 F% N/ m" x" }& |7 C
  4. $ \9 V; _) v, c
  5. #define TIM_OCNIdleState_Set               ((uint16_t)0x0200)1 `2 {1 A* Z: C; e% f9 T
  6. #define TIM_OCNIdleState_Reset             ((uint16_t)0x0000), `+ ?8 w: B; I; ?8 r$ }
  7. #define IS_TIM_OCNIDLE_STATE(STATE) (((STATE) == TIM_OCNIdleState_Set) || \
    , g- c8 \) z0 O  j5 `
  8.                                      ((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% }
  1. /** @defgroup TIM_Input_Capture_Polarity + B/ O2 g+ r& l0 m
  2.   * @{) E) Q" v; b  |  Z0 H
  3.   */
    + j- ?3 o2 I! ]9 {7 {) Q. `8 D
  4. $ H& F1 N  H. I, s" e& u
  5. #define  TIM_ICPolarity_Rising             ((uint16_t)0x0000)
    0 S( J- x% E# l! Z* {
  6. #define  TIM_ICPolarity_Falling            ((uint16_t)0x0002)! I  g+ w% H( ?. ?  l
  7. #define  TIM_ICPolarity_BothEdge           ((uint16_t)0x000A)  t. Z' Z7 S4 j# R0 m' |+ ^
  8. #define IS_TIM_IC_POLARITY(POLARITY) (((POLARITY) == TIM_ICPolarity_Rising) || \
    + c" i* @9 |& ^  ?
  9.                                       ((POLARITY) == TIM_ICPolarity_Falling)|| \
    ) G2 R# l, X& d' z' ?( _% {$ |
  10.                                       ((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
  1. /** @defgroup TIM_Input_Capture_Selection
    # T; I& p+ j' d! _! A
  2.   * @{
    , D) U  W6 g( R8 P0 l" z9 v$ D
  3.   */6 G8 E4 `9 K) |6 c" ?" _: m/ d
  4. , s* X& E; r9 x" a
  5. #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
  6.                                                                    connected to IC1, IC2, IC3 or IC4, respectively */$ T% A7 F' U+ k4 _" e
  7. #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
  8.                                                                    connected to IC2, IC1, IC4 or IC3, respectively. */
    6 C, \7 {% l' A" Y8 k
  9. #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
  10. #define IS_TIM_IC_SELECTION(SELECTION) (((SELECTION) == TIM_ICSelection_DirectTI) || \
    8 c/ D, O/ Q5 S" @1 Q% }
  11.                                         ((SELECTION) == TIM_ICSelection_IndirectTI) || \
    6 {4 s0 R3 o; d0 q0 K
  12.                                         ((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
  1. /** @defgroup TIM_Input_Capture_Prescaler + l9 H8 ^- `& p8 p9 H
  2.   * @{
    1 t' R7 k7 z# j  J+ ?
  3.   */
    2 @) L( f* A" C, j& o; Q8 P# @
  4. ; l7 g0 W6 T7 Z; w) J4 |6 z
  5. #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
  6. #define TIM_ICPSC_DIV2                     ((uint16_t)0x0004) /*!< Capture performed once every 2 events. *// b8 \+ O% T- u5 C
  7. #define TIM_ICPSC_DIV4                     ((uint16_t)0x0008) /*!< Capture performed once every 4 events. */
    & s' p+ B  U( c3 Q! A2 w) y
  8. #define TIM_ICPSC_DIV8                     ((uint16_t)0x000C) /*!< Capture performed once every 8 events. *// `$ u$ T+ N( c) g& w
  9. #define IS_TIM_IC_PRESCALER(PRESCALER) (((PRESCALER) == TIM_ICPSC_DIV1) || \
    # v1 z5 B6 ]6 M  n2 @$ q
  10.                                         ((PRESCALER) == TIM_ICPSC_DIV2) || \
    9 {; e" z+ C6 e
  11.                                         ((PRESCALER) == TIM_ICPSC_DIV4) || \
    2 S0 y7 Y/ f: {/ B
  12.                                         ((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
  1. /** @defgroup TIM_interrupt_sources
    ( s( \  |0 Q7 N1 U8 g
  2.   * @{
    - l! E. X* b; b8 V" I
  3.   */; g1 j4 K  m, p+ V
  4. " D: ~* X2 C; i
  5. #define TIM_IT_Update                      ((uint16_t)0x0001)+ K9 a4 B5 U, G
  6. #define TIM_IT_CC1                         ((uint16_t)0x0002)
    $ T" ~- I" L; z# M8 B. e
  7. #define TIM_IT_CC2                         ((uint16_t)0x0004)
    - h6 `  f: \0 P1 g" S
  8. #define TIM_IT_CC3                         ((uint16_t)0x0008)! ]" |- c- k! u6 O* G
  9. #define TIM_IT_CC4                         ((uint16_t)0x0010)
    1 @, G# {; S4 P9 W4 g
  10. #define TIM_IT_COM                         ((uint16_t)0x0020)
    + w6 t% h; X+ l- l( D
  11. #define TIM_IT_Trigger                     ((uint16_t)0x0040)/ X& l* ?: ^8 R5 a# G
  12. #define TIM_IT_Break                       ((uint16_t)0x0080)$ B: X, o" ^- z
  13. #define IS_TIM_IT(IT) ((((IT) & (uint16_t)0xFF00) == 0x0000) && ((IT) != 0x0000))0 U  C, c- K2 k5 \  J" n
  14. 0 u! O+ {: G. P* I, D" a0 N5 b
  15. #define IS_TIM_GET_IT(IT) (((IT) == TIM_IT_Update) || \9 S2 I0 P8 R: F. K$ z& I1 R
  16.                            ((IT) == TIM_IT_CC1) || \8 k  s/ B' b" P3 z- }! I! i. k) p
  17.                            ((IT) == TIM_IT_CC2) || \, K6 `& Q6 f. X& v  q' _: G
  18.                            ((IT) == TIM_IT_CC3) || \
    ( B0 e4 O" W4 |
  19.                            ((IT) == TIM_IT_CC4) || \: }- c! x" X0 x% g  R
  20.                            ((IT) == TIM_IT_COM) || \
    2 U$ u5 C1 i* H5 M
  21.                            ((IT) == TIM_IT_Trigger) || \4 |; S; u! O8 z7 E# t4 V
  22.                            ((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 {
  1. /** @defgroup TIM_DMA_Base_address
    $ o8 ]4 T/ b, g! t
  2.   * @{
    0 t( |/ i' F1 @( s
  3.   */, {3 A- G) h) N: V" e
  4. * m$ Z, ^  h! g) l/ v# u
  5. #define TIM_DMABase_CR1                    ((uint16_t)0x0000)
    / e; K5 q( k2 N! y! w* o, O- T
  6. #define TIM_DMABase_CR2                    ((uint16_t)0x0001)
    - l: P9 }, w2 A" ]. B+ U5 C
  7. #define TIM_DMABase_SMCR                   ((uint16_t)0x0002)! F- j% j+ r3 j: I3 O* x- |
  8. #define TIM_DMABase_DIER                   ((uint16_t)0x0003)1 `" Q: p! E8 ^; V
  9. #define TIM_DMABase_SR                     ((uint16_t)0x0004)" q: I! U* w+ x0 f
  10. #define TIM_DMABase_EGR                    ((uint16_t)0x0005)3 J5 e( R2 p! {3 B) J, X
  11. #define TIM_DMABase_CCMR1                  ((uint16_t)0x0006)1 \8 u" H+ q' E$ W  X) T4 O
  12. #define TIM_DMABase_CCMR2                  ((uint16_t)0x0007)
    ) m" |+ ^1 x9 e
  13. #define TIM_DMABase_CCER                   ((uint16_t)0x0008)( b( P9 _- S9 q6 f* r
  14. #define TIM_DMABase_CNT                    ((uint16_t)0x0009)
    9 t' A3 x$ k8 A0 Z5 M
  15. #define TIM_DMABase_PSC                    ((uint16_t)0x000A)  @8 n2 ^- T' p* i+ A7 _* A4 {: @
  16. #define TIM_DMABase_ARR                    ((uint16_t)0x000B)+ J. c! t; E1 z2 n% X
  17. #define TIM_DMABase_RCR                    ((uint16_t)0x000C)- H. I: q) s, E2 N2 G( ]
  18. #define TIM_DMABase_CCR1                   ((uint16_t)0x000D), l* O7 K) E4 @5 w# o) |- \9 `
  19. #define TIM_DMABase_CCR2                   ((uint16_t)0x000E)
    2 a4 o: p+ V: v
  20. #define TIM_DMABase_CCR3                   ((uint16_t)0x000F)
    ; G2 k( k, J, {9 b3 I( h+ \
  21. #define TIM_DMABase_CCR4                   ((uint16_t)0x0010)2 T( J% J# Q& F. i* ?
  22. #define TIM_DMABase_BDTR                   ((uint16_t)0x0011)) A% h  b1 X7 @, s4 W. r7 O7 E
  23. #define TIM_DMABase_DCR                    ((uint16_t)0x0012)% ^2 [1 k1 B( ?3 f' L6 [( F
  24. #define TIM_DMABase_OR                     ((uint16_t)0x0013)
    ) e8 z0 Y# s9 v' t* V8 Q( @
  25. #define IS_TIM_DMA_BASE(BASE) (((BASE) == TIM_DMABase_CR1) || \
    ( N5 [; U! S1 }+ U
  26.                                ((BASE) == TIM_DMABase_CR2) || \( d' x) ]( O8 b- u- _
  27.                                ((BASE) == TIM_DMABase_SMCR) || \
    , v; x9 n7 E5 r1 Z+ E- G/ w) h; j7 V
  28.                                ((BASE) == TIM_DMABase_DIER) || \
    & X8 ^. W4 C0 R2 z- e% F0 \( Q' A: X
  29.                                ((BASE) == TIM_DMABase_SR) || \
    2 E6 L9 y& n4 P
  30.                                ((BASE) == TIM_DMABase_EGR) || \& H' {2 I- `# H! c- w
  31.                                ((BASE) == TIM_DMABase_CCMR1) || \$ f2 h- T4 o" ~; [1 P! {3 w; `
  32.                                ((BASE) == TIM_DMABase_CCMR2) || \6 G  e' ?8 `3 n: j6 m' x
  33.                                ((BASE) == TIM_DMABase_CCER) || \
    " s! s1 I. J: Q9 i, ^9 W2 [2 F
  34.                                ((BASE) == TIM_DMABase_CNT) || \
      p- h( q3 `* F; `' I0 c5 [6 b$ y
  35.                                ((BASE) == TIM_DMABase_PSC) || \
    " U( X* T* ~& _) A6 m& `' ~" o
  36.                                ((BASE) == TIM_DMABase_ARR) || \8 Q$ S; @0 J5 ^4 _
  37.                                ((BASE) == TIM_DMABase_RCR) || \# x$ g4 j  W+ K% {& W( K
  38.                                ((BASE) == TIM_DMABase_CCR1) || \
    4 W4 E+ ]! V! h' ?8 X; ]
  39.                                ((BASE) == TIM_DMABase_CCR2) || \: F/ b. s; O! ^( N& m
  40.                                ((BASE) == TIM_DMABase_CCR3) || \3 k$ _; c7 G) O% i; F+ p
  41.                                ((BASE) == TIM_DMABase_CCR4) || \3 R% }+ e& H+ P  N* f
  42.                                ((BASE) == TIM_DMABase_BDTR) || \
    # U, b8 e- }! R, q$ m3 S$ b
  43.                                ((BASE) == TIM_DMABase_DCR) || \
    . N% z6 v  v0 }) W- @
  44.                                ((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
  1. /** @defgroup TIM_DMA_Burst_Length
    7 H$ X6 \& V/ t; \7 t/ R* ?* D
  2.   * @{" m2 ?$ J1 d: _' s% J. P& f/ }
  3.   */
    ( Z& t" \- @; W# o0 q( i0 g

  4. 9 W5 q! B& R$ p! X  Y
  5. #define TIM_DMABurstLength_1Transfer           ((uint16_t)0x0000)- W0 o/ ]9 z* F0 p/ w3 _- L
  6. #define TIM_DMABurstLength_2Transfers          ((uint16_t)0x0100)1 c7 u1 @/ s- x/ f' F1 O5 M! J6 t  o
  7. #define TIM_DMABurstLength_3Transfers          ((uint16_t)0x0200)
    # H0 w% h% L( f. |% V- b9 L
  8. #define TIM_DMABurstLength_4Transfers          ((uint16_t)0x0300)
    ! l' _+ V" D* E% d5 _7 N
  9. #define TIM_DMABurstLength_5Transfers          ((uint16_t)0x0400)
    ( Y' P$ ^2 a2 W0 U# P3 |" b# e$ L
  10. #define TIM_DMABurstLength_6Transfers          ((uint16_t)0x0500): @% ^  r& w, h9 H* z+ U3 q
  11. #define TIM_DMABurstLength_7Transfers          ((uint16_t)0x0600)
    ! s9 y3 X4 O/ U# J
  12. #define TIM_DMABurstLength_8Transfers          ((uint16_t)0x0700)
    ) ?6 f9 e4 n- e2 E" x
  13. #define TIM_DMABurstLength_9Transfers          ((uint16_t)0x0800)
    # K! S  [' Q  r2 k, m4 T1 y( H
  14. #define TIM_DMABurstLength_10Transfers         ((uint16_t)0x0900)5 w  l1 L: P$ y" c
  15. #define TIM_DMABurstLength_11Transfers         ((uint16_t)0x0A00)) S" D1 U* D1 K" @0 O
  16. #define TIM_DMABurstLength_12Transfers         ((uint16_t)0x0B00)+ _/ {# a1 I! s( g
  17. #define TIM_DMABurstLength_13Transfers         ((uint16_t)0x0C00)
    . L4 P/ V6 h3 Q6 f
  18. #define TIM_DMABurstLength_14Transfers         ((uint16_t)0x0D00)
    ' P! k- T  j7 q! M1 v
  19. #define TIM_DMABurstLength_15Transfers         ((uint16_t)0x0E00)
    , t/ w/ D: k1 u" [
  20. #define TIM_DMABurstLength_16Transfers         ((uint16_t)0x0F00)% v2 ^! ~* B; g9 t
  21. #define TIM_DMABurstLength_17Transfers         ((uint16_t)0x1000)
    1 |; k. J  d% }5 t
  22. #define TIM_DMABurstLength_18Transfers         ((uint16_t)0x1100)+ L% y- s# }: w( ^
  23. #define IS_TIM_DMA_LENGTH(LENGTH) (((LENGTH) == TIM_DMABurstLength_1Transfer) || \
    " E+ i6 W: N# w$ {& m$ \" M
  24.                                    ((LENGTH) == TIM_DMABurstLength_2Transfers) || \
    # t$ q% `7 M; h6 b& p/ W5 g" ~) k! T
  25.                                    ((LENGTH) == TIM_DMABurstLength_3Transfers) || \
    ' A7 K) m8 u4 n, y$ R; H2 {* D
  26.                                    ((LENGTH) == TIM_DMABurstLength_4Transfers) || \1 s' `' |+ y" i: b
  27.                                    ((LENGTH) == TIM_DMABurstLength_5Transfers) || \
    % d3 i. `# M6 r- o. `) G6 G
  28.                                    ((LENGTH) == TIM_DMABurstLength_6Transfers) || \- W8 R( @7 T; _1 `3 J7 I! ~0 V
  29.                                    ((LENGTH) == TIM_DMABurstLength_7Transfers) || \
    8 _( [4 A) E0 A2 H: @
  30.                                    ((LENGTH) == TIM_DMABurstLength_8Transfers) || \# e! x3 G& D6 w% \2 }) ?8 X8 j
  31.                                    ((LENGTH) == TIM_DMABurstLength_9Transfers) || \# Z2 N& H, I  P6 A0 q6 X: H! n* p8 q
  32.                                    ((LENGTH) == TIM_DMABurstLength_10Transfers) || \4 E; L/ F& B0 o( {6 N, h- d7 o
  33.                                    ((LENGTH) == TIM_DMABurstLength_11Transfers) || \
    7 F- i$ _+ M% b
  34.                                    ((LENGTH) == TIM_DMABurstLength_12Transfers) || \
    9 ~! p7 T  d3 `1 `
  35.                                    ((LENGTH) == TIM_DMABurstLength_13Transfers) || \
    4 \6 U2 _4 G. _  ^8 w8 Q( i
  36.                                    ((LENGTH) == TIM_DMABurstLength_14Transfers) || \- i! r8 \& Q! J6 V3 i
  37.                                    ((LENGTH) == TIM_DMABurstLength_15Transfers) || \
    5 p6 f3 A2 i' ~4 w, d
  38.                                    ((LENGTH) == TIM_DMABurstLength_16Transfers) || \
      w: X+ f$ Z' w+ b; z! R
  39.                                    ((LENGTH) == TIM_DMABurstLength_17Transfers) || \3 ~/ s( ^/ c/ x! d9 v
  40.                                    ((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
  1. /** @defgroup TIM_DMA_sources
    $ o8 r2 \7 [7 \# Z
  2.   * @{
    ; a4 U7 t8 {( `, \
  3.   */9 n$ e" Z, B! U+ {' a

  4. ) ~$ f0 j; b7 r% v5 y7 M) w& a
  5. #define TIM_DMA_Update                     ((uint16_t)0x0100)
    , A' u* f3 T1 {
  6. #define TIM_DMA_CC1                        ((uint16_t)0x0200)9 v& ^, s) Y  |& p- b9 g) c
  7. #define TIM_DMA_CC2                        ((uint16_t)0x0400)/ |1 C: \( {2 w' s( A% w
  8. #define TIM_DMA_CC3                        ((uint16_t)0x0800)+ t: K+ _( N9 g: c3 c3 \+ l
  9. #define TIM_DMA_CC4                        ((uint16_t)0x1000)
    0 c: L: ~# k2 a+ }' M
  10. #define TIM_DMA_COM                        ((uint16_t)0x2000)
    : W2 l+ x; T; y( Q
  11. #define TIM_DMA_Trigger                    ((uint16_t)0x4000)
    2 o7 J1 y% g5 f/ N) {* o
  12. #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
  1. /** @defgroup TIM_External_Trigger_Prescaler
    7 R/ r, d0 m* \
  2.   * @{: L& ?7 w8 }4 M- F' f
  3.   */
    * v, G; k! r* J4 w6 ?' L
  4. 2 J  Y) g. b7 r
  5. #define TIM_ExtTRGPSC_OFF                  ((uint16_t)0x0000)
    ) G4 q% L5 S* r
  6. #define TIM_ExtTRGPSC_DIV2                 ((uint16_t)0x1000)3 q' h1 G; k( J/ X% ]5 o
  7. #define TIM_ExtTRGPSC_DIV4                 ((uint16_t)0x2000). z' n( x8 Y$ t8 z* e1 g- `+ B* c
  8. #define TIM_ExtTRGPSC_DIV8                 ((uint16_t)0x3000)8 f: M$ ?7 }( [% A, D7 V4 s
  9. #define IS_TIM_EXT_PRESCALER(PRESCALER) (((PRESCALER) == TIM_ExtTRGPSC_OFF) || \8 B! r2 f5 A2 }
  10.                                          ((PRESCALER) == TIM_ExtTRGPSC_DIV2) || \
    2 I  E4 A- x1 E% P9 t4 A& U) K/ \
  11.                                          ((PRESCALER) == TIM_ExtTRGPSC_DIV4) || \8 }+ j6 M8 u- Q; I
  12.                                          ((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
  1. /** @defgroup TIM_Internal_Trigger_Selection   s0 W" l9 K% q% ^9 w
  2.   * @{
    6 @$ y' y- m9 Q$ A1 H
  3.   */
    ! P% S. k2 j* z7 I0 W

  4. & D7 Q: z1 {+ ~0 v" F
  5. #define TIM_TS_ITR0                        ((uint16_t)0x0000)! z7 G: @4 N& g+ q- z1 s0 X4 q# |
  6. #define TIM_TS_ITR1                        ((uint16_t)0x0010)* d/ n, i0 i, A, K" i* T
  7. #define TIM_TS_ITR2                        ((uint16_t)0x0020)
    * H' B( R9 U# `# K/ j: c
  8. #define TIM_TS_ITR3                        ((uint16_t)0x0030)" ^5 D6 n' K0 k" M* g( x( i7 f
  9. #define TIM_TS_TI1F_ED                     ((uint16_t)0x0040)3 v& u* G7 t& B2 `  x+ \
  10. #define TIM_TS_TI1FP1                      ((uint16_t)0x0050)
    $ J* u7 v$ {) l, D' u2 }/ L
  11. #define TIM_TS_TI2FP2                      ((uint16_t)0x0060)
    * _% k/ A6 e! S- A! V& U/ p" K
  12. #define TIM_TS_ETRF                        ((uint16_t)0x0070)# k+ Z& X6 u, w, ^' J! O9 w9 x
  13. #define IS_TIM_TRIGGER_SELECTION(SELECTION) (((SELECTION) == TIM_TS_ITR0) || \
    6 {5 M% X3 x2 M; L0 W0 x
  14.                                              ((SELECTION) == TIM_TS_ITR1) || \7 f. B) y, Q7 S% R# _7 w
  15.                                              ((SELECTION) == TIM_TS_ITR2) || \
    0 r- I7 [" m: W
  16.                                              ((SELECTION) == TIM_TS_ITR3) || \) Z6 L: Y5 c" @% [& }) \" S
  17.                                              ((SELECTION) == TIM_TS_TI1F_ED) || \
    % K# ?5 ~& j+ c
  18.                                              ((SELECTION) == TIM_TS_TI1FP1) || \
    ! [; h6 L" G* [) e
  19.                                              ((SELECTION) == TIM_TS_TI2FP2) || \
    8 \0 X: m8 P% ^5 z" ^$ x& X$ J
  20.                                              ((SELECTION) == TIM_TS_ETRF))
    - ]9 M  G5 g  Q0 E6 a
  21. #define IS_TIM_INTERNAL_TRIGGER_SELECTION(SELECTION) (((SELECTION) == TIM_TS_ITR0) || \- z* Q! D4 Y* U3 D% u9 I3 r8 a7 u$ E
  22.                                                       ((SELECTION) == TIM_TS_ITR1) || \: U8 N2 \) D9 T# A, P+ r
  23.                                                       ((SELECTION) == TIM_TS_ITR2) || \
    $ ]; ?3 ~! C; ], \
  24.                                                       ((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
  1. /** @defgroup TIM_TIx_External_Clock_Source : S% e; [  T5 D- a' G
  2.   * @{' `( A* m7 V7 Q
  3.   */& K$ G2 @$ e7 D  \
  4. 4 w! F9 v' k( w% d- ?
  5. #define TIM_TIxExternalCLK1Source_TI1      ((uint16_t)0x0050)  V$ e- f, `5 D8 X; Y9 H& k+ z9 T0 x
  6. #define TIM_TIxExternalCLK1Source_TI2      ((uint16_t)0x0060)
    / y* J/ B0 c, |' B' W
  7. #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; `
  1. /** @defgroup TIM_External_Trigger_Polarity
    " @+ |& K7 f, H7 c. G; N/ w- U3 c7 }
  2.   * @{6 W9 u* e; S  W! n: W8 ]& s
  3.   */
    , U5 K: f; ~  F! h" n
  4. #define TIM_ExtTRGPolarity_Inverted        ((uint16_t)0x8000)
    & r+ ^' k  C) j& C/ {
  5. #define TIM_ExtTRGPolarity_NonInverted     ((uint16_t)0x0000)9 j: H3 l2 R/ @5 d* K1 ~
  6. #define IS_TIM_EXT_POLARITY(POLARITY) (((POLARITY) == TIM_ExtTRGPolarity_Inverted) || \
    . C9 e/ n/ d* a
  7.                                        ((POLARITY) == TIM_ExtTRGPolarity_NonInverted))
复制代码

9 `0 x  I8 U1 ?" [# W0 fTIM_Prescaler_Reload_Mode
; m' u" R( @, }$ S3 c" {* Q* P  N* l/ J4 [
  1. /** @defgroup TIM_Prescaler_Reload_Mode
    + y2 H7 {" h. B# [( a
  2.   * @{
    0 c0 _' p7 P# a  [: ], Y: }: i" B$ _
  3.   */& m; ~! o7 e% l4 F; c  P& M

  4. ' F; o% Z* `. W" T% a+ U. C
  5. #define TIM_PSCReloadMode_Update           ((uint16_t)0x0000)
    ) z8 R1 \8 i) Z5 O) Z
  6. #define TIM_PSCReloadMode_Immediate        ((uint16_t)0x0001)6 O) r/ M- Y1 L, b9 w3 D
  7. #define IS_TIM_PRESCALER_RELOAD(RELOAD) (((RELOAD) == TIM_PSCReloadMode_Update) || \
    * Q$ E. V! i8 h) I
  8.                                          ((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
  1. /** @defgroup TIM_Forced_Action
    & e; [0 T( l8 U" D3 `( w4 f
  2.   * @{
    + M6 X+ J* F: K3 D
  3.   */
    $ g6 G7 E. \% h8 ~
  4. " ~7 }, L7 F7 O( z+ P
  5. #define TIM_ForcedAction_Active            ((uint16_t)0x0050)
    # X& r3 X1 {+ ^8 O$ `& H
  6. #define TIM_ForcedAction_InActive          ((uint16_t)0x0040)% u/ c; t9 z2 U# G1 E) w' I; I" F$ O' E
  7. #define IS_TIM_FORCED_ACTION(ACTION) (((ACTION) == TIM_ForcedAction_Active) || \9 i. Y" F( j$ _' q# I, z
  8.                                       ((ACTION) == TIM_ForcedAction_InActive))
复制代码
# l  l3 f; \) F- c/ @( x
TIM_Encoder_Mode
% U9 E  a4 F# `. G6 F9 [4 p- @/ c; r& G
  1. /** @defgroup TIM_Encoder_Mode
    & P- p( r6 T# o. N" c! P
  2.   * @{8 S/ u# `" W5 G' |
  3.   */
    / _% F, B& ~  `' y, s- D4 y: o
  4. . X6 P" h$ N8 i- {- p
  5. #define TIM_EncoderMode_TI1                ((uint16_t)0x0001), y7 N* a0 b' K3 s
  6. #define TIM_EncoderMode_TI2                ((uint16_t)0x0002)
    , H3 m+ u0 A* b- v9 J; F
  7. #define TIM_EncoderMode_TI12               ((uint16_t)0x0003)
    , x9 ]% R" b  Z  @8 c5 D
  8. #define IS_TIM_ENCODER_MODE(MODE) (((MODE) == TIM_EncoderMode_TI1) || \
    7 Q1 r, C5 k4 J2 F
  9.                                    ((MODE) == TIM_EncoderMode_TI2) || \
    / X; s7 i9 `4 u
  10.                                    ((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
  1. /** @defgroup TIM_Event_Source : V- [& W# z7 R* @/ s2 |- S0 X' ]
  2.   * @{
      W# ^# e3 B" Q3 _. K, L$ j
  3.   */
    # b8 ^( f5 f; B, |
  4. ' e. |2 w( v1 D! l. x' `5 i- t1 o( M
  5. #define TIM_EventSource_Update             ((uint16_t)0x0001)$ I1 s% E8 F9 o+ j
  6. #define TIM_EventSource_CC1                ((uint16_t)0x0002)2 W8 U% Z, _7 s  [. n! N- J+ q( i9 X
  7. #define TIM_EventSource_CC2                ((uint16_t)0x0004), @- B+ Z5 n( g- H1 Y$ g" L' l
  8. #define TIM_EventSource_CC3                ((uint16_t)0x0008)! d& K. F7 B, ^
  9. #define TIM_EventSource_CC4                ((uint16_t)0x0010)) Y' `! g% U& d8 V) }
  10. #define TIM_EventSource_COM                ((uint16_t)0x0020)
    " M# t9 Z+ D" ^0 e/ r9 y; L
  11. #define TIM_EventSource_Trigger            ((uint16_t)0x0040)* |' N2 ~( G9 x8 {- q/ D3 G
  12. #define TIM_EventSource_Break              ((uint16_t)0x0080)- b& Y# t' U8 J% z  j
  13. #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
  1. /** @defgroup TIM_Update_Source
    7 E2 K4 m/ |$ i: X. h
  2.   * @{
    9 I7 B, \  m% t/ d8 f; P! e
  3.   */% I, _: T+ r; ?. J6 g

  4. % x% q; P3 d' P& F- S; Q
  5. #define TIM_UpdateSource_Global            ((uint16_t)0x0000) /*!< Source of update is the counter overflow/underflow, C$ v0 J; @7 y6 O" Y
  6.                                                                    or the setting of UG bit, or an update generation
    , E, L4 R; W) v! _" F
  7.                                                                    through the slave mode controller. */0 f% N1 k9 Y! C! _( d
  8. #define TIM_UpdateSource_Regular           ((uint16_t)0x0001) /*!< Source of update is counter overflow/underflow. */. C; d( O1 M8 e- t+ b
  9. #define IS_TIM_UPDATE_SOURCE(SOURCE) (((SOURCE) == TIM_UpdateSource_Global) || \; U4 |; S1 e3 B4 P* o' r/ b7 v1 {
  10.                                       ((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 `
  1. /** @defgroup TIM_Output_Compare_Preload_State : J# f" P+ I. [2 l4 C
  2.   * @{" `/ W3 K! Q3 M
  3.   */
    ( L# s6 y5 a" ^( w1 u$ A7 l2 n
  4. 0 e, U* T( y' `  \5 M* f
  5. #define TIM_OCPreload_Enable               ((uint16_t)0x0008)
    " w( d/ [$ R& n0 P/ N, Y7 P$ W
  6. #define TIM_OCPreload_Disable              ((uint16_t)0x0000)/ c) F7 u( f4 v3 Z8 o" ^$ G% c
  7. #define IS_TIM_OCPRELOAD_STATE(STATE) (((STATE) == TIM_OCPreload_Enable) || \
    4 y& ^, F  b; ?& n& h) d. U( t0 p( z( q
  8.                                        ((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
  1. /** @defgroup TIM_Output_Compare_Fast_State
    ! E5 i) B0 A/ ]2 K) o1 e) r" ^$ K
  2.   * @{
    $ m1 M& I: M" V0 S( T5 E$ ^* I
  3.   */: z/ S) l0 a- @' e7 |

  4. 4 I; m% ]* D1 B+ ^! u2 d) u
  5. #define TIM_OCFast_Enable                  ((uint16_t)0x0004)
    ; @0 f7 [& a0 F! V2 {
  6. #define TIM_OCFast_Disable                 ((uint16_t)0x0000)2 a# q1 G- y2 z) |- r
  7. #define IS_TIM_OCFAST_STATE(STATE) (((STATE) == TIM_OCFast_Enable) || \
    2 G8 f, s% i7 P* Z
  8.                                     ((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
  1. /** @defgroup TIM_Output_Compare_Clear_State
    4 W0 C) O2 M1 K' v& o
  2.   * @{
    & x( E2 e, U  v* @* N. W  R7 ?; H% o7 B
  3.   */$ ?3 c% |! E6 D3 c/ v% N

  4. * _9 a  H3 `/ X; a% J6 i
  5. #define TIM_OCClear_Enable                 ((uint16_t)0x0080)
    3 ?1 M; B0 |) v5 A9 ]( L
  6. #define TIM_OCClear_Disable                ((uint16_t)0x0000)3 h$ k+ w8 q: D# [
  7. #define IS_TIM_OCCLEAR_STATE(STATE) (((STATE) == TIM_OCClear_Enable) || \1 K8 m3 S9 M( z' Z- W
  8.                                      ((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
  1. /** @defgroup TIM_Trigger_Output_Source 0 u) m8 X  g8 W2 j/ h
  2.   * @{
    # B: V" }: q7 g, G
  3.   */
    - ^- B% [# G/ l$ B# B; ^4 {

  4. 6 k3 G% [: K0 K2 p) z: [
  5. #define TIM_TRGOSource_Reset               ((uint16_t)0x0000)
    $ y; [. f) |0 v& a* f7 v0 {
  6. #define TIM_TRGOSource_Enable              ((uint16_t)0x0010)
    3 H& m: Z2 q. w, I, o
  7. #define TIM_TRGOSource_Update              ((uint16_t)0x0020)7 e% ]/ ^' i# N+ o- z5 G
  8. #define TIM_TRGOSource_OC1                 ((uint16_t)0x0030)6 Y8 |+ e, f) a# ?0 E+ p& Z
  9. #define TIM_TRGOSource_OC1Ref              ((uint16_t)0x0040)4 h* z( M6 Q- Q4 B2 @0 U2 g
  10. #define TIM_TRGOSource_OC2Ref              ((uint16_t)0x0050)+ r& R. t' s( g$ _
  11. #define TIM_TRGOSource_OC3Ref              ((uint16_t)0x0060)
    3 g  B; x/ f! A2 o: ~0 q
  12. #define TIM_TRGOSource_OC4Ref              ((uint16_t)0x0070)/ H7 G+ r1 ?" [4 a
  13. #define IS_TIM_TRGO_SOURCE(SOURCE) (((SOURCE) == TIM_TRGOSource_Reset) || \  b+ G: W; S( H. c( A( X
  14.                                     ((SOURCE) == TIM_TRGOSource_Enable) || \
    ( H) B" B( m( q! O  q+ K4 P* k: l
  15.                                     ((SOURCE) == TIM_TRGOSource_Update) || \
    ! T: |# s, ~  \0 ~% n7 `
  16.                                     ((SOURCE) == TIM_TRGOSource_OC1) || \) }: f# G1 [4 u6 [7 U
  17.                                     ((SOURCE) == TIM_TRGOSource_OC1Ref) || \
    % E6 J: L3 }6 o# G
  18.                                     ((SOURCE) == TIM_TRGOSource_OC2Ref) || \" e! ?& A! C: k/ `
  19.                                     ((SOURCE) == TIM_TRGOSource_OC3Ref) || \
    . Y3 V% r0 s. b2 s
  20.                                     ((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
  1. /** @defgroup TIM_Slave_Mode
    , e. u) e1 ?8 U2 J: ~6 t
  2.   * @{
    & k$ @0 n" ]8 m% i  @, `* U7 X. p
  3.   */
    1 z. ]& I6 V" M# _, u

  4. $ {* U0 S9 y% B2 I3 A4 n' Z$ F
  5. #define TIM_SlaveMode_Reset                ((uint16_t)0x0004)" Q- ~, k! h3 |8 K: L' e
  6. #define TIM_SlaveMode_Gated                ((uint16_t)0x0005)3 I% X% X7 a7 Z
  7. #define TIM_SlaveMode_Trigger              ((uint16_t)0x0006)" V  n% j  L; D' B* B7 [1 G4 |
  8. #define TIM_SlaveMode_External1            ((uint16_t)0x0007)
    3 v4 a$ y% y  B1 i$ k4 B
  9. #define IS_TIM_SLAVE_MODE(MODE) (((MODE) == TIM_SlaveMode_Reset) || \/ i2 z$ d/ Q5 Q5 y* X; f
  10.                                  ((MODE) == TIM_SlaveMode_Gated) || \! r/ A! y) r/ d% x4 E
  11.                                  ((MODE) == TIM_SlaveMode_Trigger) || \
    + W5 |) f7 j9 K% e: W" h' H% ^
  12.                                  ((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
  1. /** @defgroup TIM_Master_Slave_Mode 2 B/ u& F; u% m# ?/ Y- B
  2.   * @{
    * v8 m$ T( j; W2 G7 ^
  3.   */" B1 u) c  ~) y+ K0 H, M2 Q
  4. : w, n: h3 z/ b5 |
  5. #define TIM_MasterSlaveMode_Enable         ((uint16_t)0x0080)
    + W3 g" o0 M9 ?2 c3 S
  6. #define TIM_MasterSlaveMode_Disable        ((uint16_t)0x0000)
    2 D9 p- f0 R. U$ F' s' K& j
  7. #define IS_TIM_MSM_STATE(STATE) (((STATE) == TIM_MasterSlaveMode_Enable) || \1 B. R& G8 X4 g3 V0 j
  8.                                  ((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& ^( ?
  1. /** @defgroup TIM_Remap
    # F* ]' X! T, G, n0 M% E+ W) [" N0 x9 U
  2.   * @{5 \3 e5 S7 z$ j  d  W1 w6 @
  3.   */, L# v2 L% z4 C, a, i, ?
  4. - ?0 C6 M. ~/ V  Y4 y
  5. #define TIM2_TIM8_TRGO                     ((uint16_t)0x0000)
    + v! f6 h8 {: y
  6. #define TIM2_ETH_PTP                       ((uint16_t)0x0400)* {! M- O( Y0 a3 B
  7. #define TIM2_USBFS_SOF                     ((uint16_t)0x0800)
    & w2 g5 R6 Y6 A2 Z0 i/ v7 H
  8. #define TIM2_USBHS_SOF                     ((uint16_t)0x0C00)
    - M( k& z+ T3 @$ b& p
  9. & z$ m/ l  \/ a# c+ W! h) l
  10. #define TIM5_GPIO                          ((uint16_t)0x0000)
    8 }9 \: Y7 p0 A5 l4 |# |
  11. #define TIM5_LSI                           ((uint16_t)0x0040)
    & U4 k' [) c& [1 ?
  12. #define TIM5_LSE                           ((uint16_t)0x0080)# J7 J/ ~+ U( ~  `( @2 e9 l9 E# p* X( P
  13. #define TIM5_RTC                           ((uint16_t)0x00C0)% p- u  z; r0 G: x1 x
  14. 4 C- d+ f; A; f1 o6 S; D' ]
  15. #define TIM11_GPIO                         ((uint16_t)0x0000)
    ' V5 S& D; h/ ]- g7 J1 L% O( }
  16. #define TIM11_HSE                          ((uint16_t)0x0002)* N! S$ l7 K/ k$ T+ l

  17. . g. I% ?1 u0 g7 y2 ^* K$ {) o
  18. #define IS_TIM_REMAP(TIM_REMAP)         (((TIM_REMAP) == TIM2_TIM8_TRGO)||\
    + s! B& D0 t2 R+ e9 C; B
  19.                                   ((TIM_REMAP) == TIM2_ETH_PTP)||\1 |9 b0 o; n5 h/ f$ f. O% O
  20.                                   ((TIM_REMAP) == TIM2_USBFS_SOF)||\
    * S$ _, f# i6 Y4 |
  21.                                   ((TIM_REMAP) == TIM2_USBHS_SOF)||\4 R6 s+ g0 l, _
  22.                                   ((TIM_REMAP) == TIM5_GPIO)||\
      G% P9 ^2 c: i
  23.                                   ((TIM_REMAP) == TIM5_LSI)||\8 [! T) E/ R2 e% K0 b
  24.                                   ((TIM_REMAP) == TIM5_LSE)||\
    4 |& N( C. o, D% u" T
  25.                                   ((TIM_REMAP) == TIM5_RTC)||\2 H  U! ~* p  m
  26.                                   ((TIM_REMAP) == TIM11_GPIO)||\
    ! L+ ?9 H/ u% k" u# H
  27.                                   ((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
  1. /** @defgroup TIM_Flags * j, A4 O5 Q+ ~" _
  2.   * @{
    % b8 {( U0 u  c9 N7 X% A
  3.   */
    ; _4 O3 u! `+ V! T6 D

  4. ( K' _' G: E2 @9 }. k% h) D
  5. #define TIM_FLAG_Update                    ((uint16_t)0x0001)
    ' r6 q% X% E% A* J2 C, n
  6. #define TIM_FLAG_CC1                       ((uint16_t)0x0002)( j* @2 R. _' P* J+ ~
  7. #define TIM_FLAG_CC2                       ((uint16_t)0x0004)
    ! j% M2 V- E9 I# v, `* a
  8. #define TIM_FLAG_CC3                       ((uint16_t)0x0008)9 ^$ g3 |1 F$ w3 T: J0 V
  9. #define TIM_FLAG_CC4                       ((uint16_t)0x0010)
      d* l5 _/ J4 Y" S) [) ]+ y' A* j
  10. #define TIM_FLAG_COM                       ((uint16_t)0x0020)  A! w" e. B6 G5 h
  11. #define TIM_FLAG_Trigger                   ((uint16_t)0x0040)  u; W* i. e( r
  12. #define TIM_FLAG_Break                     ((uint16_t)0x0080)- y, e4 V) j9 r  ^$ ]2 V0 `: F
  13. #define TIM_FLAG_CC1OF                     ((uint16_t)0x0200)8 o( {) U5 m) _7 S& s
  14. #define TIM_FLAG_CC2OF                     ((uint16_t)0x0400)2 q3 d" P9 S. P  r
  15. #define TIM_FLAG_CC3OF                     ((uint16_t)0x0800)
    1 t* ^0 ]/ h" T- }+ a3 B3 b9 I) j/ J
  16. #define TIM_FLAG_CC4OF                     ((uint16_t)0x1000)
    / Z* u; ~- a2 R& y! w
  17. #define IS_TIM_GET_FLAG(FLAG) (((FLAG) == TIM_FLAG_Update) || \1 H0 n" p2 h6 m5 i! N7 \
  18.                                ((FLAG) == TIM_FLAG_CC1) || \. R' I% F$ }' i& D( H$ Y
  19.                                ((FLAG) == TIM_FLAG_CC2) || \+ ~3 F2 P& F* B$ ^& l8 `/ x6 W$ L
  20.                                ((FLAG) == TIM_FLAG_CC3) || \
    6 K$ _( `& J: r
  21.                                ((FLAG) == TIM_FLAG_CC4) || \
    , @$ F* q( C( ^4 q2 H3 y+ l% u
  22.                                ((FLAG) == TIM_FLAG_COM) || \3 C  w, V- Z/ s) \3 m" J
  23.                                ((FLAG) == TIM_FLAG_Trigger) || \
    / U; |* n+ u* L, x2 X
  24.                                ((FLAG) == TIM_FLAG_Break) || \
    : V( @2 m3 O5 t( @' M6 h
  25.                                ((FLAG) == TIM_FLAG_CC1OF) || \
    6 I/ w7 u; n: G) L4 j& Q
  26.                                ((FLAG) == TIM_FLAG_CC2OF) || \
    0 W: d9 M3 n& F$ p! C/ x
  27.                                ((FLAG) == TIM_FLAG_CC3OF) || \; ?( l' }: V3 a4 _  b' ^
  28.                                ((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& {
  1. /** @defgroup TIM_Input_Capture_Filer_Value . d/ f9 i% M& p4 [$ U
  2.   * @{
    3 _/ V9 P% C! i2 K: A
  3.   */, t% E5 s( n; u" b! p

  4. $ g$ j- }5 J6 B* ]
  5. #define IS_TIM_IC_FILTER(ICFILTER) ((ICFILTER) <= 0xF) % {6 Q+ d& S9 O  }* g! b4 j3 k
  6. /**
    2 K& D4 P& p% @5 {! M" E$ {2 v
  7.   * @}! t  b+ d* I8 \  j) C
  8.   */
      m. n* O/ b! d! K# s- Q$ s/ s
  9. ! H: i+ G; F* m
  10. /** @defgroup TIM_External_Trigger_Filter
    ! R3 h) F- ]: j  i( G4 h5 E
  11.   * @{
    ! [% |: M9 U1 p0 c% ~+ f
  12.   */
    # @: r: @) w+ n6 s3 O

  13. ; m" c6 u. X7 D. F, Y
  14. #define IS_TIM_EXT_FILTER(EXTFILTER) ((EXTFILTER) <= 0xF): N' M5 m# V' }7 P
  15. /**
    ( c" S# {' N9 c9 w- }5 d
  16.   * @}
    * ?* g  [: m. }) E
  17.   */   {3 c, ^) `: }/ ~+ R0 |8 r9 J4 a/ R

  18. ; \8 v; D6 O$ I3 t5 }6 Y
  19. /** @defgroup TIM_Legacy
    + N* G, o& J# j5 D* {5 H7 {
  20.   * @{
    . g8 J, s5 T6 t6 k- ?3 V% `4 M
  21.   */
    , g+ b' ~7 H1 }1 |3 ~: c& z# i" g
  22. 5 U3 Z% r+ ?3 d" c, e
  23. #define TIM_DMABurstLength_1Byte           TIM_DMABurstLength_1Transfer
    , q8 x3 _: r( k4 J2 T7 p( P* q# `" u* z
  24. #define TIM_DMABurstLength_2Bytes          TIM_DMABurstLength_2Transfers
    ( P% P0 W7 W: b/ A( Q5 q$ }
  25. #define TIM_DMABurstLength_3Bytes          TIM_DMABurstLength_3Transfers
    9 u$ t' F* W6 }% B& {, N
  26. #define TIM_DMABurstLength_4Bytes          TIM_DMABurstLength_4Transfers: M; b( Q9 f8 y: r2 C/ Y2 R
  27. #define TIM_DMABurstLength_5Bytes          TIM_DMABurstLength_5Transfers
    6 `0 @$ b3 v; [# S3 V2 N0 U4 ~
  28. #define TIM_DMABurstLength_6Bytes          TIM_DMABurstLength_6Transfers% c9 Y( J( G  j* i
  29. #define TIM_DMABurstLength_7Bytes          TIM_DMABurstLength_7Transfers0 ?/ Y  t* m) h4 X4 K9 G: q% |
  30. #define TIM_DMABurstLength_8Bytes          TIM_DMABurstLength_8Transfers
    5 u/ U6 [4 k7 @
  31. #define TIM_DMABurstLength_9Bytes          TIM_DMABurstLength_9Transfers
      [, [6 K4 z* m& }* H3 e% Y. t
  32. #define TIM_DMABurstLength_10Bytes         TIM_DMABurstLength_10Transfers
    $ c) O+ b  F9 Z# |' F: R
  33. #define TIM_DMABurstLength_11Bytes         TIM_DMABurstLength_11Transfers
    * L+ M' `2 y% Q! A" k( F+ \6 P
  34. #define TIM_DMABurstLength_12Bytes         TIM_DMABurstLength_12Transfers. H- P+ b2 o0 A$ U0 Y) T, n
  35. #define TIM_DMABurstLength_13Bytes         TIM_DMABurstLength_13Transfers! I, _! O( {& }/ M' t% c
  36. #define TIM_DMABurstLength_14Bytes         TIM_DMABurstLength_14Transfers
      _! c- l0 V( H( L, z# T1 T
  37. #define TIM_DMABurstLength_15Bytes         TIM_DMABurstLength_15Transfers; ~3 a- C; x+ S+ \% g
  38. #define TIM_DMABurstLength_16Bytes         TIM_DMABurstLength_16Transfers/ x; l+ n% r& I- {& F
  39. #define TIM_DMABurstLength_17Bytes         TIM_DMABurstLength_17Transfers" O( c" Y/ x  K0 v7 N7 V
  40. #define TIM_DMABurstLength_18Bytes         TIM_DMABurstLength_18Transfers
复制代码
+ X2 g3 N. B' K4 M  p# B6 _& L
03. 相关函数4 {# T& a  S# J* F- j
  1. /* TimeBase management ********************************************************/+ F* T+ j7 [( l  l! u) j% q, F5 Q/ {. L- l
  2. void TIM_DeInit(TIM_TypeDef* TIMx);
    ! l9 E: B% v  Z# P' K) ~9 p
  3. void TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);% N  a5 k4 T/ {2 E
  4. void TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);
    / y- p. ~$ q4 l4 g0 r
  5. void TIM_PrescalerConfig(TIM_TypeDef* TIMx, uint16_t Prescaler, uint16_t TIM_PSCReloadMode);4 v7 x3 \3 |3 r+ Y; ]
  6. void TIM_CounterModeConfig(TIM_TypeDef* TIMx, uint16_t TIM_CounterMode);( u' B  A9 r) {+ ]0 P' E9 n
  7. void TIM_SetCounter(TIM_TypeDef* TIMx, uint32_t Counter);
    3 V6 l, w& H3 c) d! L6 |- n9 ?5 \
  8. void TIM_SetAutoreload(TIM_TypeDef* TIMx, uint32_t Autoreload);$ U: \/ Z, ~$ t/ {9 N& j' R( y8 Q
  9. uint32_t TIM_GetCounter(TIM_TypeDef* TIMx);
    ( J' G8 F" g' \2 c& K
  10. uint16_t TIM_GetPrescaler(TIM_TypeDef* TIMx);8 c7 q+ S! C: n, ~( r6 a) A
  11. void TIM_UpdateDisableConfig(TIM_TypeDef* TIMx, FunctionalState NewState);) b1 V+ F7 e7 X# N. u! ]. W
  12. void TIM_UpdateRequestConfig(TIM_TypeDef* TIMx, uint16_t TIM_UpdateSource);9 j7 {1 f& W$ n  T4 D
  13. void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState);. N5 J# N% ~2 L9 s: I4 ~4 b; ]
  14. void TIM_SelectOnePulseMode(TIM_TypeDef* TIMx, uint16_t TIM_OPMode);( ?8 u2 ~% t0 I" |! j5 x
  15. void TIM_SetClockDivision(TIM_TypeDef* TIMx, uint16_t TIM_CKD);
    , H9 D4 X4 z$ ?! c  I6 ^
  16. void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState);
    $ e4 d0 w2 w1 J$ C: N% I' f  Y
  17. + k: s/ N( }! \& |
  18. /* Output Compare management **************************************************/, `7 g/ ]* t1 q" y
  19. void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
    : L; ]3 V, }" a+ U
  20. void TIM_OC2Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);- k; b5 Q! Q7 T$ [
  21. void TIM_OC3Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
    ! I0 }4 {% \& T, Y8 c2 T
  22. void TIM_OC4Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
    ( Q& q! d% u1 K3 J+ Q2 T# x" L
  23. void TIM_OCStructInit(TIM_OCInitTypeDef* TIM_OCInitStruct);
    " C+ X3 O) q/ `3 a' V. `
  24. void TIM_SelectOCxM(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_OCMode);
    ( j. o6 R' C. l2 y. ?( k# Q
  25. void TIM_SetCompare1(TIM_TypeDef* TIMx, uint32_t Compare1);
    % x* r7 B/ E( w0 z8 R
  26. void TIM_SetCompare2(TIM_TypeDef* TIMx, uint32_t Compare2);
    ! D6 u+ e  j% Y# E% G' \1 h$ e
  27. void TIM_SetCompare3(TIM_TypeDef* TIMx, uint32_t Compare3);/ \8 \* K2 s- \2 A" `3 Y$ _
  28. void TIM_SetCompare4(TIM_TypeDef* TIMx, uint32_t Compare4);
      @8 P; b% f3 B
  29. void TIM_ForcedOC1Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);- Y# f4 v1 ]! B# g* r) K
  30. void TIM_ForcedOC2Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);9 a1 I1 v- x3 B% y
  31. void TIM_ForcedOC3Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
    % x/ Y; g) \! A$ d* j% f) _& ^
  32. void TIM_ForcedOC4Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
    2 d$ [0 X' j- @8 Y) S+ q5 `
  33. void TIM_OC1PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
    + Q  ]! p9 Q) u4 r
  34. void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);2 `2 g! A( m1 E
  35. void TIM_OC3PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
    ( j4 _6 L1 f, N
  36. void TIM_OC4PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);3 W2 r/ |  E+ ^; c1 _' X
  37. void TIM_OC1FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);. R. l! D! A- Y  p7 N7 I1 G1 J
  38. void TIM_OC2FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);/ V% W5 u9 u# V3 L. P. ]1 A" V
  39. void TIM_OC3FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
    ( m2 F! R. w: \% S, z1 G  P4 H: k( W
  40. void TIM_OC4FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);3 {$ z, c* v& @* Z2 G. a/ h
  41. void TIM_ClearOC1Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);' W3 C& H/ m5 z  O/ Z8 V
  42. void TIM_ClearOC2Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);6 y) e/ q$ A+ o3 l% A
  43. void TIM_ClearOC3Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
    4 H0 t/ C9 T9 |+ o- B6 T. k4 ~, Z) q
  44. void TIM_ClearOC4Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);$ T) M/ i4 n1 v) X
  45. void TIM_OC1PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);2 k* Q4 p, T& n) }
  46. void TIM_OC1NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);
    & y$ j& _# f4 F7 ?# f2 ~
  47. void TIM_OC2PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
    2 A( e9 Y0 n. H1 V3 L$ \
  48. void TIM_OC2NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);
    5 v4 H; M! ~1 e& E! P1 y
  49. void TIM_OC3PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);: p3 a3 A9 Z) A% n6 u, J  X1 \
  50. void TIM_OC3NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);
    7 j0 n: N, X/ V0 n8 |
  51. void TIM_OC4PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);9 M1 V3 D5 m3 o$ W+ M+ A
  52. void TIM_CCxCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCx);
    8 z- s! b4 c/ Z9 ~! p2 {
  53. void TIM_CCxNCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCxN);4 \5 O) k+ l! d& _

  54. / H0 U+ d. D' Y
  55. /* Input Capture management ***************************************************/. w1 Y9 R" z' D
  56. void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);
    ( u8 V) Z5 i3 x" V. d; J1 u
  57. void TIM_ICStructInit(TIM_ICInitTypeDef* TIM_ICInitStruct);
    ! S6 f! z  ^! {$ W7 Z( a9 B& V
  58. void TIM_PWMIConfig(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);
    & t. J& y" H/ U
  59. uint32_t TIM_GetCapture1(TIM_TypeDef* TIMx);
    7 ~: J9 |1 Z) i8 ^4 s7 L$ E4 p
  60. uint32_t TIM_GetCapture2(TIM_TypeDef* TIMx);
    ; F* z4 p3 B/ W# a! W- d
  61. uint32_t TIM_GetCapture3(TIM_TypeDef* TIMx);8 C6 W5 O) {, s( x  E+ s0 R
  62. uint32_t TIM_GetCapture4(TIM_TypeDef* TIMx);
    3 n: h: F& ?: \4 G6 t' f
  63. void TIM_SetIC1Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
    - w2 E$ D  v5 d* Q
  64. void TIM_SetIC2Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
    ' f6 j$ [  z# o
  65. void TIM_SetIC3Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);  t! Y, M$ X  n3 Z
  66. void TIM_SetIC4Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
    1 c0 I5 i5 F3 v# B+ z5 C% {; N( N% e

  67. ! d; i2 c- w3 Y# P9 X- q9 q* q
  68. /* Advanced-control timers (TIM1 and TIM8) specific features ******************/
    . p1 O) P8 N& y0 _
  69. void TIM_BDTRConfig(TIM_TypeDef* TIMx, TIM_BDTRInitTypeDef *TIM_BDTRInitStruct);& `& b, b: J2 B( a/ F# |4 y4 ]: j% N
  70. void TIM_BDTRStructInit(TIM_BDTRInitTypeDef* TIM_BDTRInitStruct);
    $ W3 P# ^) m9 a6 S
  71. void TIM_CtrlPWMOutputs(TIM_TypeDef* TIMx, FunctionalState NewState);
    8 y, E8 b  R2 O/ z! l! O
  72. void TIM_SelectCOM(TIM_TypeDef* TIMx, FunctionalState NewState);( M8 n. m9 u: Q/ s/ Y" ?$ W3 c
  73. void TIM_CCPreloadControl(TIM_TypeDef* TIMx, FunctionalState NewState);3 f  c, A! T. e7 Z; g
  74. 1 D9 C  l  d& ?; Y) c
  75. /* Interrupts, DMA and flags management ***************************************/: q% [. ^* w* a8 e2 ^# d
  76. void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);
    : N; m7 S! w  ^/ X# C, C
  77. void TIM_GenerateEvent(TIM_TypeDef* TIMx, uint16_t TIM_EventSource);
      ?" |9 g+ p: m# n
  78. FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);7 d. u, f  C& Q: F- k
  79. void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);; |/ P& n$ ~8 a; m5 x: d. \
  80. ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT);% l$ l) e* s' B. B
  81. void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT);! j7 A( `  D' S/ S8 ^9 @
  82. void TIM_DMAConfig(TIM_TypeDef* TIMx, uint16_t TIM_DMABase, uint16_t TIM_DMABurstLength);/ _7 f5 V" b# ?+ g3 @' K
  83. void TIM_DMACmd(TIM_TypeDef* TIMx, uint16_t TIM_DMASource, FunctionalState NewState);
    # ]: ?& Z& X$ s: e
  84. void TIM_SelectCCDMA(TIM_TypeDef* TIMx, FunctionalState NewState);, m/ Y) n) t2 P# R9 d# \1 J  c

  85. 5 |( u3 m* l" K7 R5 r
  86. /* Clocks management **********************************************************/
    9 M6 |4 ]) q, B8 y8 H& U9 t
  87. void TIM_InternalClockConfig(TIM_TypeDef* TIMx);- X5 I" g' g' T4 I
  88. void TIM_ITRxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);
    1 @: ]6 m5 F! X" S
  89. void TIM_TIxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_TIxExternalCLKSource,% c% z  t# p8 v6 d% y$ U8 d
  90.                                 uint16_t TIM_ICPolarity, uint16_t ICFilter);' }5 R1 b( ^" Y/ u: j, {% t
  91. void TIM_ETRClockMode1Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,
    ! k( ~% \: K( S. n; g# Y6 |4 N
  92.                              uint16_t ExtTRGFilter);
    2 ]+ t& i8 F" `! q; D/ T
  93. void TIM_ETRClockMode2Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, $ n$ B* O$ A4 W2 O1 _
  94.                              uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter);
    7 e1 x- D* u3 ]2 j. d4 M/ L! U6 n

  95. : e6 Q& L/ Q! j( s/ f( P
  96. /* Synchronization management *************************************************/
    $ z8 w" W' I2 D1 q% u/ a
  97. void TIM_SelectInputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);
    % N6 f6 y$ X9 j
  98. void TIM_SelectOutputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_TRGOSource);0 f# z0 s  B! |6 U! \* M/ ~
  99. void TIM_SelectSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_SlaveMode);
    9 s& j; P5 I5 F# }% y0 @
  100. void TIM_SelectMasterSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_MasterSlaveMode);
    9 _: c8 G$ N5 ?3 v7 j4 A1 {
  101. void TIM_ETRConfig(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,
    # a4 z6 J, B# I/ r
  102.                    uint16_t ExtTRGFilter);
    ( H, |; a0 q1 q( }

  103. & o) y* [8 \3 [1 Z- U( u% G% ^
  104. /* Specific interface management **********************************************/   : w4 K$ f" x: x: l& N4 F1 t
  105. void TIM_EncoderInterfaceConfig(TIM_TypeDef* TIMx, uint16_t TIM_EncoderMode,. ^/ J: R# y4 J
  106.                                 uint16_t TIM_IC1Polarity, uint16_t TIM_IC2Polarity);
    ! Q- \2 i1 ^+ e7 F- l# I
  107. void TIM_SelectHallSensor(TIM_TypeDef* TIMx, FunctionalState NewState);
    " @% O. \5 c5 U6 i0 H- A6 h/ c5 b

  108. $ |4 N: Q0 t1 {, Q: e
  109. /* Specific remapping management **********************************************/
    4 a  j8 E% s; e: a# Q/ k
  110. 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
  1. /** ( o  O* z/ b+ u0 ^. i
  2.   * @brief TIM0 D& j/ o% Q8 ~1 a" Q
  3.   */
    3 ^, F# ^* y' I% [% O' {

  4. / P, X/ L7 k1 O$ l; ~+ S( S
  5. typedef struct
    4 ^* r# A% Q& `) D8 h6 w6 a
  6. {
    3 U8 r+ y. s4 c5 a$ \
  7.   __IO uint16_t CR1;         /*!< TIM control register 1,              Address offset: 0x00 */3 B  |% b, g1 P* \8 t' ~0 |) l
  8.   uint16_t      RESERVED0;   /*!< Reserved, 0x02                                            */0 I; P7 \* e/ Q6 t5 N
  9.   __IO uint16_t CR2;         /*!< TIM control register 2,              Address offset: 0x04 */
    4 h; ^6 e$ _" b, c6 ~% ?; _- Y* @
  10.   uint16_t      RESERVED1;   /*!< Reserved, 0x06                                            */6 T3 F7 r2 J- T6 O* }
  11.   __IO uint16_t SMCR;        /*!< TIM slave mode control register,     Address offset: 0x08 */9 o( M  e( P  R2 }! U. S- H
  12.   uint16_t      RESERVED2;   /*!< Reserved, 0x0A                                            */  N3 H1 i! y; l7 {* z
  13.   __IO uint16_t DIER;        /*!< TIM DMA/interrupt enable register,   Address offset: 0x0C *// l, E# }! P  G% K% b
  14.   uint16_t      RESERVED3;   /*!< Reserved, 0x0E                                            */
    # d. X+ j% q& B/ h/ L
  15.   __IO uint16_t SR;          /*!< TIM status register,                 Address offset: 0x10 */
    : ^1 h1 D( n$ a; R2 M  Z
  16.   uint16_t      RESERVED4;   /*!< Reserved, 0x12                                            */6 K% n, j0 V; H/ P1 }
  17.   __IO uint16_t EGR;         /*!< TIM event generation register,       Address offset: 0x14 */
    / v" f8 x) p# \1 A
  18.   uint16_t      RESERVED5;   /*!< Reserved, 0x16                                            */7 F1 D; D& k! k$ }
  19.   __IO uint16_t CCMR1;       /*!< TIM capture/compare mode register 1, Address offset: 0x18 */: a$ j# O0 M  q0 a( [
  20.   uint16_t      RESERVED6;   /*!< Reserved, 0x1A                                            */
    # a% [2 G0 F/ s& ^
  21.   __IO uint16_t CCMR2;       /*!< TIM capture/compare mode register 2, Address offset: 0x1C */! _" e$ [7 D. s2 f  t) j8 Z( N
  22.   uint16_t      RESERVED7;   /*!< Reserved, 0x1E                                            */
    7 D0 d9 E' s- F
  23.   __IO uint16_t CCER;        /*!< TIM capture/compare enable register, Address offset: 0x20 */
    5 P9 G# \7 c) K0 l; N. C
  24.   uint16_t      RESERVED8;   /*!< Reserved, 0x22                                            */
    8 C: H" J2 }* S8 V
  25.   __IO uint32_t CNT;         /*!< TIM counter register,                Address offset: 0x24 */- N3 F( @4 g$ j. l) Q$ O
  26.   __IO uint16_t PSC;         /*!< TIM prescaler,                       Address offset: 0x28 */
      M& l' M' D( ?0 B
  27.   uint16_t      RESERVED9;   /*!< Reserved, 0x2A                                            */$ y9 O" ?) y3 n5 I
  28.   __IO uint32_t ARR;         /*!< TIM auto-reload register,            Address offset: 0x2C */9 U# S! @8 g; C  X  C/ B' B
  29.   __IO uint16_t RCR;         /*!< TIM repetition counter register,     Address offset: 0x30 */- D5 \+ |/ o1 ~( D
  30.   uint16_t      RESERVED10;  /*!< Reserved, 0x32                                            */
    2 ?4 K4 c$ U4 Y# V# T% ^: k
  31.   __IO uint32_t CCR1;        /*!< TIM capture/compare register 1,      Address offset: 0x34 */+ a" Q, U' t" {! p' T
  32.   __IO uint32_t CCR2;        /*!< TIM capture/compare register 2,      Address offset: 0x38 */. B; H1 d/ t  F8 s+ t; @2 @
  33.   __IO uint32_t CCR3;        /*!< TIM capture/compare register 3,      Address offset: 0x3C */: g+ M9 F- U1 T
  34.   __IO uint32_t CCR4;        /*!< TIM capture/compare register 4,      Address offset: 0x40 */
    2 j2 [  I$ r  H3 B$ Q2 G# |  U) O
  35.   __IO uint16_t BDTR;        /*!< TIM break and dead-time register,    Address offset: 0x44 */
    $ S) W9 y& G' X' ?
  36.   uint16_t      RESERVED11;  /*!< Reserved, 0x46                                            */* q- I+ g/ {" T- Q- n  u5 Q
  37.   __IO uint16_t DCR;         /*!< TIM DMA control register,            Address offset: 0x48 */6 b0 u& R  N; J2 R7 P
  38.   uint16_t      RESERVED12;  /*!< Reserved, 0x4A                                            */( g) f5 w5 Z9 ^; g6 h9 p
  39.   __IO uint16_t DMAR;        /*!< TIM DMA address for full transfer,   Address offset: 0x4C */- b8 s& j& x; |( M* ?2 k
  40.   uint16_t      RESERVED13;  /*!< Reserved, 0x4E                                            */
    $ V  w0 m' x% @8 f. i
  41.   __IO uint16_t OR;          /*!< TIM option register,                 Address offset: 0x50 */; ?3 w* X2 k- w- X* s& j( z
  42.   uint16_t      RESERVED14;  /*!< Reserved, 0x52                                            */
    % j! m3 J! l3 p! q: N
  43. } 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
收藏 评论0 发布时间:2022-6-13 17:40

举报

0个回答

所属标签

相似分享

官网相关资源

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