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

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

[复制链接]
STMCU小助手 发布时间:2022-6-13 17:40
01. TIM概述0 P6 {1 N; [5 z% a: }
stm32f4xx_tim.h和stm32f4xx_tim.c文件中
* M9 x8 Y8 {! V8 y5 G' \/ q. r% {( x7 M
02. 相关类型1 x/ }: Z; [" a/ u* n
TIM_TimeBaseInitTypeDef  b0 f0 C) P. n7 u8 @& R: V1 ~& [0 q% u

4 b8 {9 M3 V8 t) r& V/ }
  1. /** % m1 [. W2 }5 Y# S/ |2 E: Z0 r9 {3 u
  2.   * @brief  TIM Time Base Init structure definition  7 J0 L! v4 \; e
  3.   * @note   This structure is used with all TIMx except for TIM6 and TIM7.  * g* u2 f) T% P
  4.   */3 v2 E* j8 s; }
  5. . W. I) X: q" @- x0 B, J" g
  6. typedef struct
    ' N0 S3 F2 S0 L) b0 g" J& s8 I* {
  7. {
    4 F( U8 c) O) ~
  8.   uint16_t TIM_Prescaler;         /*!< Specifies the prescaler value used to divide the TIM clock.
      j# s/ ?2 X2 j' m5 O
  9.                                        This parameter can be a number between 0x0000 and 0xFFFF */) l: U3 e. G4 H; o
  10. , w7 o! w+ G$ a" w; K# U  s2 s
  11.   uint16_t TIM_CounterMode;       /*!< Specifies the counter mode.# P* j# ~2 @: J: }5 \" G; ?
  12.                                        This parameter can be a value of @ref TIM_Counter_Mode */
    0 |. {4 f% }7 U6 g; I# Z

  13. * M& O" A' {3 n6 Q: d& y4 s8 b
  14.   uint32_t TIM_Period;            /*!< Specifies the period value to be loaded into the active
    5 q9 X, F' g+ n6 u% V' a) L* O; p
  15.                                        Auto-Reload Register at the next update event.
    + i3 w# B0 u% @) @% z: f" e
  16.                                        This parameter must be a number between 0x0000 and 0xFFFF.  */ + X( C* m* e- f5 ^, N# q
  17. 7 R1 _& E8 @! g
  18.   uint16_t TIM_ClockDivision;     /*!< Specifies the clock division.1 Q1 L3 P- o& V! L( P+ i5 l
  19.                                       This parameter can be a value of @ref TIM_Clock_Division_CKD */2 Z) ]! U7 L1 }2 h
  20. " A5 L4 o5 n- Z4 [) M7 ~( }: d9 a
  21.   uint8_t TIM_RepetitionCounter;  /*!< Specifies the repetition counter value. Each time the RCR downcounter$ ]3 F8 `7 S3 H1 ^8 P3 T3 z' g
  22.                                        reaches zero, an update event is generated and counting restarts  k! g- j( f% s8 T4 n- Z
  23.                                        from the RCR value (N).4 B6 R) m3 I3 ?& k0 h
  24.                                        This means in PWM mode that (N+1) corresponds to:# V) [" y! i+ ]6 E
  25.                                           - the number of PWM periods in edge-aligned mode
    7 L) n% d  ~+ d) X- s% T4 B
  26.                                           - the number of half PWM period in center-aligned mode9 N  v0 S, z7 o7 r! C1 b
  27.                                        This parameter must be a number between 0x00 and 0xFF. 9 O7 F- r" J; B
  28.                                        @note This parameter is valid only for TIM1 and TIM8. */7 i4 y% y; R$ G+ J
  29. } TIM_TimeBaseInitTypeDef;
复制代码

9 O0 p" r; D6 ~TIM_OCInitTypeDef! K- O7 P7 p. s( E' t4 b! `3 w
+ W2 j1 |0 N8 p7 q0 h3 C( u! Z. X
  1. /** 4 T7 o8 I& @# @6 H
  2.   * @brief  TIM Output Compare Init structure definition  
    ( u, W! V) ]/ o3 x, X: s
  3.   */+ c& U" \1 E/ @8 u. G* m9 S

  4. $ n( L# x/ r/ p: `6 [5 h+ T) C
  5. typedef struct
    . W* Z7 q9 O$ z) g( D
  6. {6 \/ ~. X0 T' Z6 h  G2 l4 v
  7.   uint16_t TIM_OCMode;        /*!< Specifies the TIM mode., q6 N: O+ V$ c7 t
  8.                                    This parameter can be a value of @ref TIM_Output_Compare_and_PWM_modes */) t0 ?  N% P; u) c$ p
  9. # e+ O5 Q) j; J2 }6 T7 X1 ]
  10.   uint16_t TIM_OutputState;   /*!< Specifies the TIM Output Compare state.
    9 @+ Q1 F& o. M$ l/ |
  11.                                    This parameter can be a value of @ref TIM_Output_Compare_State */* {) D5 A1 ]9 ]6 [2 ]" k
  12. % E$ v& }, g* E5 |4 R' H
  13.   uint16_t TIM_OutputNState;  /*!< Specifies the TIM complementary Output Compare state.
    + `3 a- S1 X3 p" o) j6 J% i
  14.                                    This parameter can be a value of @ref TIM_Output_Compare_N_State
    8 g1 R& M2 O! ^& X: K
  15.                                    @note This parameter is valid only for TIM1 and TIM8. */- {8 k6 |% l& T4 O' e4 V

  16. - m8 O' {3 _4 z& ]3 w2 T$ E6 u
  17.   uint32_t TIM_Pulse;         /*!< Specifies the pulse value to be loaded into the Capture Compare Register. + |' ^! Y/ ]& F$ u8 P" S
  18.                                    This parameter can be a number between 0x0000 and 0xFFFF */
    2 j+ a* C* a! Z3 i1 l/ D4 @

  19. # ?- C) B; S( }  V( P' w
  20.   uint16_t TIM_OCPolarity;    /*!< Specifies the output polarity.4 {- a7 Q: `- z7 X5 ~
  21.                                    This parameter can be a value of @ref TIM_Output_Compare_Polarity */* g5 {! v" \4 ^0 P8 F* A+ r, K
  22. ' j7 l! }3 |: Q1 w% A- M
  23.   uint16_t TIM_OCNPolarity;   /*!< Specifies the complementary output polarity.
    ( G% ^: @; V' |9 {0 c% P
  24.                                    This parameter can be a value of @ref TIM_Output_Compare_N_Polarity
    " S: X1 @" B! D0 F6 n, p; ^/ C
  25.                                    @note This parameter is valid only for TIM1 and TIM8. */" B) u6 _  s% G1 `' v/ O, Q3 P

  26. ) `' f7 o! U% W, t2 V
  27.   uint16_t TIM_OCIdleState;   /*!< Specifies the TIM Output Compare pin state during Idle state.
    1 n( ?$ p7 q7 `+ u2 z* N
  28.                                    This parameter can be a value of @ref TIM_Output_Compare_Idle_State, x# [4 m$ i) [6 B, j7 z0 y9 L* Y5 N
  29.                                    @note This parameter is valid only for TIM1 and TIM8. */4 I  s3 {! Z5 C& I# U

  30. 7 i  E' L7 l/ W# C
  31.   uint16_t TIM_OCNIdleState;  /*!< Specifies the TIM Output Compare pin state during Idle state.
    % J7 y  h) j- c9 ]
  32.                                    This parameter can be a value of @ref TIM_Output_Compare_N_Idle_State9 D+ w# c3 H/ ]1 s* r
  33.                                    @note This parameter is valid only for TIM1 and TIM8. */
    ! s+ ]% t) c. ^) Q, `; J
  34. } TIM_OCInitTypeDef;
复制代码
# o  S. f: f- p6 h9 ^( y& E& W' O
TIM_ICInitTypeDef1 I( V9 A! O9 U7 U
1 y2 i4 G+ H* b# O  ~
  1. /**
    1 w% O$ y0 U# O' l' w. Q" H) t, t
  2.   * @brief  TIM Input Capture Init structure definition  
    % M7 d2 l% w! ~) o# s/ q
  3.   */
    5 i" F5 l, N) t! T/ p

  4. # n9 W2 m0 O5 e$ L# h
  5. typedef struct
    ; e3 p* h7 p$ F. A6 S* v
  6. {; e: \# ]2 X/ O% o
  7. 7 W- N5 J, R8 w3 E, [& d" E3 B: V5 {
  8.   uint16_t TIM_Channel;      /*!< Specifies the TIM channel.
    3 U7 g  J1 K( s9 C" c+ Z
  9.                                   This parameter can be a value of @ref TIM_Channel */2 {: Y/ C8 Q2 c( a7 r

  10. 3 y) v+ q# u+ B$ l7 W3 L1 H% J) ^3 \3 T
  11.   uint16_t TIM_ICPolarity;   /*!< Specifies the active edge of the input signal./ J8 C$ X) i6 n* x  r$ y" X
  12.                                   This parameter can be a value of @ref TIM_Input_Capture_Polarity */9 O  K( f; G+ d; w# o

  13. - V/ M  M: t+ X# O
  14.   uint16_t TIM_ICSelection;  /*!< Specifies the input.
    $ u# U! ?' H! W4 G; |
  15.                                   This parameter can be a value of @ref TIM_Input_Capture_Selection */
    # j0 A) Z! x1 U# f( N

  16. % C4 p7 p- t/ U1 b. h
  17.   uint16_t TIM_ICPrescaler;  /*!< Specifies the Input Capture Prescaler.1 O' Q* z4 f; S
  18.                                   This parameter can be a value of @ref TIM_Input_Capture_Prescaler */8 ~' E! `2 m0 ~0 r! \

  19. 2 t/ `/ E: P) g7 Q) ^- w: J
  20.   uint16_t TIM_ICFilter;     /*!< Specifies the input capture filter.
      T4 m/ y9 ]0 ~4 p9 g3 z. ]1 _- `
  21.                                   This parameter can be a number between 0x0 and 0xF */
    $ j, y3 v" J( X! y
  22. } TIM_ICInitTypeDef;
复制代码

) Z* P" Z9 C" @TIM_BDTRInitTypeDef
1 l* @2 i; c8 x' [8 D4 f) K$ E. i* a0 k* p3 w9 E1 e( v
  1. /** 4 }! i% I- B) s) R$ N3 {6 y4 p
  2.   * @brief  BDTR structure definition ( ?/ `! b* k2 O. S9 x( b, N
  3.   * @note   This structure is used only with TIM1 and TIM8.   
    : f. |  x8 Q" q& l' B
  4.   */
    8 s3 M2 }* J. o$ D) g5 ^: i5 ?
  5. & |5 e7 d3 `8 ^+ _) H; F
  6. typedef struct
    . \# r6 w0 ]5 s9 w1 k6 z
  7. {
    # \8 i/ j' `$ B
  8. 5 q; w; C3 f0 \! C% V
  9.   uint16_t TIM_OSSRState;        /*!< Specifies the Off-State selection used in Run mode.' l2 Y- h+ h% h. c* A
  10.                                       This parameter can be a value of @ref TIM_OSSR_Off_State_Selection_for_Run_mode_state */, Q  t; w& M# Y7 o
  11. # ^) L4 I# F5 K0 }1 Z
  12.   uint16_t TIM_OSSIState;        /*!< Specifies the Off-State used in Idle state.+ Q$ K% [. B8 \) m! _
  13.                                       This parameter can be a value of @ref TIM_OSSI_Off_State_Selection_for_Idle_mode_state */" K: n4 J" w9 T3 I9 P3 i; u: \
  14. 8 b8 Q5 l! l9 y! g$ }9 f3 J  L
  15.   uint16_t TIM_LOCKLevel;        /*!< Specifies the LOCK level parameters.
    7 k# j2 [; b% f
  16.                                       This parameter can be a value of @ref TIM_Lock_level */
    * p  P( T& B6 x& |
  17. . h. m5 [( [9 l6 b
  18.   uint16_t TIM_DeadTime;         /*!< Specifies the delay time between the switching-off and the
    " H! w1 o' ]. \3 _- Z8 U
  19.                                       switching-on of the outputs.
    ' L: a$ N  _" f
  20.                                       This parameter can be a number between 0x00 and 0xFF  */) ^; u% Q1 K' s$ M; _7 f  N$ a
  21. 5 c$ M: u8 ?5 Q+ D
  22.   uint16_t TIM_Break;            /*!< Specifies whether the TIM Break input is enabled or not. - Y! w1 w0 y# c3 q  n* q; x" b
  23.                                       This parameter can be a value of @ref TIM_Break_Input_enable_disable */6 E0 C; o/ h% t  w: K9 I+ c
  24. & ?2 b6 Z  A' ]  T5 D7 m6 y' |
  25.   uint16_t TIM_BreakPolarity;    /*!< Specifies the TIM Break Input pin polarity.- Y; P/ c! k  [. o" R3 l9 R0 I# b
  26.                                       This parameter can be a value of @ref TIM_Break_Polarity */
    5 {0 I; `& M5 R7 ^. c& s! |
  27. , k- D8 y/ @7 @$ n1 P. E- n" k
  28.   uint16_t TIM_AutomaticOutput;  /*!< Specifies whether the TIM Automatic Output feature is enabled or not.
    7 q4 M- I+ N% |0 B
  29.                                       This parameter can be a value of @ref TIM_AOE_Bit_Set_Reset */% @4 I, ^1 q! d' H# {+ a) P
  30. } TIM_BDTRInitTypeDef;
复制代码
. G! U1 b  w2 R- o* P* W
TIM, f, U4 R8 V! K- T9 I4 X7 Q

' w8 o* L5 r2 n1 m
  1. /** @defgroup TIM_Exported_constants
    # {1 M7 f, }" a' Z* i! {8 a7 h8 v
  2.   * @{
    4 a# M7 M. o! ?4 z% _* c
  3.   */
    " E& C+ X+ x: ^. _  s% `4 _+ N
  4. / |: i: |6 |0 I
  5. #define IS_TIM_ALL_PERIPH(PERIPH) (((PERIPH) == TIM1) || \/ j1 F. t2 p3 M( P
  6.                                    ((PERIPH) == TIM2) || \
    , F  A% v) v+ o- M, }  Z
  7.                                    ((PERIPH) == TIM3) || \
    5 f4 g; j9 {8 A" y) c
  8.                                    ((PERIPH) == TIM4) || \
    : a2 [' z' c* k' ^6 P, w- u- Q
  9.                                    ((PERIPH) == TIM5) || \
    - b" _$ z4 V2 K2 v+ D/ F! |; V
  10.                                    ((PERIPH) == TIM6) || \( g- M! u: `/ S1 @2 w! e6 l- P% ^
  11.                                    ((PERIPH) == TIM7) || \  n% D1 s4 a2 _
  12.                                    ((PERIPH) == TIM8) || \9 o/ K& `/ B$ f- n
  13.                                    ((PERIPH) == TIM9) || \
    7 Q1 }9 q% S2 P* R
  14.                                    ((PERIPH) == TIM10) || \
    7 p& L7 Q7 w2 m; {9 \
  15.                                    ((PERIPH) == TIM11) || \
    6 z8 d- V+ e) [( y
  16.                                    ((PERIPH) == TIM12) || \
    / l  Q/ V  c$ F( K8 _. m
  17.                                    (((PERIPH) == TIM13) || \( s8 `+ l/ Z2 V' Q
  18.                                    ((PERIPH) == TIM14))), q* y1 B/ J; p! \  i6 A
  19. /* LIST1: TIM1, TIM2, TIM3, TIM4, TIM5, TIM8, TIM9, TIM10, TIM11, TIM12, TIM13 and TIM14 */                                         - P0 g: c- E. ~+ _: l
  20. #define IS_TIM_LIST1_PERIPH(PERIPH) (((PERIPH) == TIM1) || \: O% F" T; c. _- a) L4 C- E
  21.                                      ((PERIPH) == TIM2) || \) x% N4 \1 [! b7 {- V7 Q
  22.                                      ((PERIPH) == TIM3) || \5 r- K; e" e& C: g7 L
  23.                                      ((PERIPH) == TIM4) || \! l- t# T: a* |" t# Y! O1 y
  24.                                      ((PERIPH) == TIM5) || \
    * N. L% C2 ]* k. e
  25.                                      ((PERIPH) == TIM8) || \
    ; L' x: a, f! {0 j; ^% y; \3 o
  26.                                      ((PERIPH) == TIM9) || \8 Y* |" I9 {4 C4 k9 M& X; Z
  27.                                      ((PERIPH) == TIM10) || \" f! @) i% w- \- x: p
  28.                                      ((PERIPH) == TIM11) || \* W% Q+ y' j9 u7 }
  29.                                      ((PERIPH) == TIM12) || \
    / e4 K( }: M: p/ {! \" v4 m
  30.                                      ((PERIPH) == TIM13) || \
    6 [# S& q% e+ ^; Y4 `9 J; j. w: y
  31.                                      ((PERIPH) == TIM14))
    7 }3 j: {* L6 }! ^8 p2 R; U. G

  32. / d3 G& M' P/ V9 {  F
  33. /* LIST2: TIM1, TIM2, TIM3, TIM4, TIM5, TIM8, TIM9 and TIM12 */
    7 z; E7 P% p$ T$ q2 J' |0 U
  34. #define IS_TIM_LIST2_PERIPH(PERIPH) (((PERIPH) == TIM1) || \! K) b$ @- u8 n8 r# A/ r5 ?
  35.                                      ((PERIPH) == TIM2) || \
    0 F8 [- H2 e; B: L' r
  36.                                      ((PERIPH) == TIM3) || \
    $ f8 j/ a% u& `% T0 @, u' {9 V
  37.                                      ((PERIPH) == TIM4) || \
    0 d: n* r. J- Q3 H3 @* f
  38.                                      ((PERIPH) == TIM5) || \
    ( ]7 u$ w. l5 P2 z) q1 L
  39.                                      ((PERIPH) == TIM8) || \% {5 D: |2 Q, @5 B7 s& O1 p
  40.                                      ((PERIPH) == TIM9) || \+ b2 w. \# q* K2 e8 R
  41.                                      ((PERIPH) == TIM12))
    % j) F5 p9 B  F% c' w
  42. /* LIST3: TIM1, TIM2, TIM3, TIM4, TIM5 and TIM8 */
    " w7 B9 c; S  T; w% I& [
  43. #define IS_TIM_LIST3_PERIPH(PERIPH) (((PERIPH) == TIM1) || \
    1 ]: H2 ]7 t% ?( A
  44.                                      ((PERIPH) == TIM2) || \
    4 W) t4 ~" G/ z
  45.                                      ((PERIPH) == TIM3) || \
    + o0 V# k# Y5 z7 ]3 P1 j' M5 O
  46.                                      ((PERIPH) == TIM4) || \( f) O4 p2 _, E' Z5 e1 g  T
  47.                                      ((PERIPH) == TIM5) || \
    - U( c% K8 x/ r) ]5 \8 ?
  48.                                      ((PERIPH) == TIM8))
    + ?- z% g' [5 C6 u7 b$ M
  49. /* LIST4: TIM1 and TIM8 */
    . K' u- x0 m" y  @! @. m3 z
  50. #define IS_TIM_LIST4_PERIPH(PERIPH) (((PERIPH) == TIM1) || \9 ~( J3 v  W3 X. p4 E8 u
  51.                                      ((PERIPH) == TIM8))- G5 C( ~* ~) f* u
  52. /* LIST5: TIM1, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7 and TIM8 */
    % ~! b  _& j; K' P. P; t# ~. C
  53. #define IS_TIM_LIST5_PERIPH(PERIPH) (((PERIPH) == TIM1) || \" b6 ?. H3 {& j7 |$ e( y
  54.                                      ((PERIPH) == TIM2) || \% ?0 c" Z6 _, s1 ~1 _
  55.                                      ((PERIPH) == TIM3) || \
    * a  M5 C* ~* [6 V5 \: {; H. t: @( Z
  56.                                      ((PERIPH) == TIM4) || \, m5 j( V. R. D' J( T' B
  57.                                      ((PERIPH) == TIM5) || \
    " Q- J# m$ a& N- f# z4 G
  58.                                      ((PERIPH) == TIM6) || \/ j0 s' |$ G4 ?0 e
  59.                                      ((PERIPH) == TIM7) || \
    * ~0 Q, V$ S6 P* }6 }0 S
  60.                                      ((PERIPH) == TIM8))" @: W9 F# v$ |$ D* a4 C5 s* j
  61. /* LIST6: TIM2, TIM5 and TIM11 */                              
    9 T$ d# W7 G; S2 h4 p
  62. #define IS_TIM_LIST6_PERIPH(TIMx)(((TIMx) == TIM2) || \7 _1 {; J# @- `/ V8 ^3 z  ]
  63.                                  ((TIMx) == TIM5) || \$ f' P$ \2 ~3 y* {$ A- B3 m
  64.                                  ((TIMx) == TIM11))
复制代码

7 Y) m5 J* O" S' u# \  ~  I' d+ DTIM_Output_Compare_and_PWM_modes. I% {& y: Q4 w& ?% g9 G
+ W' w" N6 \% e' ?
  1. /** @defgroup TIM_Output_Compare_and_PWM_modes
    5 V, i+ p+ p9 v) S
  2.   * @{
    ) t( U* a- P8 H$ u' S1 M
  3.   */
    ; ^, h" h/ R' f/ F  R5 x- L- P

  4. 2 {; M0 v$ X" \0 g6 i' ~, a) Q+ w% o
  5. #define TIM_OCMode_Timing                  ((uint16_t)0x0000): L1 y5 h: k0 L/ J
  6. #define TIM_OCMode_Active                  ((uint16_t)0x0010)1 F, I* W6 d) o
  7. #define TIM_OCMode_Inactive                ((uint16_t)0x0020)5 O+ Y. E; O2 u$ I3 O2 Z. M
  8. #define TIM_OCMode_Toggle                  ((uint16_t)0x0030)
    3 {3 \  l6 ~( H8 O( u! T1 g
  9. #define TIM_OCMode_PWM1                    ((uint16_t)0x0060)
    * u, O+ V/ Z; s+ R* T( ~3 G
  10. #define TIM_OCMode_PWM2                    ((uint16_t)0x0070)- y" \: S9 M1 }8 Y6 i8 V$ i9 n' J' O
  11. #define IS_TIM_OC_MODE(MODE) (((MODE) == TIM_OCMode_Timing) || \
    " `- P: z2 a: k
  12.                               ((MODE) == TIM_OCMode_Active) || \
    $ q9 ]2 y4 U0 l. L5 n7 H: T6 `
  13.                               ((MODE) == TIM_OCMode_Inactive) || \% g  I+ R* {+ G" L" m- M( X& _( x
  14.                               ((MODE) == TIM_OCMode_Toggle)|| \
    5 @/ K8 Z9 b$ l" `
  15.                               ((MODE) == TIM_OCMode_PWM1) || \
    ! g% V. w7 B0 e& {
  16.                               ((MODE) == TIM_OCMode_PWM2))
    ! O. o6 W9 W( T1 ?
  17. #define IS_TIM_OCM(MODE) (((MODE) == TIM_OCMode_Timing) || \# n, N3 L4 `, [0 l
  18.                           ((MODE) == TIM_OCMode_Active) || \% j7 K) N" M1 Y9 o2 ~5 A, v' ]
  19.                           ((MODE) == TIM_OCMode_Inactive) || \
    0 I2 x, t$ v4 j8 Q# N3 ^6 J
  20.                           ((MODE) == TIM_OCMode_Toggle)|| \
    / S! g/ G3 E. P7 n+ J" a
  21.                           ((MODE) == TIM_OCMode_PWM1) || \
    2 `# @9 {) O0 E# l: B' F2 A
  22.                           ((MODE) == TIM_OCMode_PWM2) ||        \7 e, a4 G9 f+ a( P
  23.                           ((MODE) == TIM_ForcedAction_Active) || \9 v2 j% `! X% F
  24.                           ((MODE) == TIM_ForcedAction_InActive))
复制代码
( s* ]& W/ u9 Z5 {/ j( t/ _6 E
TIM_One_Pulse_Mode
( u" F( X' c% @, s9 w. P5 T; J) e( b
  1. /** @defgroup TIM_One_Pulse_Mode 5 M  u6 R' K2 d- q0 i
  2.   * @{: }  f) t; h) O  |
  3.   */9 X1 {# C) M! T; k; y( S
  4. 0 a' z) j& r6 D/ l/ u
  5. #define TIM_OPMode_Single                  ((uint16_t)0x0008)8 O2 o6 i/ q/ ~( T7 h3 @# V
  6. #define TIM_OPMode_Repetitive              ((uint16_t)0x0000); p' m; q* A4 _, C
  7. #define IS_TIM_OPM_MODE(MODE) (((MODE) == TIM_OPMode_Single) || \4 y) K9 j- E( Y3 Z7 U
  8.                                ((MODE) == TIM_OPMode_Repetitive))
复制代码
/ Y5 s  g1 C( U# X" {
TIM_Channel
) o" r" p; e3 b- h+ F* W1 U5 N! y, }) I0 G
  1. /** @defgroup TIM_Channel ( x* |$ a9 m9 a4 D! T
  2.   * @{7 x3 ^- z; c0 ~! b3 p
  3.   */
    & w* V" {1 z. o6 J
  4. " `" E; H. o0 K" `7 {
  5. #define TIM_Channel_1                      ((uint16_t)0x0000); N2 |: l0 P9 E# ^0 }
  6. #define TIM_Channel_2                      ((uint16_t)0x0004)
    ( X$ [# K0 k: O1 k* l( n' T
  7. #define TIM_Channel_3                      ((uint16_t)0x0008)
    % Y* Z+ c& N; `/ A/ z
  8. #define TIM_Channel_4                      ((uint16_t)0x000C)/ O" z( p. J# x

  9. % m, D2 L$ s9 U% `0 q
  10. #define IS_TIM_CHANNEL(CHANNEL) (((CHANNEL) == TIM_Channel_1) || \5 [. d0 C! W8 r# c
  11.                                  ((CHANNEL) == TIM_Channel_2) || \% g( M4 i. @# ]5 W8 T
  12.                                  ((CHANNEL) == TIM_Channel_3) || \
    ) B7 w. O. T! C
  13.                                  ((CHANNEL) == TIM_Channel_4))3 {: q1 u  O1 y; z- l  o7 U
  14. - c# T  W/ x+ _: I0 y
  15. #define IS_TIM_PWMI_CHANNEL(CHANNEL) (((CHANNEL) == TIM_Channel_1) || \
    3 q) I8 o6 P& B+ m
  16.                                       ((CHANNEL) == TIM_Channel_2))+ H. n* A' x& l' i9 h
  17. #define IS_TIM_COMPLEMENTARY_CHANNEL(CHANNEL) (((CHANNEL) == TIM_Channel_1) || \
    * Z1 D, G9 o9 L- c
  18.                                                ((CHANNEL) == TIM_Channel_2) || \
    9 b; h( g: `- m2 c3 e  E
  19.                                                ((CHANNEL) == TIM_Channel_3))! T1 q" S$ Y  D( R
复制代码
3 M& p+ m; [6 Y( _( i
TIM_Clock_Division_CKD: o+ `& L! R& M) d1 p+ R% p, x# V
- l9 }! k& w" r3 n% r, h
  1. /** @defgroup TIM_Clock_Division_CKD 0 D5 N/ S9 f& ^
  2.   * @{
    " z3 m" H) |. B8 C+ J7 J/ J
  3.   */
    0 F# u& _$ G# J, g; X6 Q. Z
  4. 3 @/ T4 B$ S: D( `6 Z7 B/ L
  5. #define TIM_CKD_DIV1                       ((uint16_t)0x0000)* a0 h  i  q" q& l4 h
  6. #define TIM_CKD_DIV2                       ((uint16_t)0x0100)
    " k% m; ]9 y0 c1 L
  7. #define TIM_CKD_DIV4                       ((uint16_t)0x0200)
    # S, F; L4 i1 Y& Z, A2 u$ A# S
  8. #define IS_TIM_CKD_DIV(DIV) (((DIV) == TIM_CKD_DIV1) || \: F7 \, E- ^( i2 l& Q  {
  9.                              ((DIV) == TIM_CKD_DIV2) || \
    2 d4 s/ b  n. t% |2 z
  10.                              ((DIV) == TIM_CKD_DIV4))
复制代码
! M, C0 t; I& N, H  n
TIM_Counter_Mode) n6 H3 k/ ]0 w# p$ E) W( o: e

- l) b* g1 v6 u& H" Z4 R9 K' J
  1. /** @defgroup TIM_Counter_Mode
    8 `8 q& k* R. k9 e# _
  2.   * @{& I& x& o# M8 U* d& x* X% K
  3.   */
    ; m: d. _! K: V* B/ |. e5 n

  4. 2 S* d. f1 y8 p& {7 ^
  5. #define TIM_CounterMode_Up                 ((uint16_t)0x0000)$ s5 i( w, X0 |  e9 M9 Y
  6. #define TIM_CounterMode_Down               ((uint16_t)0x0010)8 b6 F9 A" j" }4 F( x7 y
  7. #define TIM_CounterMode_CenterAligned1     ((uint16_t)0x0020)
    & _- B( \7 X' j0 O( g0 K7 R  Z9 C
  8. #define TIM_CounterMode_CenterAligned2     ((uint16_t)0x0040)
    3 R4 m/ e. {- {! D8 \2 l3 ]: ^
  9. #define TIM_CounterMode_CenterAligned3     ((uint16_t)0x0060)# c7 L" q0 u% \7 N9 v
  10. #define IS_TIM_COUNTER_MODE(MODE) (((MODE) == TIM_CounterMode_Up) ||  \
    1 |  N3 h, U4 e" U9 V' R* d
  11.                                    ((MODE) == TIM_CounterMode_Down) || \
    : w7 \3 P$ h2 }" W- B2 |
  12.                                    ((MODE) == TIM_CounterMode_CenterAligned1) || \7 B* a, j$ z) O9 X3 x9 N, S
  13.                                    ((MODE) == TIM_CounterMode_CenterAligned2) || \3 q; |! l; B: d1 G
  14.                                    ((MODE) == TIM_CounterMode_CenterAligned3))
复制代码
. a# W2 q! y! ]* [8 h
TIM_Output_Compare_Polarity
2 b/ }5 Y! A9 @7 G5 Y6 l5 Y) D# R* s! I+ d9 q
  1. /** @defgroup TIM_Output_Compare_Polarity
    & `' }( C4 f, L4 Y
  2.   * @{& e1 ?  r8 Q4 @( e0 I% j6 R
  3.   */
    1 Z0 M' m* d, C

  4. 2 X! w; h8 G4 G. M% v
  5. #define TIM_OCPolarity_High                ((uint16_t)0x0000)+ p  I7 I2 _% O
  6. #define TIM_OCPolarity_Low                 ((uint16_t)0x0002)
    & X8 ?7 s) @% ^& D6 M0 l
  7. #define IS_TIM_OC_POLARITY(POLARITY) (((POLARITY) == TIM_OCPolarity_High) || \5 y! g/ t! l, W
  8.                                       ((POLARITY) == TIM_OCPolarity_Low))
复制代码

7 K+ b* J8 L* @' F3 fTIM_Output_Compare_N_Polarity
  1. /** @defgroup TIM_Output_Compare_N_Polarity ' F8 \2 J3 ^" k. [
  2.   * @{7 m; D# e+ H# ~% R
  3.   */
    & w2 B* W: S! k/ ]2 ?
  4. ' \( e+ x! M3 E7 R) z3 q% ?* l# U; {
  5. #define TIM_OCNPolarity_High               ((uint16_t)0x0000)
    ' N4 h, x. U) n1 s9 x: u) h. ~
  6. #define TIM_OCNPolarity_Low                ((uint16_t)0x0008)
    : Y( R; Z. C6 n* R- |+ R$ _
  7. #define IS_TIM_OCN_POLARITY(POLARITY) (((POLARITY) == TIM_OCNPolarity_High) || \
    $ c0 q; s7 V4 g
  8.                                        ((POLARITY) == TIM_OCNPolarity_Low))
复制代码

1 W% D- X" b4 m6 E* Z; q( oTIM_Output_Compare_State
5 `; [4 _( s9 [+ o# B  S4 |; c$ T/ n3 K3 M+ W0 ?, ^* Q4 t
  1. /** @defgroup TIM_Output_Compare_State
    - Z6 a( \7 Y/ b* z
  2.   * @{2 M. R8 n# }: y5 g( w7 @" Y
  3.   */
    ) u+ f3 T* l5 R4 S5 K. t
  4. ) I4 {4 C0 R& @" a# q
  5. #define TIM_OutputState_Disable            ((uint16_t)0x0000)$ H9 M; M% b, M4 H1 N
  6. #define TIM_OutputState_Enable             ((uint16_t)0x0001)' W9 W: a+ O3 u9 r0 ]
  7. #define IS_TIM_OUTPUT_STATE(STATE) (((STATE) == TIM_OutputState_Disable) || \1 c& T! B0 v# z0 j  l
  8.                                     ((STATE) == TIM_OutputState_Enable))
复制代码

# {8 k+ }, w" {5 LTIM_Output_Compare_N_State
6 x0 o) c4 a! t
; O% ?0 U/ S3 H& M- j! j1 [: Q/ _9 U# p
  1. /** @defgroup TIM_Output_Compare_N_State
    0 s" a4 Z1 w; [/ d8 T, x. l
  2.   * @{
    ) t! X/ k  ?1 j. b' i7 _" q' ]
  3.   */
    3 h) c$ T0 J3 _' n1 W4 }
  4. , F. _& v6 {( m+ w+ r2 U$ V) h4 F" A
  5. #define TIM_OutputNState_Disable           ((uint16_t)0x0000)
    * A7 U9 p! c, d1 h' |( c
  6. #define TIM_OutputNState_Enable            ((uint16_t)0x0004)
    7 R! A+ P4 O9 I8 l( y- X4 m
  7. #define IS_TIM_OUTPUTN_STATE(STATE) (((STATE) == TIM_OutputNState_Disable) || \+ O7 B0 |& v# U% c  i: S
  8.                                      ((STATE) == TIM_OutputNState_Enable))
复制代码

* B7 l0 z+ |! f. tTIM_Capture_Compare_State
8 j3 l5 ~- k: d$ F$ D9 T; q1 ?$ m' |8 n' K( ], d# u7 J# `
  1. /** @defgroup TIM_Capture_Compare_State
    " L- }: k4 ^) a# N1 ~8 H' `
  2.   * @{
    6 K3 ^) f7 b' U: M8 g
  3.   */6 {* a; o( i$ p: E* J5 E0 G1 k

  4. 5 d) o3 H- G8 Y6 d4 }% S% f
  5. #define TIM_CCx_Enable                      ((uint16_t)0x0001)
    " [5 @( O: R7 W6 L# K
  6. #define TIM_CCx_Disable                     ((uint16_t)0x0000)! C( ^* v) P" a
  7. #define IS_TIM_CCX(CCX) (((CCX) == TIM_CCx_Enable) || \6 _' H9 u# S1 L
  8.                          ((CCX) == TIM_CCx_Disable))
复制代码
! O% S8 q$ N; P& |' P6 |0 m1 `
TIM_Capture_Compare_N_State
" c4 }$ z! T- m) V/ }3 c3 T5 @! w6 V3 D$ f' l' Y; g1 f
  1. /** @defgroup TIM_Capture_Compare_N_State/ j& a8 m- F8 g
  2.   * @{
    * _/ ?# m% G" \0 n
  3.   */( l' w  C& S9 K- }8 I* J2 A
  4. * z9 o' m  Z6 L" O; L: Z/ N
  5. #define TIM_CCxN_Enable                     ((uint16_t)0x0004)0 `" C. v1 M3 n9 A* f3 m* y
  6. #define TIM_CCxN_Disable                    ((uint16_t)0x0000)
    3 {$ A3 ~/ O0 X$ u
  7. #define IS_TIM_CCXN(CCXN) (((CCXN) == TIM_CCxN_Enable) || \+ ?9 V% y' b8 ?- |
  8.                            ((CCXN) == TIM_CCxN_Disable))
复制代码
0 r5 ]$ s: q1 m! F- O
TIM_Break_Input_enable_disable* C( L8 R5 K+ H# q1 {

1 u& _# J' h: B0 i$ @
  1. /** @defgroup TIM_Break_Input_enable_disable , a. s+ X+ V  x' _: G3 Y- E* R
  2.   * @{
    4 G; e/ j' Z, \1 L# q! U7 F
  3.   */1 N* ^) o, b. p. Y' p0 m+ S0 x
  4. 2 Z6 n1 u3 p# I
  5. #define TIM_Break_Enable                   ((uint16_t)0x1000)
    " j+ w- J, r0 w- I; a
  6. #define TIM_Break_Disable                  ((uint16_t)0x0000)& z% H0 y$ p$ g8 @3 a% z4 `; |+ D
  7. #define IS_TIM_BREAK_STATE(STATE) (((STATE) == TIM_Break_Enable) || \# Y& I  `- Y  ~
  8.                                    ((STATE) == TIM_Break_Disable))
复制代码

4 x( B; H% X0 U1 o, jTIM_Break_Polarity
5 ^0 ?3 T/ t1 v' y8 @3 A8 N
3 O  R- E2 O; ~
  1. /** @defgroup TIM_Break_Polarity
    7 y# h$ H& @& N# z( K$ n) R
  2.   * @{
    0 i+ s8 w& ?) u) G
  3.   */
    5 P2 u9 \2 L; R( V7 j4 i  J
  4. , O! L+ O% e5 w$ v, a3 {+ v7 p
  5. #define TIM_BreakPolarity_Low              ((uint16_t)0x0000)
    ; q0 a, y, n- W8 y$ {% c
  6. #define TIM_BreakPolarity_High             ((uint16_t)0x2000)0 ^- D% C* ~: H1 b7 s1 y9 \. r+ n
  7. #define IS_TIM_BREAK_POLARITY(POLARITY) (((POLARITY) == TIM_BreakPolarity_Low) || \* B9 n5 f0 @* E# x/ b
  8.                                          ((POLARITY) == TIM_BreakPolarity_High))
复制代码
- m4 r9 I3 {: y' y1 [
TIM_AOE_Bit_Set_Reset& P5 z8 c. p! p& z- {/ b
  1. /** @defgroup TIM_AOE_Bit_Set_Reset
    : J8 g% ?3 W0 t" Q5 e9 w1 ?/ c- N
  2.   * @{
    # w3 b: }( I+ g0 W/ R
  3.   */
    ' X+ D# d% i* U" d8 g& M
  4. # N) B6 b6 o- x' _4 d/ r( x
  5. #define TIM_AutomaticOutput_Enable         ((uint16_t)0x4000)2 [4 Q: e; e8 I" q: n1 ~7 @
  6. #define TIM_AutomaticOutput_Disable        ((uint16_t)0x0000)
    ( p  h: W; V% K) Y/ O; T3 |4 D3 F+ [
  7. #define IS_TIM_AUTOMATIC_OUTPUT_STATE(STATE) (((STATE) == TIM_AutomaticOutput_Enable) || \! Y) F8 M  r' i
  8.                                               ((STATE) == TIM_AutomaticOutput_Disable))
复制代码

9 H: }/ ^2 e8 _# P+ Z; xTIM_Lock_level
" k! ~/ M% X2 G7 g  a, m. \& o  d0 _8 ?
  1. /** @defgroup TIM_Lock_level
    9 h% s3 z: z8 @. ?5 m
  2.   * @{  P# u7 n. k' Q; ^# q
  3.   */
    3 G3 C- H* N0 ]5 \7 b
  4. 2 I" j4 ^; C+ J) B8 O
  5. #define TIM_LOCKLevel_OFF                  ((uint16_t)0x0000)4 F8 p, Q' i3 q6 x  b
  6. #define TIM_LOCKLevel_1                    ((uint16_t)0x0100)8 W# ]9 ?; G& E# u
  7. #define TIM_LOCKLevel_2                    ((uint16_t)0x0200)2 b# @" l- e, Q/ q" U$ W7 {+ E
  8. #define TIM_LOCKLevel_3                    ((uint16_t)0x0300)
    # v* N* V' N* E. Z9 d7 c
  9. #define IS_TIM_LOCK_LEVEL(LEVEL) (((LEVEL) == TIM_LOCKLevel_OFF) || \- O# k" d& A# Z& j6 O. u
  10.                                   ((LEVEL) == TIM_LOCKLevel_1) || \) h# J9 ^- O0 [. w0 ?8 Q; ^
  11.                                   ((LEVEL) == TIM_LOCKLevel_2) || \" c" y# @6 i* o& h0 v) d! y2 h* z
  12.                                   ((LEVEL) == TIM_LOCKLevel_3))
复制代码

, S5 u/ _2 Z6 Q) M& E+ ~& sTIM_OSSI_Off_State_Selection_for_Idle_mode_state
  1. /** @defgroup TIM_OSSI_Off_State_Selection_for_Idle_mode_state
    - }  K& r, y8 ]8 h' N/ U' |3 W
  2.   * @{; o1 o# p9 V" ]* ~
  3.   */; H+ Y( U) C. ^$ n* Y. W
  4. . G6 P+ v: k. {- k. J) ~5 F% l
  5. #define TIM_OSSIState_Enable               ((uint16_t)0x0400)
    # M1 Q! T7 w! }5 `, P
  6. #define TIM_OSSIState_Disable              ((uint16_t)0x0000)# o; v& h+ c, d% ?, X$ }' [
  7. #define IS_TIM_OSSI_STATE(STATE) (((STATE) == TIM_OSSIState_Enable) || \
    8 _- [7 i! a- x0 j
  8.                                   ((STATE) == TIM_OSSIState_Disable))
复制代码

3 H+ G8 p- Z# [TIM_OSSR_Off_State_Selection_for_Run_mode_state
0 W! ]2 N" u' V7 R7 R) ?2 d1 M( K% J4 K3 a1 j) P
  1. /** @defgroup TIM_OSSR_Off_State_Selection_for_Run_mode_state3 w! V4 _7 p9 i5 v
  2.   * @{
    7 L' z* @! E- G# n4 _
  3.   */
      B, M( P% K1 m8 w* I: L! \

  4. ; t9 C  A5 v8 f$ |
  5. #define TIM_OSSRState_Enable               ((uint16_t)0x0800)
    3 z& w/ Y! Y1 ]
  6. #define TIM_OSSRState_Disable              ((uint16_t)0x0000)' R! L- I) x- }# X/ s& Q3 e2 [
  7. #define IS_TIM_OSSR_STATE(STATE) (((STATE) == TIM_OSSRState_Enable) || \5 \- i4 W  x: [+ ?2 l. P. m
  8.                                   ((STATE) == TIM_OSSRState_Disable))
复制代码

: u- t+ a- i; |5 M4 lTIM_Output_Compare_Idle_State6 t5 Z% O* E% O' f

: r$ J/ Y! U: K9 u/ A" {
  1. /** @defgroup TIM_Output_Compare_Idle_State ; k8 M8 D, E0 C7 U3 H
  2.   * @{0 w  j0 O; n% N$ r& m9 Y" X
  3.   */8 h( X( ^0 R2 L# `6 T0 m" n% b
  4. ! I- X& @! a/ F" W6 E# R
  5. #define TIM_OCIdleState_Set                ((uint16_t)0x0100)
    * E. Q  U! J+ @1 [
  6. #define TIM_OCIdleState_Reset              ((uint16_t)0x0000)
    - p0 g1 y" T: k( @+ Q
  7. #define IS_TIM_OCIDLE_STATE(STATE) (((STATE) == TIM_OCIdleState_Set) || \
    . d1 ^" A: s! s. E: v0 H$ \
  8.                                     ((STATE) == TIM_OCIdleState_Reset))
复制代码
- n$ b5 o! D: J% `: K% e
TIM_Output_Compare_N_Idle_State" U6 ~+ i2 O" b8 [
: i' i: @$ @% e3 I8 ]
  1. /** @defgroup TIM_Output_Compare_N_Idle_State 8 `4 ~8 s6 U0 W- ]# M
  2.   * @{2 M. `" y. I3 q
  3.   */) W& b4 c- R0 ^
  4. 0 p$ p( V$ C3 A5 e+ Z5 ^
  5. #define TIM_OCNIdleState_Set               ((uint16_t)0x0200)
    8 r3 C4 e- m2 z) @
  6. #define TIM_OCNIdleState_Reset             ((uint16_t)0x0000)! q0 b7 h# q2 K
  7. #define IS_TIM_OCNIDLE_STATE(STATE) (((STATE) == TIM_OCNIdleState_Set) || \
    & H" W: H" m! S: H
  8.                                      ((STATE) == TIM_OCNIdleState_Reset))
复制代码

+ w6 z: s+ O3 a! S, e3 ITIM_Input_Capture_Polarity! v+ c+ K6 {, k/ m. H: `3 A

; N* U1 y6 Y/ ?. I
  1. /** @defgroup TIM_Input_Capture_Polarity . Q$ j+ n9 H) J/ s( t
  2.   * @{2 N: ~, u; G& w% `8 e- _
  3.   */1 n( j! X" a2 B6 K6 h
  4. : ?" M" Q3 E0 r. \7 x
  5. #define  TIM_ICPolarity_Rising             ((uint16_t)0x0000)
    / m+ L! L0 U0 P# {$ [
  6. #define  TIM_ICPolarity_Falling            ((uint16_t)0x0002)- t! Z- B0 D  f6 J
  7. #define  TIM_ICPolarity_BothEdge           ((uint16_t)0x000A)0 b2 E! {" A8 P) }/ V
  8. #define IS_TIM_IC_POLARITY(POLARITY) (((POLARITY) == TIM_ICPolarity_Rising) || \7 K" ^2 l7 h1 }7 d0 B: ?
  9.                                       ((POLARITY) == TIM_ICPolarity_Falling)|| \+ N2 y3 k3 u( L
  10.                                       ((POLARITY) == TIM_ICPolarity_BothEdge))
复制代码

, v9 f2 ^7 V5 N9 xTIM_Input_Capture_Selection
, U: r" k( {1 H  O% O3 X
) ?6 S% @3 @$ J0 I+ M$ ^: [; p4 j
  1. /** @defgroup TIM_Input_Capture_Selection
    5 {: m$ f# @/ g) T. X
  2.   * @{' Y, p9 o5 @5 a$ |7 C
  3.   */4 c8 @+ k' i# `( t* @
  4. # V8 g, a3 P& w7 i7 |) t4 j
  5. #define TIM_ICSelection_DirectTI           ((uint16_t)0x0001) /*!< TIM Input 1, 2, 3 or 4 is selected to be
    6 ~8 A7 s7 z$ t0 B4 i
  6.                                                                    connected to IC1, IC2, IC3 or IC4, respectively */: `- d# q1 a1 B9 m, B+ ^
  7. #define TIM_ICSelection_IndirectTI         ((uint16_t)0x0002) /*!< TIM Input 1, 2, 3 or 4 is selected to be
    & h' T; M% t- Q0 k- {8 {2 e5 ^
  8.                                                                    connected to IC2, IC1, IC4 or IC3, respectively. */
    ) p: m% x. p7 c: t- z- `( L7 d: F4 @
  9. #define TIM_ICSelection_TRC                ((uint16_t)0x0003) /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to TRC. */( p5 _" B% t( v$ F9 \
  10. #define IS_TIM_IC_SELECTION(SELECTION) (((SELECTION) == TIM_ICSelection_DirectTI) || \) H$ W2 v8 a4 N8 w3 l5 v3 |, C
  11.                                         ((SELECTION) == TIM_ICSelection_IndirectTI) || \4 z; x/ Y. z1 a5 r  B
  12.                                         ((SELECTION) == TIM_ICSelection_TRC))
复制代码
. N" v. X- {/ T' O
TIM_Input_Capture_Prescaler
. [) }. x8 K: A4 B  X7 [5 B7 J2 a3 _/ F, Y. l
  1. /** @defgroup TIM_Input_Capture_Prescaler ! W$ y% n" d; `
  2.   * @{0 ]. S# |) P1 J
  3.   */
    9 V0 D7 L2 z' a$ ~2 G

  4. ! Q) U  p$ A9 j1 Q: y% h7 `
  5. #define TIM_ICPSC_DIV1                     ((uint16_t)0x0000) /*!< Capture performed each time an edge is detected on the capture input. */: E: P, N$ R' c0 @
  6. #define TIM_ICPSC_DIV2                     ((uint16_t)0x0004) /*!< Capture performed once every 2 events. *// \/ K# ~' ?' ^8 a# {7 a0 a7 R( S
  7. #define TIM_ICPSC_DIV4                     ((uint16_t)0x0008) /*!< Capture performed once every 4 events. */! N0 B; I9 M3 ?; d) ~! V8 G9 G5 ?
  8. #define TIM_ICPSC_DIV8                     ((uint16_t)0x000C) /*!< Capture performed once every 8 events. */; D' H( Q$ K1 Z- }/ v
  9. #define IS_TIM_IC_PRESCALER(PRESCALER) (((PRESCALER) == TIM_ICPSC_DIV1) || \
    8 B$ G9 Y8 M% S
  10.                                         ((PRESCALER) == TIM_ICPSC_DIV2) || \( E5 n$ O; \) n/ ]
  11.                                         ((PRESCALER) == TIM_ICPSC_DIV4) || \8 I( K$ B. D4 F, g5 U8 N+ G
  12.                                         ((PRESCALER) == TIM_ICPSC_DIV8))/ Y) }/ ^# }& `' `( ?
复制代码

: J; e( f  N9 c2 t) V' _TIM_interrupt_sources3 o6 k3 C; Y. }( l2 v
* O: w$ ]0 m3 c/ x0 q" Z
  1. /** @defgroup TIM_interrupt_sources
    ' h+ d2 s- |) _+ Q1 n( n# }- q
  2.   * @{
    5 {. ~0 z% r, z8 T& S$ a
  3.   */
    1 ]. H$ J# A% U2 G9 n
  4. , O1 d0 o4 F$ }
  5. #define TIM_IT_Update                      ((uint16_t)0x0001); S7 g3 U# ]$ Z7 T
  6. #define TIM_IT_CC1                         ((uint16_t)0x0002)
    8 z4 H% j3 a) Z+ D
  7. #define TIM_IT_CC2                         ((uint16_t)0x0004)4 D0 y/ j8 I/ S/ q( X# F6 t
  8. #define TIM_IT_CC3                         ((uint16_t)0x0008)% X) n+ z, Z( C
  9. #define TIM_IT_CC4                         ((uint16_t)0x0010)
    . O  j; }5 l) V2 D/ q) I3 A& M: Z* s
  10. #define TIM_IT_COM                         ((uint16_t)0x0020)
    / v2 N% u$ W$ P  T+ g0 b6 x
  11. #define TIM_IT_Trigger                     ((uint16_t)0x0040)
    * A: `2 L# B1 T
  12. #define TIM_IT_Break                       ((uint16_t)0x0080)2 y8 C/ E& J, J+ e4 p- N+ N! c* C
  13. #define IS_TIM_IT(IT) ((((IT) & (uint16_t)0xFF00) == 0x0000) && ((IT) != 0x0000))' y1 |' k; B# q- S9 i% B
  14. ) @: i* }% K0 a3 J7 N
  15. #define IS_TIM_GET_IT(IT) (((IT) == TIM_IT_Update) || \/ X7 p1 x3 U) R# q4 C& i2 ~
  16.                            ((IT) == TIM_IT_CC1) || \+ B9 c  f, i7 R4 o
  17.                            ((IT) == TIM_IT_CC2) || \
    & Y/ S+ C( i+ i
  18.                            ((IT) == TIM_IT_CC3) || \
    ; p# O. e; E4 t) u* r3 i2 V9 q( `
  19.                            ((IT) == TIM_IT_CC4) || \* T! ^! T. p* T3 y* v- T# W. ^, y
  20.                            ((IT) == TIM_IT_COM) || \, D, p( d- c% h* T' c9 R
  21.                            ((IT) == TIM_IT_Trigger) || \
    6 ?) Q. Q; T: ]' A, p3 o( u1 a
  22.                            ((IT) == TIM_IT_Break)). n4 ^6 M- U& z7 ]8 d- C
复制代码

4 n: F$ a; X% a; B2 f- pTIM_DMA_Base_address
# v% {# ^% e$ W7 H  X9 }0 e
' L7 u' T8 f6 Z0 `. c; P
  1. /** @defgroup TIM_DMA_Base_address " y5 g* ~0 _$ \; i, j8 |) e
  2.   * @{- f* T3 N; Q/ r4 u
  3.   */
    ( i7 g  M0 A! p5 o' t

  4. * V0 n, ]* J- G, R% W) C# p) N
  5. #define TIM_DMABase_CR1                    ((uint16_t)0x0000)# h2 `, i* X, O% j/ |$ d1 i
  6. #define TIM_DMABase_CR2                    ((uint16_t)0x0001)0 p1 L3 B- ?! ^1 z& D0 J
  7. #define TIM_DMABase_SMCR                   ((uint16_t)0x0002)7 f3 O  L" {& l" r
  8. #define TIM_DMABase_DIER                   ((uint16_t)0x0003)
    & c+ R" b9 b+ L+ `
  9. #define TIM_DMABase_SR                     ((uint16_t)0x0004)
    4 T$ s& k2 J2 _6 ]8 F* E6 A
  10. #define TIM_DMABase_EGR                    ((uint16_t)0x0005)
    $ l% O7 Y7 O- Y; b7 l
  11. #define TIM_DMABase_CCMR1                  ((uint16_t)0x0006)4 Q# n% l6 W( m" A  b! l& W
  12. #define TIM_DMABase_CCMR2                  ((uint16_t)0x0007)
    4 E( G- g8 r' P* w% f  P. }
  13. #define TIM_DMABase_CCER                   ((uint16_t)0x0008)1 W4 T6 r( ~) Z
  14. #define TIM_DMABase_CNT                    ((uint16_t)0x0009)
    % M7 L3 L3 l- J! `6 i$ G2 J1 M
  15. #define TIM_DMABase_PSC                    ((uint16_t)0x000A)4 t4 f& s5 o- |( p5 g
  16. #define TIM_DMABase_ARR                    ((uint16_t)0x000B)
    - ]7 M- a5 a& `  i+ T4 S
  17. #define TIM_DMABase_RCR                    ((uint16_t)0x000C)
    & R2 _. Z' S4 I7 ?& q4 j5 X9 h
  18. #define TIM_DMABase_CCR1                   ((uint16_t)0x000D)9 f; r( L! R& E( ^" J  i
  19. #define TIM_DMABase_CCR2                   ((uint16_t)0x000E): h9 P: L" |0 k& o2 C
  20. #define TIM_DMABase_CCR3                   ((uint16_t)0x000F)
    / g5 x2 @/ {8 Z2 }0 L+ d
  21. #define TIM_DMABase_CCR4                   ((uint16_t)0x0010)% u5 {/ a% d7 X
  22. #define TIM_DMABase_BDTR                   ((uint16_t)0x0011)
    6 Z$ R" p; z. C2 p
  23. #define TIM_DMABase_DCR                    ((uint16_t)0x0012)1 ^! ?( M9 M/ v* R4 M8 B9 f- o
  24. #define TIM_DMABase_OR                     ((uint16_t)0x0013)/ T. \9 u+ ~* W  G
  25. #define IS_TIM_DMA_BASE(BASE) (((BASE) == TIM_DMABase_CR1) || \
    - B/ h5 e* c, A! t& m8 g
  26.                                ((BASE) == TIM_DMABase_CR2) || \/ j1 Y$ g# ~/ [# R) y9 d" Y
  27.                                ((BASE) == TIM_DMABase_SMCR) || \
    % F; l6 v  m1 ?# a. {& t
  28.                                ((BASE) == TIM_DMABase_DIER) || \
    6 t& Q% Y) Y7 |) o5 ]. ?4 Z5 w( _
  29.                                ((BASE) == TIM_DMABase_SR) || \, x3 a' s; W3 H, n
  30.                                ((BASE) == TIM_DMABase_EGR) || \, @; s! L6 u% b
  31.                                ((BASE) == TIM_DMABase_CCMR1) || \  ]$ }" z0 F1 w; }1 ~( Y6 u1 l
  32.                                ((BASE) == TIM_DMABase_CCMR2) || \$ e+ M# y  J" F" [+ ?  e6 ?" h
  33.                                ((BASE) == TIM_DMABase_CCER) || \
    0 ~8 B! Z# I/ Y1 Y
  34.                                ((BASE) == TIM_DMABase_CNT) || \
    " q8 Z* l9 l$ d  E7 P( F) b
  35.                                ((BASE) == TIM_DMABase_PSC) || \
    " i. m( h  r5 V, h, {
  36.                                ((BASE) == TIM_DMABase_ARR) || \
    ; ?2 S+ _, @  M  {, Q* B" m
  37.                                ((BASE) == TIM_DMABase_RCR) || \
    ; e2 ]/ D1 w( y5 b4 ^6 o
  38.                                ((BASE) == TIM_DMABase_CCR1) || \! L1 O3 ?# v, V: u
  39.                                ((BASE) == TIM_DMABase_CCR2) || \% H' ?7 r) d; _7 r5 V2 W+ E
  40.                                ((BASE) == TIM_DMABase_CCR3) || \6 C) |8 s! ^6 K9 ]9 a: p% D$ K1 v
  41.                                ((BASE) == TIM_DMABase_CCR4) || \
    # \8 ^" p( B2 H' w
  42.                                ((BASE) == TIM_DMABase_BDTR) || \* z' g- V! F9 L6 b/ K9 e5 F- B5 t/ ~
  43.                                ((BASE) == TIM_DMABase_DCR) || \
    " ~( U3 L% B! |) B2 z8 j
  44.                                ((BASE) == TIM_DMABase_OR))         
复制代码
9 t  p, ]- a0 y3 Z3 \: y
TIM_DMA_Burst_Length; y6 I" }0 W5 S& h) S$ }
8 m2 K- @4 S+ z+ j4 x& u
  1. /** @defgroup TIM_DMA_Burst_Length # O  O3 [% t0 ^9 J5 M
  2.   * @{
    # S8 u" f: }; Q' {# ^; w2 f7 H* H1 V
  3.   */1 y- x  Z1 k1 f; H* i' N
  4. . `* B9 L- O0 ?( w% u( o6 }
  5. #define TIM_DMABurstLength_1Transfer           ((uint16_t)0x0000)) E- m) Y( l$ ]- Z
  6. #define TIM_DMABurstLength_2Transfers          ((uint16_t)0x0100)
    0 |' S( T3 Q: v0 T
  7. #define TIM_DMABurstLength_3Transfers          ((uint16_t)0x0200)! N, E# v$ Y# x, k
  8. #define TIM_DMABurstLength_4Transfers          ((uint16_t)0x0300)7 j+ C; C, m% e8 O
  9. #define TIM_DMABurstLength_5Transfers          ((uint16_t)0x0400)
    $ S0 p$ N; Q# C1 ^- L' @' \
  10. #define TIM_DMABurstLength_6Transfers          ((uint16_t)0x0500)* v' N6 U& K5 _' O' T
  11. #define TIM_DMABurstLength_7Transfers          ((uint16_t)0x0600)0 F2 t, N  m# \- D  s
  12. #define TIM_DMABurstLength_8Transfers          ((uint16_t)0x0700)/ a. a. h  t" E/ u! M- a# r4 B5 y0 w
  13. #define TIM_DMABurstLength_9Transfers          ((uint16_t)0x0800)1 O! G  x0 Z# A
  14. #define TIM_DMABurstLength_10Transfers         ((uint16_t)0x0900)# C3 |% m' m; \- W7 `
  15. #define TIM_DMABurstLength_11Transfers         ((uint16_t)0x0A00)
    2 z. m* f/ P# Y0 B
  16. #define TIM_DMABurstLength_12Transfers         ((uint16_t)0x0B00)
    0 }) r9 ?6 N8 e. R0 v- \* e
  17. #define TIM_DMABurstLength_13Transfers         ((uint16_t)0x0C00)& M5 ?/ P& j- ?6 D7 F
  18. #define TIM_DMABurstLength_14Transfers         ((uint16_t)0x0D00)
    , p; P4 t, x/ e
  19. #define TIM_DMABurstLength_15Transfers         ((uint16_t)0x0E00)
    # n% L5 m9 |. H4 v
  20. #define TIM_DMABurstLength_16Transfers         ((uint16_t)0x0F00)
    % u# _" A1 R; T: W, L' h% l! e  L
  21. #define TIM_DMABurstLength_17Transfers         ((uint16_t)0x1000)
    : H4 b+ s( g8 n" H* |
  22. #define TIM_DMABurstLength_18Transfers         ((uint16_t)0x1100)  k7 s9 \$ g* G' k; {- v8 H  V
  23. #define IS_TIM_DMA_LENGTH(LENGTH) (((LENGTH) == TIM_DMABurstLength_1Transfer) || \: o" M* _+ [. C; A; z( G; ^
  24.                                    ((LENGTH) == TIM_DMABurstLength_2Transfers) || \8 @6 D' s# }7 q9 `
  25.                                    ((LENGTH) == TIM_DMABurstLength_3Transfers) || \3 D5 ?7 [4 U* x- F! J: Q0 D. H, T* t
  26.                                    ((LENGTH) == TIM_DMABurstLength_4Transfers) || \8 T! ^+ t2 E) [& O4 n
  27.                                    ((LENGTH) == TIM_DMABurstLength_5Transfers) || \
    $ B* _; x8 y' c9 K4 F0 t
  28.                                    ((LENGTH) == TIM_DMABurstLength_6Transfers) || \
    . j! E. L( e  }0 y' o5 |
  29.                                    ((LENGTH) == TIM_DMABurstLength_7Transfers) || \
    . K. ?7 x9 S+ ?. U( l6 m
  30.                                    ((LENGTH) == TIM_DMABurstLength_8Transfers) || \
    & |) x6 X# a5 T4 A; p+ R! m
  31.                                    ((LENGTH) == TIM_DMABurstLength_9Transfers) || \
    ; ^! ^$ Y) Y) l* \+ [
  32.                                    ((LENGTH) == TIM_DMABurstLength_10Transfers) || \
    . X9 z$ w% Z" N$ C% j* s0 D
  33.                                    ((LENGTH) == TIM_DMABurstLength_11Transfers) || \
    0 ^9 C3 [8 [: u% C1 d% i6 T
  34.                                    ((LENGTH) == TIM_DMABurstLength_12Transfers) || \* Q; c8 U, }# {' M  N8 [3 w& q
  35.                                    ((LENGTH) == TIM_DMABurstLength_13Transfers) || \
    . _9 c' y8 o: Y1 D# K& V
  36.                                    ((LENGTH) == TIM_DMABurstLength_14Transfers) || \, m; H; i7 J- _, L! B
  37.                                    ((LENGTH) == TIM_DMABurstLength_15Transfers) || \# u: s3 k8 t; D% T
  38.                                    ((LENGTH) == TIM_DMABurstLength_16Transfers) || \# M- s/ y! x' Q7 m1 {
  39.                                    ((LENGTH) == TIM_DMABurstLength_17Transfers) || \
    8 U6 c( X9 ]- G* p
  40.                                    ((LENGTH) == TIM_DMABurstLength_18Transfers))
复制代码

4 u# ?- Q7 A) r9 I0 j/ ETIM_DMA_sources8 K, j/ E' d9 r' U" Q: G5 A

2 {/ W4 w, \; ~, F; v- N: W
  1. /** @defgroup TIM_DMA_sources
    8 F4 S' H) `  \
  2.   * @{  f9 ?4 f; r9 z% G! \, M) G) p0 v1 U
  3.   */
      P, h3 K+ \0 X& D5 V

  4. ' `  M$ H" A+ {' z5 h; _* u
  5. #define TIM_DMA_Update                     ((uint16_t)0x0100)) Z1 Y& n+ j9 e
  6. #define TIM_DMA_CC1                        ((uint16_t)0x0200)
    8 E1 t! c+ C/ B* i) W
  7. #define TIM_DMA_CC2                        ((uint16_t)0x0400)
    ( O0 a5 w0 L  H# L; U$ h1 ^
  8. #define TIM_DMA_CC3                        ((uint16_t)0x0800)
    7 b) G2 p6 H9 }" ]2 M) i
  9. #define TIM_DMA_CC4                        ((uint16_t)0x1000)( U/ V4 R* \; P- K1 X' n
  10. #define TIM_DMA_COM                        ((uint16_t)0x2000)
    - s$ g8 u  M/ {# i) ?( x9 u
  11. #define TIM_DMA_Trigger                    ((uint16_t)0x4000), `3 A8 m8 I! {! }( s9 [# {6 n  B
  12. #define IS_TIM_DMA_SOURCE(SOURCE) ((((SOURCE) & (uint16_t)0x80FF) == 0x0000) && ((SOURCE) != 0x0000))
复制代码

5 C/ _1 q# _/ V# @TIM_External_Trigger_Prescaler( b5 d# N! _9 l1 a' |4 @
# L5 j0 ~+ W  B7 ]
  1. /** @defgroup TIM_External_Trigger_Prescaler
    % M' |& j' ]/ C$ d# Y
  2.   * @{+ J) l8 [4 U8 w( N" t
  3.   */( y' L( R8 Y: x8 B" X* E& Q
  4. , i0 v6 U+ `5 T: }* ]
  5. #define TIM_ExtTRGPSC_OFF                  ((uint16_t)0x0000)+ q0 y  T6 [1 Y, l; W9 V3 H
  6. #define TIM_ExtTRGPSC_DIV2                 ((uint16_t)0x1000): c, z( U) {2 j$ h
  7. #define TIM_ExtTRGPSC_DIV4                 ((uint16_t)0x2000)
    ( R- Q% a% e0 s9 I' d0 c$ w( B
  8. #define TIM_ExtTRGPSC_DIV8                 ((uint16_t)0x3000)( I! W# u2 `3 ?6 X- ~- ]" s; P* u- D9 n
  9. #define IS_TIM_EXT_PRESCALER(PRESCALER) (((PRESCALER) == TIM_ExtTRGPSC_OFF) || \
    4 c: ]: n% d* B
  10.                                          ((PRESCALER) == TIM_ExtTRGPSC_DIV2) || \9 J8 G8 }- Q1 r7 M+ E" y
  11.                                          ((PRESCALER) == TIM_ExtTRGPSC_DIV4) || \. x% I1 O* ]6 w1 I
  12.                                          ((PRESCALER) == TIM_ExtTRGPSC_DIV8))
复制代码

- q, ~! I6 i9 Z8 |  G# C7 t# RTIM_Internal_Trigger_Selection
* n! D7 ?# ~8 S; B; F6 |( C
& w6 F# K! X% G0 m" N
  1. /** @defgroup TIM_Internal_Trigger_Selection : r. T# b( S. b' {$ @
  2.   * @{# f" V+ X0 R7 c8 U# d
  3.   */
    6 C3 U4 b  w. L; `$ C% j

  4. 1 y  Z' T3 U( V. y4 h" z
  5. #define TIM_TS_ITR0                        ((uint16_t)0x0000)
    ( J1 l. b$ [8 U8 e& E; x6 v# B
  6. #define TIM_TS_ITR1                        ((uint16_t)0x0010)$ W5 H! K# y2 B& Z" F) e5 z; Z
  7. #define TIM_TS_ITR2                        ((uint16_t)0x0020)
    4 Z7 {/ Q/ a: R0 T- H
  8. #define TIM_TS_ITR3                        ((uint16_t)0x0030)# Y6 }4 Z, W2 f
  9. #define TIM_TS_TI1F_ED                     ((uint16_t)0x0040)0 B8 J$ l, x* R' g
  10. #define TIM_TS_TI1FP1                      ((uint16_t)0x0050)
    $ l4 w; H* j2 I- l. y
  11. #define TIM_TS_TI2FP2                      ((uint16_t)0x0060)! q4 C( T' p/ ^/ r4 ^% w
  12. #define TIM_TS_ETRF                        ((uint16_t)0x0070)1 I2 E9 ]  Q/ k( [% y2 l5 V
  13. #define IS_TIM_TRIGGER_SELECTION(SELECTION) (((SELECTION) == TIM_TS_ITR0) || \
    ; T- L1 k5 [$ `2 r2 [9 O+ h% F
  14.                                              ((SELECTION) == TIM_TS_ITR1) || \
    1 u( H5 ]+ Z% P) R/ j& ~- }
  15.                                              ((SELECTION) == TIM_TS_ITR2) || \
      \9 D2 D* a8 S
  16.                                              ((SELECTION) == TIM_TS_ITR3) || \  W5 W# p+ l( k: _
  17.                                              ((SELECTION) == TIM_TS_TI1F_ED) || \* i$ a( h& Z1 w' p* l; t
  18.                                              ((SELECTION) == TIM_TS_TI1FP1) || \
    8 y. O6 [5 \4 a* h  D2 i
  19.                                              ((SELECTION) == TIM_TS_TI2FP2) || \- k1 b& l6 c) m
  20.                                              ((SELECTION) == TIM_TS_ETRF))& X8 o# o2 J: X; i1 G
  21. #define IS_TIM_INTERNAL_TRIGGER_SELECTION(SELECTION) (((SELECTION) == TIM_TS_ITR0) || \9 C* c4 d, r6 J9 F4 M
  22.                                                       ((SELECTION) == TIM_TS_ITR1) || \' j2 w( U( N( k6 }+ |( c: M
  23.                                                       ((SELECTION) == TIM_TS_ITR2) || \
    4 K; v3 S6 g1 m, _4 b* a
  24.                                                       ((SELECTION) == TIM_TS_ITR3))
复制代码
5 c! h4 B6 ]0 C
TIM_TIx_External_Clock_Source$ T$ y& K- ~. Y5 o( V( V
; o. I1 M0 U. @; G2 n
  1. /** @defgroup TIM_TIx_External_Clock_Source 4 b4 i0 i4 \2 `; ~
  2.   * @{4 B$ x2 T( I3 |6 h- w
  3.   */
    0 T) X7 J% w- J$ L; m- d+ ~

  4. 7 C; z7 R! L* s0 i" H( A
  5. #define TIM_TIxExternalCLK1Source_TI1      ((uint16_t)0x0050)
    " R* Z0 L- C3 h+ E) u
  6. #define TIM_TIxExternalCLK1Source_TI2      ((uint16_t)0x0060)/ Z. L% j# P+ Z% X
  7. #define TIM_TIxExternalCLK1Source_TI1ED    ((uint16_t)0x0040)
    0 r. @+ R/ W1 c* O$ Z& @; S+ L
复制代码
0 M% @6 U: m4 I/ Y8 _# O% {
TIM_External_Trigger_Polarity
4 T7 _$ ?! ^8 w; ^1 l* B6 W0 L% m7 F% Y
  1. /** @defgroup TIM_External_Trigger_Polarity
    7 n( Z6 A. e) i
  2.   * @{* }% [" c% j- M: g- V' |" X
  3.   */
    ) X& @9 s  `' {; b
  4. #define TIM_ExtTRGPolarity_Inverted        ((uint16_t)0x8000)9 [9 z1 e: @( ^% \5 C
  5. #define TIM_ExtTRGPolarity_NonInverted     ((uint16_t)0x0000)- U' n8 t; B: h% P1 ?* v; a
  6. #define IS_TIM_EXT_POLARITY(POLARITY) (((POLARITY) == TIM_ExtTRGPolarity_Inverted) || \
      ~9 w8 a% @$ F& y8 W; X
  7.                                        ((POLARITY) == TIM_ExtTRGPolarity_NonInverted))
复制代码

8 u* N2 Z; y$ x1 ITIM_Prescaler_Reload_Mode
% W  d3 f; j  V# g* y; Q5 {8 `
, T" O4 K! E1 T( J4 o
  1. /** @defgroup TIM_Prescaler_Reload_Mode
    ( V! u+ n7 w; ~; R1 _4 i# ?
  2.   * @{! ?  H# X( a& ~3 z
  3.   */
    ; K( U6 h1 C9 O* E

  4. " J3 x1 {' _) y8 Z2 J9 b: ^
  5. #define TIM_PSCReloadMode_Update           ((uint16_t)0x0000)
      X$ V# H, |8 |7 r, Y9 Y7 S
  6. #define TIM_PSCReloadMode_Immediate        ((uint16_t)0x0001)
    1 M# _7 q1 {" Q* D
  7. #define IS_TIM_PRESCALER_RELOAD(RELOAD) (((RELOAD) == TIM_PSCReloadMode_Update) || \) i% V$ c5 Z! L- {
  8.                                          ((RELOAD) == TIM_PSCReloadMode_Immediate))
复制代码
6 z$ g; H* r" u; {) @
TIM_Forced_Action
9 C! {; P1 ]& O% s6 ?
9 o  [- x& M: k- ^1 z2 `
  1. /** @defgroup TIM_Forced_Action * G9 h. X8 T/ H& Q
  2.   * @{
    8 i; P4 u; Y) }6 L
  3.   */
    $ n- }; T& c( b  v9 O/ g& O

  4. & F& W" w0 q1 }- b2 b
  5. #define TIM_ForcedAction_Active            ((uint16_t)0x0050)' c5 l# G7 P' c$ [
  6. #define TIM_ForcedAction_InActive          ((uint16_t)0x0040)
    ) P  s2 |5 D0 Z" F; h0 D9 ?# z
  7. #define IS_TIM_FORCED_ACTION(ACTION) (((ACTION) == TIM_ForcedAction_Active) || \! G& P4 R, H  w
  8.                                       ((ACTION) == TIM_ForcedAction_InActive))
复制代码

% |. c" K" Y) X0 ?: i7 B( J2 V( ~/ lTIM_Encoder_Mode
0 Q' p1 ^, m4 O% f" w: Y  H, X) v0 W$ x; Y
  1. /** @defgroup TIM_Encoder_Mode + Y; \$ @' s: Y) t6 x! x6 j
  2.   * @{' L% z. b' |3 H
  3.   */
    " J% i% W1 ]/ f1 f# M! ~

  4. 2 D( I- t; W0 B5 J* O6 o
  5. #define TIM_EncoderMode_TI1                ((uint16_t)0x0001). @" u2 X# ?) Q1 A/ \, W0 N
  6. #define TIM_EncoderMode_TI2                ((uint16_t)0x0002)5 R! l4 t7 Q) ?' ]/ V6 G, k: g. I
  7. #define TIM_EncoderMode_TI12               ((uint16_t)0x0003)
    ' t/ i- e  {9 m6 Y" x
  8. #define IS_TIM_ENCODER_MODE(MODE) (((MODE) == TIM_EncoderMode_TI1) || \
    3 z& J. q( o( w2 P1 F* a6 C
  9.                                    ((MODE) == TIM_EncoderMode_TI2) || \! C' }, |$ C3 v, _5 ]9 H. f; [( L
  10.                                    ((MODE) == TIM_EncoderMode_TI12))
复制代码

% u# M0 q. B: x$ D) O) VTIM_Event_Source; n" T. c  {/ S% x& x4 P

8 ]' }, |' t# G4 r+ W
  1. /** @defgroup TIM_Event_Source % r2 B9 K( k7 E  l
  2.   * @{# x& P2 V6 z5 F3 x. b- q6 N( [1 L
  3.   */2 D2 f! M( X, a" U3 Q# j
  4. * k, P) w+ A; D$ X1 ?& y) o
  5. #define TIM_EventSource_Update             ((uint16_t)0x0001)
    ; a4 F6 K9 G& [7 ~  W
  6. #define TIM_EventSource_CC1                ((uint16_t)0x0002)
    * ?) D. U- }8 D* T9 K' x
  7. #define TIM_EventSource_CC2                ((uint16_t)0x0004)
    & P* T8 Q7 C/ P
  8. #define TIM_EventSource_CC3                ((uint16_t)0x0008)& v4 v& w. }1 L
  9. #define TIM_EventSource_CC4                ((uint16_t)0x0010)
    # M& e4 R" y& p2 C6 _# X/ ?% n* r
  10. #define TIM_EventSource_COM                ((uint16_t)0x0020)
    , o. l/ n  Y1 q/ m4 X
  11. #define TIM_EventSource_Trigger            ((uint16_t)0x0040)5 m9 V# q# z) d3 v: e5 S" H
  12. #define TIM_EventSource_Break              ((uint16_t)0x0080)
    ( W8 s9 Q7 P. r8 b8 H% M
  13. #define IS_TIM_EVENT_SOURCE(SOURCE) ((((SOURCE) & (uint16_t)0xFF00) == 0x0000) && ((SOURCE) != 0x0000))   
复制代码
1 Q. g/ Y9 N1 ?! r+ y
TIM_Update_Source
& z- ?5 [: Y' X# |7 e) L+ b/ N6 n1 t, p" e9 {) m) b/ ?: b
  1. /** @defgroup TIM_Update_Source : a1 R5 R4 W5 n/ R+ |
  2.   * @{
    . _1 q7 t. i, |' Z( z' X
  3.   */8 p: N( ?: H+ z" I( m; m
  4. 3 e; Z  i' `, L: P
  5. #define TIM_UpdateSource_Global            ((uint16_t)0x0000) /*!< Source of update is the counter overflow/underflow
    $ f( X' ]' q" B& p& l' M8 z
  6.                                                                    or the setting of UG bit, or an update generation
    / H: G# I  U  ]3 ~% {  N7 Q9 B
  7.                                                                    through the slave mode controller. */
    ! O6 |. `- g$ t
  8. #define TIM_UpdateSource_Regular           ((uint16_t)0x0001) /*!< Source of update is counter overflow/underflow. */  M  c- q; I+ |& a# H+ n! k
  9. #define IS_TIM_UPDATE_SOURCE(SOURCE) (((SOURCE) == TIM_UpdateSource_Global) || \1 g. ?3 b9 u  V4 d/ q: Y: K
  10.                                       ((SOURCE) == TIM_UpdateSource_Regular))
复制代码
$ M+ I' R3 g$ M$ A/ M- Z7 a
TIM_Output_Compare_Preload_State
9 E( K3 E6 z4 J4 N( d* h- _1 U# {7 q" M4 ], }7 J
  1. /** @defgroup TIM_Output_Compare_Preload_State . ]. d8 h8 T# F! \  X! i
  2.   * @{
    ' ?6 a/ P- y' M% A! X
  3.   */2 F, V$ l1 `& c+ J+ X" Q+ {

  4. 9 u8 I  E  r( s# A
  5. #define TIM_OCPreload_Enable               ((uint16_t)0x0008)" K/ k8 N+ S! r4 L' U7 f6 g5 T& m
  6. #define TIM_OCPreload_Disable              ((uint16_t)0x0000)* Z1 ~+ ?% }' q! l' L
  7. #define IS_TIM_OCPRELOAD_STATE(STATE) (((STATE) == TIM_OCPreload_Enable) || \$ K; G5 F- |; C. t2 D
  8.                                        ((STATE) == TIM_OCPreload_Disable))
复制代码

* j; t1 L, O! |0 lTIM_Output_Compare_Fast_State1 M" N: D0 ]) O* Q+ B* k

; Y0 {; S1 [7 H# g) X; H; C
  1. /** @defgroup TIM_Output_Compare_Fast_State * ]2 C! l6 ]8 x/ D0 h; `
  2.   * @{: c1 c! N0 c" K. r% Q8 W' D3 j
  3.   */" g6 m" F4 k& }' O4 Y
  4.   b/ b; B# L3 E( n8 {+ `. c
  5. #define TIM_OCFast_Enable                  ((uint16_t)0x0004)
    % }* j1 I2 e, c; I: Q, F: o
  6. #define TIM_OCFast_Disable                 ((uint16_t)0x0000)3 i! `7 [; R) W2 t
  7. #define IS_TIM_OCFAST_STATE(STATE) (((STATE) == TIM_OCFast_Enable) || \
    0 q7 m* H; b4 O. j
  8.                                     ((STATE) == TIM_OCFast_Disable))
复制代码
9 n- a* S0 ]1 P: d( }
TIM_Output_Compare_Clear_State2 A( J* T+ S  N0 q! C

( R, s4 y4 n$ ?& \# z/ g
  1. /** @defgroup TIM_Output_Compare_Clear_State
    ' }$ w4 \# R- f4 w% K( i* p
  2.   * @{# ~' n7 y0 l6 ~% |7 N) ^" e* t
  3.   */' ?* {0 a! [1 _/ t- e+ V

  4. / u! {0 j' k" L3 j4 d
  5. #define TIM_OCClear_Enable                 ((uint16_t)0x0080)7 B" s1 }. s* x+ F6 f/ \' ^1 G
  6. #define TIM_OCClear_Disable                ((uint16_t)0x0000)% T6 T# B* s% W+ I4 [( s
  7. #define IS_TIM_OCCLEAR_STATE(STATE) (((STATE) == TIM_OCClear_Enable) || \
    0 l& h! I8 E+ _; p) f
  8.                                      ((STATE) == TIM_OCClear_Disable))
复制代码

: P( \) h: M8 A. q- R. N6 PTIM_Trigger_Output_Source6 M+ q+ |; v9 B. R! _
- b0 r( \/ @- v: ~0 d) Z
  1. /** @defgroup TIM_Trigger_Output_Source
    : S* L$ y/ K2 Y) U7 _
  2.   * @{3 ^1 j" M" N; n2 _1 Y+ B( n
  3.   */
    + V. Z' P& D% N) E

  4. 0 n5 E: r$ x8 r' c9 g' w1 V. r4 D
  5. #define TIM_TRGOSource_Reset               ((uint16_t)0x0000)
    : g; }6 g: J) I# u' x3 o! P/ d
  6. #define TIM_TRGOSource_Enable              ((uint16_t)0x0010)* u) v& g$ H1 R% N- z1 x
  7. #define TIM_TRGOSource_Update              ((uint16_t)0x0020)2 ^& m/ `+ T3 l' H. P' h4 \
  8. #define TIM_TRGOSource_OC1                 ((uint16_t)0x0030)
    % V, s6 l: s: N1 ]
  9. #define TIM_TRGOSource_OC1Ref              ((uint16_t)0x0040)& W5 d6 O6 u4 d- K
  10. #define TIM_TRGOSource_OC2Ref              ((uint16_t)0x0050)+ ~. X& M1 h4 R9 X0 y- l! Q7 @: J
  11. #define TIM_TRGOSource_OC3Ref              ((uint16_t)0x0060)" G, B0 }5 T& X) L
  12. #define TIM_TRGOSource_OC4Ref              ((uint16_t)0x0070)
    + e  d% w1 ~; B. x5 L9 {
  13. #define IS_TIM_TRGO_SOURCE(SOURCE) (((SOURCE) == TIM_TRGOSource_Reset) || \
      Y: v# N+ B0 j5 R/ ^
  14.                                     ((SOURCE) == TIM_TRGOSource_Enable) || \* g0 z! q9 g; g& k7 P0 V
  15.                                     ((SOURCE) == TIM_TRGOSource_Update) || \' Y1 V6 v4 T  o$ ?3 f* |
  16.                                     ((SOURCE) == TIM_TRGOSource_OC1) || \  M, I: C. }' ]3 {0 ~; q& j, U
  17.                                     ((SOURCE) == TIM_TRGOSource_OC1Ref) || \
    5 u9 Q' {5 ?, S' Z6 n4 N) o6 _2 Q7 T
  18.                                     ((SOURCE) == TIM_TRGOSource_OC2Ref) || \6 F# l2 f4 b7 T* K* w3 W+ L
  19.                                     ((SOURCE) == TIM_TRGOSource_OC3Ref) || \- t7 ~$ N) b: ^. d. |% S$ o
  20.                                     ((SOURCE) == TIM_TRGOSource_OC4Ref))
复制代码
; l7 w3 v* s# U7 J0 V. c
TIM_Slave_Mode
! X! f; u% ?  T% T( C
$ N; f) X6 f" c5 u' m. m  ^
  1. /** @defgroup TIM_Slave_Mode
    - t, t4 o- c3 w0 K8 v. }2 x. g
  2.   * @{9 i% q* W% U" |9 k
  3.   */$ [+ _+ E8 f, J5 d: V6 p; k; ^

  4. 7 ~" R6 k5 C. S# I' f
  5. #define TIM_SlaveMode_Reset                ((uint16_t)0x0004)! X8 G9 p( Y; K; g+ _$ F
  6. #define TIM_SlaveMode_Gated                ((uint16_t)0x0005)1 K  W4 ]" T4 e3 X: I
  7. #define TIM_SlaveMode_Trigger              ((uint16_t)0x0006), s4 t% w9 N) }( Q+ \
  8. #define TIM_SlaveMode_External1            ((uint16_t)0x0007)" F+ m$ t" P2 W" E# V
  9. #define IS_TIM_SLAVE_MODE(MODE) (((MODE) == TIM_SlaveMode_Reset) || \
    0 L0 U, a: g( P* k7 y
  10.                                  ((MODE) == TIM_SlaveMode_Gated) || \
    9 v- c( G- k! i6 J0 d" N, Q1 @4 |
  11.                                  ((MODE) == TIM_SlaveMode_Trigger) || \* |% x# J, W9 X) v# \
  12.                                  ((MODE) == TIM_SlaveMode_External1))
复制代码
2 N1 ?  ^5 H* @& E
TIM_Master_Slave_Mode- T- E- ^" }- ^" X

3 ?0 l- F/ H. g! A( j
  1. /** @defgroup TIM_Master_Slave_Mode
    ' u8 \' Y* E3 M1 f& w
  2.   * @{  H& L1 _6 u# e+ L. c
  3.   */
    + m; l+ [  g; v& J- ^- m
  4. 7 b! B" X! D8 l  w0 T7 d" f
  5. #define TIM_MasterSlaveMode_Enable         ((uint16_t)0x0080)+ ~2 d2 n% @$ I# O/ f6 l
  6. #define TIM_MasterSlaveMode_Disable        ((uint16_t)0x0000)
      ]% D1 c( A" Q: w
  7. #define IS_TIM_MSM_STATE(STATE) (((STATE) == TIM_MasterSlaveMode_Enable) || \
    0 ?, M0 z) O  t$ ~4 K
  8.                                  ((STATE) == TIM_MasterSlaveMode_Disable))
复制代码
/ c  k0 A: d$ n( ~3 H7 l
TIM_Remap8 Z" r" l4 [: j+ Y. h3 W/ ?5 D

# ~. F, A* q/ g# _: I
  1. /** @defgroup TIM_Remap
    # L% f9 J4 N* x/ A  {% F
  2.   * @{
    $ [7 a/ H: a' F, s. c
  3.   */$ s3 Y8 [; K& T, z& Z8 k

  4. ) |$ g- F2 F4 j- r( K" @( i4 @
  5. #define TIM2_TIM8_TRGO                     ((uint16_t)0x0000): b. D+ W- ^! g" O5 p5 `
  6. #define TIM2_ETH_PTP                       ((uint16_t)0x0400)( M1 T8 F4 {- a6 H  {- g3 P& Y  \
  7. #define TIM2_USBFS_SOF                     ((uint16_t)0x0800)
    5 r# g7 l' e8 ?. P
  8. #define TIM2_USBHS_SOF                     ((uint16_t)0x0C00)) ?% E+ i9 w# x. ?1 P

  9. , J' D7 K& E( d
  10. #define TIM5_GPIO                          ((uint16_t)0x0000)* T, x0 H% b0 v
  11. #define TIM5_LSI                           ((uint16_t)0x0040)1 J% X7 ]2 k7 V9 c3 Y7 u( T& h
  12. #define TIM5_LSE                           ((uint16_t)0x0080)( y. a4 t+ A# {' a% O# I) s
  13. #define TIM5_RTC                           ((uint16_t)0x00C0)$ h& D* `4 C. c, T3 }0 O

  14.   Z% ~! O- @2 T, ]$ ?: |& p
  15. #define TIM11_GPIO                         ((uint16_t)0x0000)2 V8 h( [* u: t4 L$ s9 X4 l* a3 F
  16. #define TIM11_HSE                          ((uint16_t)0x0002)8 n% ]' Q- ~4 j0 }) x5 [
  17. * f& r4 d0 G3 W5 c4 {: \) O
  18. #define IS_TIM_REMAP(TIM_REMAP)         (((TIM_REMAP) == TIM2_TIM8_TRGO)||\
    * V. r3 \" g* \- m  v
  19.                                   ((TIM_REMAP) == TIM2_ETH_PTP)||\* J: u' e& Y+ z0 b. {8 _
  20.                                   ((TIM_REMAP) == TIM2_USBFS_SOF)||\
    : f+ ?0 c6 n/ p, |5 l- O
  21.                                   ((TIM_REMAP) == TIM2_USBHS_SOF)||\
    , o; x8 N  s0 A( N" T  _
  22.                                   ((TIM_REMAP) == TIM5_GPIO)||\+ ?& y* {5 r+ G  j
  23.                                   ((TIM_REMAP) == TIM5_LSI)||\
    / x7 c9 x0 }7 }9 V; y2 j
  24.                                   ((TIM_REMAP) == TIM5_LSE)||\
    9 @/ |8 t4 Y( A1 \; T6 T
  25.                                   ((TIM_REMAP) == TIM5_RTC)||\
    0 e2 x4 h: S( p* q0 ]; ^% y
  26.                                   ((TIM_REMAP) == TIM11_GPIO)||\
    % r. r; U/ e7 `/ ~+ r) }; q
  27.                                   ((TIM_REMAP) == TIM11_HSE))
复制代码
$ @0 P4 p* w. [
TIM_Flags
  s. V' s  r- {) o! l" Z# v8 z  ]
) `/ p+ f- h8 X
  1. /** @defgroup TIM_Flags
    ( O3 L2 s, p4 R- A3 F. o
  2.   * @{
    + h7 o2 m) F3 N  A2 E# A5 w% w
  3.   */
    3 i) C+ ^) ]; c+ V7 N) i* e5 z

  4. 2 n1 R" h" I8 j1 m
  5. #define TIM_FLAG_Update                    ((uint16_t)0x0001)1 J" C& d/ @; c8 ?* N4 f5 Z
  6. #define TIM_FLAG_CC1                       ((uint16_t)0x0002)
    ! p; G/ W1 ?1 v; x% `+ l' o
  7. #define TIM_FLAG_CC2                       ((uint16_t)0x0004)1 P' e, a" ~& W9 D9 e0 k+ d. t
  8. #define TIM_FLAG_CC3                       ((uint16_t)0x0008)" h& z, l9 W8 M  U, N- [
  9. #define TIM_FLAG_CC4                       ((uint16_t)0x0010)) f) M* |  X% c2 Z
  10. #define TIM_FLAG_COM                       ((uint16_t)0x0020); V. X% x# h4 H3 T
  11. #define TIM_FLAG_Trigger                   ((uint16_t)0x0040)
    * x3 |7 ]7 g" C7 d% f6 m' `
  12. #define TIM_FLAG_Break                     ((uint16_t)0x0080)8 E1 A+ t+ R/ p& l3 F
  13. #define TIM_FLAG_CC1OF                     ((uint16_t)0x0200)" O1 P( |4 s4 s) J, n) O: S
  14. #define TIM_FLAG_CC2OF                     ((uint16_t)0x0400)- Y% v7 w: `) K; u* C$ x
  15. #define TIM_FLAG_CC3OF                     ((uint16_t)0x0800)- ~. y- m( R" w& d; e
  16. #define TIM_FLAG_CC4OF                     ((uint16_t)0x1000)
    6 ?/ C3 h- ]1 ]+ c+ Z/ G
  17. #define IS_TIM_GET_FLAG(FLAG) (((FLAG) == TIM_FLAG_Update) || \2 b* J' T/ E1 O
  18.                                ((FLAG) == TIM_FLAG_CC1) || \
    $ @2 v9 b6 t, A5 |  X$ y
  19.                                ((FLAG) == TIM_FLAG_CC2) || \9 ?1 j8 s' h) R. h4 |. G
  20.                                ((FLAG) == TIM_FLAG_CC3) || \- y& w' j. K% O$ {5 N1 g
  21.                                ((FLAG) == TIM_FLAG_CC4) || \  I) C" ?' F9 I2 t5 f* t! ~$ N; P
  22.                                ((FLAG) == TIM_FLAG_COM) || \4 J# I* z% {# W
  23.                                ((FLAG) == TIM_FLAG_Trigger) || \- I5 R# k* \( k6 w! z3 l' C
  24.                                ((FLAG) == TIM_FLAG_Break) || \2 A3 B8 u2 |7 q0 x
  25.                                ((FLAG) == TIM_FLAG_CC1OF) || \
    1 w6 P9 u+ V2 k, s0 Z
  26.                                ((FLAG) == TIM_FLAG_CC2OF) || \
    9 {  |9 c' Q- R6 T
  27.                                ((FLAG) == TIM_FLAG_CC3OF) || \2 R* M8 `% C' l2 {5 a
  28.                                ((FLAG) == TIM_FLAG_CC4OF))
复制代码

9 m# N3 S6 z  }! p其它1 ~  w* E; i8 w: {% P1 f
* W" {# {  D9 v* L* U, h: m( l1 H
  1. /** @defgroup TIM_Input_Capture_Filer_Value
    + @4 s5 j/ s0 h
  2.   * @{% u* q% r8 D+ w
  3.   */8 L  i. x+ H) c( T

  4. ( ?% s& h0 m& Q4 P: q6 q; w/ [6 M! p, G
  5. #define IS_TIM_IC_FILTER(ICFILTER) ((ICFILTER) <= 0xF)
    0 S5 n  u: @. I- U* k
  6. /**
    2 i# C) Q8 q' K0 T- X
  7.   * @}) k% Q! k) D7 ^3 s* h
  8.   */
    $ j/ Z" V; n+ j3 }3 i

  9. + A# M+ K( A: E) e6 V1 e: c+ m
  10. /** @defgroup TIM_External_Trigger_Filter . e0 A3 M: L$ `9 E" E( K4 [
  11.   * @{7 L9 V( _( V6 B
  12.   */5 {+ I: L- b! ?. q/ ]
  13. 6 T/ M6 P( A7 |. {4 g
  14. #define IS_TIM_EXT_FILTER(EXTFILTER) ((EXTFILTER) <= 0xF); f: _+ ]6 r; E9 ?
  15. /**( I9 H" d8 z; S: Y6 |
  16.   * @}/ w0 f- Z; g8 V9 m; U1 i/ r  G
  17.   */
    , i/ \: V0 v# @/ q3 O
  18. 7 x8 \# T/ o/ J" p
  19. /** @defgroup TIM_Legacy
    4 a/ p: d3 v2 u/ U) H8 s
  20.   * @{
    , G; |! w2 o5 ~1 U
  21.   */
    ) S5 R: x1 Q# E# k6 l6 V( w. Q
  22. 5 Y" @; b1 T! Y  |+ ~% @* l: W. t0 l
  23. #define TIM_DMABurstLength_1Byte           TIM_DMABurstLength_1Transfer& z4 R( a' _5 U+ p3 e$ f: D. ]2 w
  24. #define TIM_DMABurstLength_2Bytes          TIM_DMABurstLength_2Transfers1 e- ^  n% Z& m4 u9 [1 L. e  Y/ d
  25. #define TIM_DMABurstLength_3Bytes          TIM_DMABurstLength_3Transfers
    ( c5 q3 `+ j( e# p4 k, D
  26. #define TIM_DMABurstLength_4Bytes          TIM_DMABurstLength_4Transfers) A6 g! o4 @! b) Z& E  R* L
  27. #define TIM_DMABurstLength_5Bytes          TIM_DMABurstLength_5Transfers9 c7 m" |1 C; t: [
  28. #define TIM_DMABurstLength_6Bytes          TIM_DMABurstLength_6Transfers
    8 M" o8 X2 \; }* D- _/ @0 l, }, C
  29. #define TIM_DMABurstLength_7Bytes          TIM_DMABurstLength_7Transfers0 @# S7 q; c7 H% r7 O7 |
  30. #define TIM_DMABurstLength_8Bytes          TIM_DMABurstLength_8Transfers9 b4 o1 k2 _6 h  E, `1 e* ]
  31. #define TIM_DMABurstLength_9Bytes          TIM_DMABurstLength_9Transfers: R# |6 n( j( E+ O* ?, W, ^
  32. #define TIM_DMABurstLength_10Bytes         TIM_DMABurstLength_10Transfers
    / _+ C0 n8 z2 ]. P1 K8 a
  33. #define TIM_DMABurstLength_11Bytes         TIM_DMABurstLength_11Transfers! D8 H, I. r) r4 d$ i
  34. #define TIM_DMABurstLength_12Bytes         TIM_DMABurstLength_12Transfers, v) |% Q7 P4 B' H
  35. #define TIM_DMABurstLength_13Bytes         TIM_DMABurstLength_13Transfers. {: @- E7 @$ O. P
  36. #define TIM_DMABurstLength_14Bytes         TIM_DMABurstLength_14Transfers# g1 m4 v( ~$ B8 q" ~1 p6 K0 Y$ M
  37. #define TIM_DMABurstLength_15Bytes         TIM_DMABurstLength_15Transfers
    . R4 S' R) {8 v; ~4 h( q
  38. #define TIM_DMABurstLength_16Bytes         TIM_DMABurstLength_16Transfers
    8 J1 ~" W3 f- Y& b) C+ p
  39. #define TIM_DMABurstLength_17Bytes         TIM_DMABurstLength_17Transfers
    # M) j& M5 Q, P7 Q  l
  40. #define TIM_DMABurstLength_18Bytes         TIM_DMABurstLength_18Transfers
复制代码
8 F, y7 P' B' Y; Z2 T
03. 相关函数
( S. P3 F0 @3 L5 x2 r0 ^9 i
  1. /* TimeBase management ********************************************************/! [5 j) h0 k* p0 n  B
  2. void TIM_DeInit(TIM_TypeDef* TIMx);
    ! w2 V# n3 {: I% p
  3. void TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);
    , S) v9 L  P3 H3 L% e
  4. void TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);
    ; q! z) o/ Q9 X0 y* T$ G- s% ~
  5. void TIM_PrescalerConfig(TIM_TypeDef* TIMx, uint16_t Prescaler, uint16_t TIM_PSCReloadMode);! s9 |3 S+ a. g. J
  6. void TIM_CounterModeConfig(TIM_TypeDef* TIMx, uint16_t TIM_CounterMode);5 c7 C& @. Q& `, s! z# r
  7. void TIM_SetCounter(TIM_TypeDef* TIMx, uint32_t Counter);
    9 ?/ z: U$ ?: V$ E3 H' o
  8. void TIM_SetAutoreload(TIM_TypeDef* TIMx, uint32_t Autoreload);7 ^$ u6 h9 v( t2 m$ {- \3 g. g4 A
  9. uint32_t TIM_GetCounter(TIM_TypeDef* TIMx);
    0 u" a9 q2 \2 U6 s# z# p
  10. uint16_t TIM_GetPrescaler(TIM_TypeDef* TIMx);
    5 h1 ]  H0 `* A. E( v- D$ N
  11. void TIM_UpdateDisableConfig(TIM_TypeDef* TIMx, FunctionalState NewState);6 v2 V: W; c/ \4 k: W9 a" L
  12. void TIM_UpdateRequestConfig(TIM_TypeDef* TIMx, uint16_t TIM_UpdateSource);  L8 ^) Z# Y+ K6 ]/ w3 s% c
  13. void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState);# A. O8 D: E* p! ]+ o# y+ y0 R
  14. void TIM_SelectOnePulseMode(TIM_TypeDef* TIMx, uint16_t TIM_OPMode);) i/ Q! g2 {7 G) y" t
  15. void TIM_SetClockDivision(TIM_TypeDef* TIMx, uint16_t TIM_CKD);
      a  X% C5 Q# M& I% k2 e) ~
  16. void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState);  u6 a1 k% E$ _0 u! `2 s1 w
  17. ! y' F4 l% p: o2 I  S# B+ f% Q. }
  18. /* Output Compare management **************************************************/. p( y& I6 I9 e/ J7 K$ l
  19. void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);) J# W" @( S5 I# S; @) l
  20. void TIM_OC2Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);# i- b8 O/ Q% V+ H! q6 u5 v, E: s. P
  21. void TIM_OC3Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
    8 U  O* _6 N, k$ R) [; W
  22. void TIM_OC4Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
    6 y: }5 N9 ^( s% q& W4 ^
  23. void TIM_OCStructInit(TIM_OCInitTypeDef* TIM_OCInitStruct);
    1 X" Z  V0 K- I
  24. void TIM_SelectOCxM(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_OCMode);
    # F: ^% T3 F2 r# M" A7 A& y: f
  25. void TIM_SetCompare1(TIM_TypeDef* TIMx, uint32_t Compare1);! a: M/ Q+ c: k7 A, g( S
  26. void TIM_SetCompare2(TIM_TypeDef* TIMx, uint32_t Compare2);
    7 v! r' n, ?9 \' f% n) z' I
  27. void TIM_SetCompare3(TIM_TypeDef* TIMx, uint32_t Compare3);1 N* K6 Z9 y& ]! M0 J8 [/ [
  28. void TIM_SetCompare4(TIM_TypeDef* TIMx, uint32_t Compare4);
    8 s+ g, q( @9 Z! X
  29. void TIM_ForcedOC1Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
    # D) a% q# s3 a8 e; ~6 u+ m
  30. void TIM_ForcedOC2Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);4 G) J, y* {9 q- N# s
  31. void TIM_ForcedOC3Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
    % m) B, H: N! y$ d: w1 Y$ c
  32. void TIM_ForcedOC4Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);8 X5 ?3 c. N' y  \. b$ s5 R  [
  33. void TIM_OC1PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
    + W: q9 |% U6 j9 o, n  v, C
  34. void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
    . p7 [8 ~0 j" L: _# W1 {! @
  35. void TIM_OC3PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);, U' j2 H. a$ q6 z$ e  m; ?+ x
  36. void TIM_OC4PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
    & s8 F& r  n) s: P7 S; t# a
  37. void TIM_OC1FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);) o2 Z! J$ F# l) s  Y
  38. void TIM_OC2FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
    ! }- C; C9 Z- L6 F' c+ Z) [7 _
  39. void TIM_OC3FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
    1 ^- W* s# [2 [. l
  40. void TIM_OC4FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);$ F. w) X. G" K
  41. void TIM_ClearOC1Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
    8 l0 I+ u5 W% ?3 _& M
  42. void TIM_ClearOC2Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);, n' B$ l, [6 e6 M( p6 ~
  43. void TIM_ClearOC3Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
    ! D! V$ g$ i" l' ~
  44. void TIM_ClearOC4Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);6 K+ n6 o! ]: {+ }
  45. void TIM_OC1PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);- y6 M* R, }9 C" }7 g2 v
  46. void TIM_OC1NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);
    9 Q. |  r1 t, x  Y: o5 V4 W5 c3 @
  47. void TIM_OC2PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
    4 _: {: A4 f- A" U  q
  48. void TIM_OC2NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);" ^5 M# [' T! X' H
  49. void TIM_OC3PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);  i% B7 g1 U" D. v" O
  50. void TIM_OC3NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);( C( Q/ \" I2 j& j3 a
  51. void TIM_OC4PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);/ p% x2 f" D" w) g, ]6 G
  52. void TIM_CCxCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCx);
    2 a- z- S+ j2 }- W& K6 m
  53. void TIM_CCxNCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCxN);
    - c& u( X( }9 Y
  54. , l! A* R4 k; }0 C: B; X
  55. /* Input Capture management ***************************************************/
    ; p/ Z1 m; Z+ i0 c9 m
  56. void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);3 v4 O( J& `6 y7 y/ Y) S7 I. g
  57. void TIM_ICStructInit(TIM_ICInitTypeDef* TIM_ICInitStruct);
    / c5 ]3 O! ]! h
  58. void TIM_PWMIConfig(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);' d# ]) n3 Q# y4 I; E, F
  59. uint32_t TIM_GetCapture1(TIM_TypeDef* TIMx);
    ' ?9 W$ w9 E# M) ?3 S
  60. uint32_t TIM_GetCapture2(TIM_TypeDef* TIMx);8 i2 ^# [5 [/ U
  61. uint32_t TIM_GetCapture3(TIM_TypeDef* TIMx);
    . b- Z5 `) f  @( K) h
  62. uint32_t TIM_GetCapture4(TIM_TypeDef* TIMx);
    + b% w, S7 C! K
  63. void TIM_SetIC1Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);! e2 |% [- Q7 _0 _* T$ ^
  64. void TIM_SetIC2Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);9 r5 W; z/ P. o3 P. R8 @: g* B
  65. void TIM_SetIC3Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
    7 Y. }4 T! W& h3 k7 P' O; t+ k
  66. void TIM_SetIC4Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);, S2 H+ ^5 z% Z7 `) \

  67. + |5 ?" g4 E9 R7 I6 {6 K/ X
  68. /* Advanced-control timers (TIM1 and TIM8) specific features ******************/
    $ E$ ~. T6 a: j2 s& T  k5 I, ?
  69. void TIM_BDTRConfig(TIM_TypeDef* TIMx, TIM_BDTRInitTypeDef *TIM_BDTRInitStruct);2 O# X2 m1 j  s* H" u9 ~. P* o( [
  70. void TIM_BDTRStructInit(TIM_BDTRInitTypeDef* TIM_BDTRInitStruct);8 u0 B* ?1 Z1 s
  71. void TIM_CtrlPWMOutputs(TIM_TypeDef* TIMx, FunctionalState NewState);
    8 \- `3 a- @' [1 K
  72. void TIM_SelectCOM(TIM_TypeDef* TIMx, FunctionalState NewState);+ ?. V* s* h' Z% T
  73. void TIM_CCPreloadControl(TIM_TypeDef* TIMx, FunctionalState NewState);- O0 n- U5 [* O5 a! o# ]
  74. 6 ~0 f' ~/ z" [+ M* d
  75. /* Interrupts, DMA and flags management ***************************************/
    8 `, g4 N7 N& l3 X
  76. void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);) o: {% H- t; y5 [* U3 T: D) O
  77. void TIM_GenerateEvent(TIM_TypeDef* TIMx, uint16_t TIM_EventSource);# Z8 J2 ^/ J3 z9 K4 ]( r
  78. FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);2 u( `3 f0 W% @; P' J. R" ^1 b
  79. void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);* s9 ?5 c% f/ S* h
  80. ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT);; s  t$ p) s2 w0 k3 y
  81. void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT);
    , v3 U9 J0 D' o
  82. void TIM_DMAConfig(TIM_TypeDef* TIMx, uint16_t TIM_DMABase, uint16_t TIM_DMABurstLength);/ d8 Y, J% `! \8 D( @
  83. void TIM_DMACmd(TIM_TypeDef* TIMx, uint16_t TIM_DMASource, FunctionalState NewState);' X1 O0 R; l0 M$ w$ L+ w
  84. void TIM_SelectCCDMA(TIM_TypeDef* TIMx, FunctionalState NewState);
    & t0 c4 U$ b* w' m) ?( I

  85. 4 k6 ?6 {; }& |/ n9 I/ o* w5 O- R
  86. /* Clocks management **********************************************************/0 p. ~" ?* n9 |) X; j7 p: t
  87. void TIM_InternalClockConfig(TIM_TypeDef* TIMx);+ `4 b9 K/ R, A
  88. void TIM_ITRxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);
    2 G( f: l6 w0 c; ]6 `$ R" F
  89. void TIM_TIxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_TIxExternalCLKSource,
    9 m( J" A6 p; y( [; D
  90.                                 uint16_t TIM_ICPolarity, uint16_t ICFilter);
    1 }. R1 b' y5 P- [- G. `+ l1 t
  91. void TIM_ETRClockMode1Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,
    4 R( W7 y3 i. w! F1 p% f
  92.                              uint16_t ExtTRGFilter);5 N& F0 u3 F: [* W, `
  93. void TIM_ETRClockMode2Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, 0 D1 M4 Q* E" U' u& m
  94.                              uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter);
    3 a9 ]5 O; m5 r( u
  95. * |2 U$ }' |2 i# C" c! V. U
  96. /* Synchronization management *************************************************/
    8 w1 {, I1 L7 p
  97. void TIM_SelectInputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);
    # G, h8 C  f" {
  98. void TIM_SelectOutputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_TRGOSource);
    1 M) N- x; J' g* e$ U0 e0 n
  99. void TIM_SelectSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_SlaveMode);  x# L& ]( ~( ?" B
  100. void TIM_SelectMasterSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_MasterSlaveMode);
    / z7 G: n; _5 d+ O: j+ @& z8 N
  101. void TIM_ETRConfig(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,2 Q( n8 u% s+ b) l) e4 `
  102.                    uint16_t ExtTRGFilter);# I0 V1 I% E9 f' G$ b" E+ y* ^, t
  103. 4 E! E4 P8 o2 ]
  104. /* Specific interface management **********************************************/   
    " r% K! C1 i( z4 c3 ^3 j' U' @
  105. void TIM_EncoderInterfaceConfig(TIM_TypeDef* TIMx, uint16_t TIM_EncoderMode,
    - w0 U; N& k: I) Y
  106.                                 uint16_t TIM_IC1Polarity, uint16_t TIM_IC2Polarity);
    ' _* A0 ~" x0 a8 d" l3 ^7 L
  107. void TIM_SelectHallSensor(TIM_TypeDef* TIMx, FunctionalState NewState);/ L2 y; L5 K' F/ x/ s

  108. # r+ w" n  d: t$ Z% e& _
  109. /* Specific remapping management **********************************************/
    . L2 \- |) Q( w& Q, x
  110. void TIM_RemapConfig(TIM_TypeDef* TIMx, uint16_t TIM_Remap);
复制代码

" V9 P/ M# E+ R6 Q$ k$ S: J3 M04. 结构体封装
' h* ?. R6 y; o# f) g  e
  1. /**
    2 c' ]- R7 ?4 _$ x: @, h
  2.   * @brief TIM4 Q4 b1 _0 d5 q4 q
  3.   */+ Q, L2 e0 d: q7 U0 V* l

  4. 5 I5 w7 U: V. q) N3 J
  5. typedef struct
    # i. s+ ~9 Z4 f6 t. I% k9 E
  6. {
    0 |( c7 F/ B2 L8 o; j: }+ B
  7.   __IO uint16_t CR1;         /*!< TIM control register 1,              Address offset: 0x00 */4 D' A% e. c) d/ {3 P8 p+ U0 n9 Y
  8.   uint16_t      RESERVED0;   /*!< Reserved, 0x02                                            */8 r8 G& N5 B7 Q6 r0 S: g
  9.   __IO uint16_t CR2;         /*!< TIM control register 2,              Address offset: 0x04 */( R, D0 w0 @! y$ [( n$ d. G
  10.   uint16_t      RESERVED1;   /*!< Reserved, 0x06                                            */7 F  g" n# a4 U& z  g4 j
  11.   __IO uint16_t SMCR;        /*!< TIM slave mode control register,     Address offset: 0x08 */% M' r' e8 X6 Z9 f, J1 ^( r
  12.   uint16_t      RESERVED2;   /*!< Reserved, 0x0A                                            */$ f. ]3 ?! a( [5 p2 N+ b
  13.   __IO uint16_t DIER;        /*!< TIM DMA/interrupt enable register,   Address offset: 0x0C */
    0 F! |" @, D+ M4 Y
  14.   uint16_t      RESERVED3;   /*!< Reserved, 0x0E                                            */
    2 G/ P' g% R4 c' w
  15.   __IO uint16_t SR;          /*!< TIM status register,                 Address offset: 0x10 *// B5 |# i! g6 q/ j
  16.   uint16_t      RESERVED4;   /*!< Reserved, 0x12                                            */8 u3 W) N! z6 Q4 T# z# H
  17.   __IO uint16_t EGR;         /*!< TIM event generation register,       Address offset: 0x14 */
    5 _3 I% M/ `6 `0 _2 n
  18.   uint16_t      RESERVED5;   /*!< Reserved, 0x16                                            */% ]0 i. [7 s' Y
  19.   __IO uint16_t CCMR1;       /*!< TIM capture/compare mode register 1, Address offset: 0x18 */$ O6 w. \& G, }" H: O' o
  20.   uint16_t      RESERVED6;   /*!< Reserved, 0x1A                                            */" @0 v4 n2 R5 @( `% U
  21.   __IO uint16_t CCMR2;       /*!< TIM capture/compare mode register 2, Address offset: 0x1C */
    % x) x; Y4 s1 G; {/ X
  22.   uint16_t      RESERVED7;   /*!< Reserved, 0x1E                                            */
      W$ N) Y" k2 I
  23.   __IO uint16_t CCER;        /*!< TIM capture/compare enable register, Address offset: 0x20 */
    ; u2 P6 m& F9 v/ O8 q
  24.   uint16_t      RESERVED8;   /*!< Reserved, 0x22                                            */" w) Z: ^; E5 {* I  k, E
  25.   __IO uint32_t CNT;         /*!< TIM counter register,                Address offset: 0x24 */: r2 ^% n$ l7 q7 ?% D
  26.   __IO uint16_t PSC;         /*!< TIM prescaler,                       Address offset: 0x28 */
    5 _! o% N8 b1 I$ N# ?* L
  27.   uint16_t      RESERVED9;   /*!< Reserved, 0x2A                                            */
    + s: [! a3 u1 r2 _
  28.   __IO uint32_t ARR;         /*!< TIM auto-reload register,            Address offset: 0x2C */
    9 R) E; m; X. g& n' z+ _: A& z
  29.   __IO uint16_t RCR;         /*!< TIM repetition counter register,     Address offset: 0x30 */
    4 o& w0 @/ m/ y& I, W# Z7 L+ _7 k: l
  30.   uint16_t      RESERVED10;  /*!< Reserved, 0x32                                            */3 i9 ^" g$ O" w) U" s
  31.   __IO uint32_t CCR1;        /*!< TIM capture/compare register 1,      Address offset: 0x34 */
    8 \/ F. m- B) l
  32.   __IO uint32_t CCR2;        /*!< TIM capture/compare register 2,      Address offset: 0x38 */2 r3 O; i- X) R) C
  33.   __IO uint32_t CCR3;        /*!< TIM capture/compare register 3,      Address offset: 0x3C */" n& d. n4 d6 F4 b
  34.   __IO uint32_t CCR4;        /*!< TIM capture/compare register 4,      Address offset: 0x40 */
    ! l- z2 Z: @! j! j* ~. `- V: m, K
  35.   __IO uint16_t BDTR;        /*!< TIM break and dead-time register,    Address offset: 0x44 */% ?! }  R; T& l9 U9 r
  36.   uint16_t      RESERVED11;  /*!< Reserved, 0x46                                            */
    " X' t2 n3 l  n7 x
  37.   __IO uint16_t DCR;         /*!< TIM DMA control register,            Address offset: 0x48 */& ^; ?4 [. ^) H( z1 Q- K8 {
  38.   uint16_t      RESERVED12;  /*!< Reserved, 0x4A                                            */
    9 W8 l3 ?+ z! D) w2 `) e) f
  39.   __IO uint16_t DMAR;        /*!< TIM DMA address for full transfer,   Address offset: 0x4C */0 M& R+ F9 p" K( P
  40.   uint16_t      RESERVED13;  /*!< Reserved, 0x4E                                            */
    / m/ c7 C' A- [0 ~1 e. [$ k4 a
  41.   __IO uint16_t OR;          /*!< TIM option register,                 Address offset: 0x50 */8 P$ b# D) [' r9 g
  42.   uint16_t      RESERVED14;  /*!< Reserved, 0x52                                            */* U* l7 k9 _# E2 {3 F
  43. } TIM_TypeDef;
复制代码

1 `% R- {! j* [8 N+ F+ |6 B; B+ c& W0 X6 V- E( B! V
! B+ |) y) G' C3 u1 H0 j7 j& ~, p) s
赞 收藏 评论0 发布时间:2022-6-13 17:40

举报

0个回答

所属标签

相似技术帖

官网相关资源

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