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

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

[复制链接]
STMCU小助手 发布时间:2022-6-13 17:40
01. TIM概述+ B3 G2 A+ }  }; x+ K# L
stm32f4xx_tim.h和stm32f4xx_tim.c文件中
! H1 D9 I3 ?+ M2 l4 p* u
8 T8 k. {1 n0 \/ y02. 相关类型* L3 C% Q0 \: M, c3 P  i; ^, a! m
TIM_TimeBaseInitTypeDef3 @! _/ m  O" z5 A2 e

! P& ^- z5 c3 B9 \& w
  1. /**
    / _' ?- y8 ?0 i7 \8 T
  2.   * @brief  TIM Time Base Init structure definition  ) J6 D8 M" t- e8 g
  3.   * @note   This structure is used with all TIMx except for TIM6 and TIM7.  
    ' D: {4 q. N, ?! e
  4.   */' ~( i1 h% w$ G
  5. * [/ L4 t3 v7 i5 L4 k- A' A( d
  6. typedef struct2 ^, s4 K* [& F' b
  7. {
    & z: _8 B8 R2 v2 ^4 L: E$ V7 \
  8.   uint16_t TIM_Prescaler;         /*!< Specifies the prescaler value used to divide the TIM clock.
    . l1 I' o! ~9 c4 d4 m
  9.                                        This parameter can be a number between 0x0000 and 0xFFFF */# J: Z8 X7 y) d9 I8 O8 g
  10. , h' u3 N4 Z9 `% q3 ^3 S" j
  11.   uint16_t TIM_CounterMode;       /*!< Specifies the counter mode.
    1 K) X; G# }! s
  12.                                        This parameter can be a value of @ref TIM_Counter_Mode */
    & f; Q$ G6 l' N, X5 U1 m2 }5 A7 t

  13. 7 K; V/ y" @- b7 l4 w
  14.   uint32_t TIM_Period;            /*!< Specifies the period value to be loaded into the active
    : s" P1 h9 J5 y! q5 s
  15.                                        Auto-Reload Register at the next update event.  ?1 U5 I" M( C& {( Y
  16.                                        This parameter must be a number between 0x0000 and 0xFFFF.  */
    * Y8 c; T% s/ T6 j
  17.   I" X3 z1 s+ h! v, O* s2 D
  18.   uint16_t TIM_ClockDivision;     /*!< Specifies the clock division.3 \- l" p9 L- K8 P6 T
  19.                                       This parameter can be a value of @ref TIM_Clock_Division_CKD */. c* e3 V( o) ?! [$ `

  20. * D6 Z6 g: N  x/ G# ?8 g. D
  21.   uint8_t TIM_RepetitionCounter;  /*!< Specifies the repetition counter value. Each time the RCR downcounter- ^: T; B/ [+ \
  22.                                        reaches zero, an update event is generated and counting restarts
    : `; o: ], [8 X5 _
  23.                                        from the RCR value (N).; J+ N9 R2 x; r  N# j. U: A
  24.                                        This means in PWM mode that (N+1) corresponds to:
    5 `* h4 j9 y: B7 F5 }7 ]5 V
  25.                                           - the number of PWM periods in edge-aligned mode
    5 A2 s9 f0 r# h* M' m# ?6 m3 S
  26.                                           - the number of half PWM period in center-aligned mode) b: ]) X6 ^: F. u
  27.                                        This parameter must be a number between 0x00 and 0xFF. $ w$ w1 ?6 U0 {( N7 M: [
  28.                                        @note This parameter is valid only for TIM1 and TIM8. */
    . m" X5 n  X: B8 u7 H* T2 F" O
  29. } TIM_TimeBaseInitTypeDef;
复制代码
& e# m' P" [1 U# |1 W. _
TIM_OCInitTypeDef3 n9 `* ^2 N) V) T

2 W# i- a- ]' z9 N8 N
  1. /**
    7 r; g7 K& b9 R. r
  2.   * @brief  TIM Output Compare Init structure definition  : S( D& a, P- v, _
  3.   */0 e- M; {4 O( s( h$ a
  4. " z5 E$ `, P( v/ V3 ]
  5. typedef struct
    # I' y  R" ?5 j( ~
  6. {2 S$ V7 b: _) w6 R
  7.   uint16_t TIM_OCMode;        /*!< Specifies the TIM mode.; j* l7 B9 G: D4 [. r
  8.                                    This parameter can be a value of @ref TIM_Output_Compare_and_PWM_modes */
    5 h7 @- l4 Y; Z

  9.   A: c% g5 a, i9 {) I- C) U/ v
  10.   uint16_t TIM_OutputState;   /*!< Specifies the TIM Output Compare state.
    ; T, ]: j, T* ]2 L. M7 @
  11.                                    This parameter can be a value of @ref TIM_Output_Compare_State */
    ; H3 G: F( n7 s

  12. . g( S! O8 x" u1 [
  13.   uint16_t TIM_OutputNState;  /*!< Specifies the TIM complementary Output Compare state.
    4 z$ m  b% m) g9 J4 ?2 r4 o
  14.                                    This parameter can be a value of @ref TIM_Output_Compare_N_State# |+ R: K4 D6 t3 n, J* y
  15.                                    @note This parameter is valid only for TIM1 and TIM8. */
    ; e( Y$ |# X% ~8 i
  16. 4 t3 M+ h0 K/ k! R
  17.   uint32_t TIM_Pulse;         /*!< Specifies the pulse value to be loaded into the Capture Compare Register. % Q4 Y1 u  d6 ?7 E7 P
  18.                                    This parameter can be a number between 0x0000 and 0xFFFF */$ S* d5 G0 B, A0 o( Y! {

  19. - p0 G" R2 r1 f& d; n. |
  20.   uint16_t TIM_OCPolarity;    /*!< Specifies the output polarity.) Y; s! ]- r9 T) ?, Z1 D( g" {5 ^
  21.                                    This parameter can be a value of @ref TIM_Output_Compare_Polarity */. L) v  k1 h- Z$ g

  22. , ?, D3 K0 y/ g# U$ m+ ~. P
  23.   uint16_t TIM_OCNPolarity;   /*!< Specifies the complementary output polarity./ }; b* P. V  R& Z# j8 c
  24.                                    This parameter can be a value of @ref TIM_Output_Compare_N_Polarity4 B( U7 O! N+ R/ p! R1 D- Y, ]
  25.                                    @note This parameter is valid only for TIM1 and TIM8. */3 z) Z. l+ a! I5 b) m3 v& G

  26. 9 J# M- O. K  ~
  27.   uint16_t TIM_OCIdleState;   /*!< Specifies the TIM Output Compare pin state during Idle state.
    / n6 ~7 n+ t% J$ G
  28.                                    This parameter can be a value of @ref TIM_Output_Compare_Idle_State4 B4 C' U+ Y; j0 Z% P
  29.                                    @note This parameter is valid only for TIM1 and TIM8. */
    4 m4 b) Y- p6 S: T4 I
  30. # ^6 s' N. N" E; A) k& [9 s. Y
  31.   uint16_t TIM_OCNIdleState;  /*!< Specifies the TIM Output Compare pin state during Idle state.
    ( A; B3 F  ]9 h' {: r, {
  32.                                    This parameter can be a value of @ref TIM_Output_Compare_N_Idle_State
    ( J& |7 L; c5 d6 C5 _+ E; j) h
  33.                                    @note This parameter is valid only for TIM1 and TIM8. */
    * K- ]1 ^1 u+ Q3 j# S1 m; U3 D
  34. } TIM_OCInitTypeDef;
复制代码
# u3 L  R1 J8 S0 W7 G) V. I
TIM_ICInitTypeDef
4 c" E8 \& }0 T3 t4 c1 r& s* x& f* A- e3 ~3 o
  1. /**
    . H, F) M/ ~4 ~/ |8 }& n
  2.   * @brief  TIM Input Capture Init structure definition  
    : m6 B' l% s$ D" ?; T2 V
  3.   *// E4 x" E; j1 Y

  4. . s5 h' j6 [/ z5 b* R8 a
  5. typedef struct
    7 ~0 l8 z% h/ ~$ C
  6. {
    % B/ r  H) j7 i% l0 t& v

  7. - t% @* C+ R0 v( i2 z% N5 C
  8.   uint16_t TIM_Channel;      /*!< Specifies the TIM channel.4 ]# g7 v. H/ j
  9.                                   This parameter can be a value of @ref TIM_Channel */
    * D# @% i& Y3 W; W4 c, B0 _+ E9 ^
  10. : T, o6 @) n  M9 ?0 S3 t
  11.   uint16_t TIM_ICPolarity;   /*!< Specifies the active edge of the input signal.  ^: J1 _2 S4 c2 U& P" ~
  12.                                   This parameter can be a value of @ref TIM_Input_Capture_Polarity */
    ; u& W1 D2 D: i$ ~: R3 T& j4 V

  13. ( ~: ~* J/ O3 f4 {, T
  14.   uint16_t TIM_ICSelection;  /*!< Specifies the input.
    3 o3 P! M- F: b2 @$ h
  15.                                   This parameter can be a value of @ref TIM_Input_Capture_Selection */1 t' u! \6 n' e
  16. 4 D" A' b8 Q& t
  17.   uint16_t TIM_ICPrescaler;  /*!< Specifies the Input Capture Prescaler.3 ?0 l/ h( j! X6 R7 L3 m" h, v
  18.                                   This parameter can be a value of @ref TIM_Input_Capture_Prescaler */
    , D( ?5 _/ _3 G" N( P( `$ l7 c

  19. ; _( L; @% D2 R3 e0 a
  20.   uint16_t TIM_ICFilter;     /*!< Specifies the input capture filter.
    4 ]/ b' A) H$ K% s9 g$ D- y* q, T
  21.                                   This parameter can be a number between 0x0 and 0xF */1 _2 X5 |$ f; K. B) i6 j4 O* a
  22. } TIM_ICInitTypeDef;
复制代码

9 |; m) o* y, |- }+ K8 M+ wTIM_BDTRInitTypeDef
8 V4 e7 M$ S( j+ J% o- o% [+ `- X) p' a) P* o
  1. /**
    : H# E; Q2 l+ r' @! I
  2.   * @brief  BDTR structure definition / }& ~- ]+ c: ~" R3 m
  3.   * @note   This structure is used only with TIM1 and TIM8.    - j$ b, X$ K% M( w2 }* p" k/ D
  4.   */
      ^: @5 L- n9 M& `$ P" ]6 E

  5. 0 y7 I$ d# N# T0 Q' B
  6. typedef struct
    0 w. k2 W% F0 ]8 M  h% Q. Z$ H. x
  7. {& h9 _  V0 b& J7 J4 r3 P# d8 ]
  8. " E. R0 M* c( S1 I
  9.   uint16_t TIM_OSSRState;        /*!< Specifies the Off-State selection used in Run mode.
    ( P+ b( I1 V* v* O
  10.                                       This parameter can be a value of @ref TIM_OSSR_Off_State_Selection_for_Run_mode_state */; Q1 D# B/ s6 f/ E

  11. 4 W& {2 h& S! s# f* t1 _; o
  12.   uint16_t TIM_OSSIState;        /*!< Specifies the Off-State used in Idle state.
    1 h3 _2 w6 t3 r. d
  13.                                       This parameter can be a value of @ref TIM_OSSI_Off_State_Selection_for_Idle_mode_state */
      h+ r6 [* f1 c# T) i" E
  14. ( M. y0 e2 q$ S6 _
  15.   uint16_t TIM_LOCKLevel;        /*!< Specifies the LOCK level parameters.1 O! W( i4 r5 W) R
  16.                                       This parameter can be a value of @ref TIM_Lock_level */ / P6 E& u8 E) q; ]

  17. 4 \  u$ S% r! i/ h
  18.   uint16_t TIM_DeadTime;         /*!< Specifies the delay time between the switching-off and the  A4 L# p  A4 l
  19.                                       switching-on of the outputs.: `. k2 g: y" ?9 G5 }- D
  20.                                       This parameter can be a number between 0x00 and 0xFF  *// _9 |- S  V' M$ z
  21.   L% _# d4 |5 e" L8 E
  22.   uint16_t TIM_Break;            /*!< Specifies whether the TIM Break input is enabled or not. $ q, S  c; k% E7 w# O4 q. W
  23.                                       This parameter can be a value of @ref TIM_Break_Input_enable_disable */# {/ u9 R( n! C

  24. - W  x. _8 ?4 G1 O1 Y$ {. ?1 u
  25.   uint16_t TIM_BreakPolarity;    /*!< Specifies the TIM Break Input pin polarity.
    . }0 `3 G& Z/ A  B- [
  26.                                       This parameter can be a value of @ref TIM_Break_Polarity */" G$ M; L5 [# g4 K- T

  27. 7 _+ P$ `8 c9 Y% U; _: z6 P) Y
  28.   uint16_t TIM_AutomaticOutput;  /*!< Specifies whether the TIM Automatic Output feature is enabled or not.
    . h) ^4 p1 S: k  N0 x# F
  29.                                       This parameter can be a value of @ref TIM_AOE_Bit_Set_Reset */
    7 I, k1 N. T. M+ t% v
  30. } TIM_BDTRInitTypeDef;
复制代码

) d7 c; X. O% S$ `# }TIM
+ i  p. X, _3 I( Q0 N& b9 ]  u
( }  }4 o+ D( ]3 K0 ~1 Q. o
  1. /** @defgroup TIM_Exported_constants
    # U: P0 N& R( c3 B% H
  2.   * @{
    " [- k6 W# F0 Q* A
  3.   */& B+ j: _9 m$ E! Y& R6 }- v
  4. ! D+ b- G3 B6 e  |7 F9 Y
  5. #define IS_TIM_ALL_PERIPH(PERIPH) (((PERIPH) == TIM1) || \4 m6 r2 B' t6 }9 a. d" W7 y) a7 X5 r
  6.                                    ((PERIPH) == TIM2) || \
    * N8 I( j6 V1 `& C9 g) e) |
  7.                                    ((PERIPH) == TIM3) || \
    8 M, y) J; j+ _- \
  8.                                    ((PERIPH) == TIM4) || \& f, {% a4 h3 j8 G! N5 |. d
  9.                                    ((PERIPH) == TIM5) || \
    8 y$ q7 z/ ~9 y) H" ]
  10.                                    ((PERIPH) == TIM6) || \
    ! J4 O# v$ ]- J+ ]. l
  11.                                    ((PERIPH) == TIM7) || \
    ( i* ?+ ~1 D/ k' ?) ~; v, a
  12.                                    ((PERIPH) == TIM8) || \+ e9 r" q) |0 Y& G0 T
  13.                                    ((PERIPH) == TIM9) || \' S/ o) O3 W  N  s! A0 C. N2 s
  14.                                    ((PERIPH) == TIM10) || \
    : ^% ^; |! t$ Y$ u) w
  15.                                    ((PERIPH) == TIM11) || \. Z- Q% ]2 [/ J3 ~
  16.                                    ((PERIPH) == TIM12) || \  [4 {. b* n7 ?0 b
  17.                                    (((PERIPH) == TIM13) || \
      \1 C4 v. W% a% R" e+ E& S
  18.                                    ((PERIPH) == TIM14)))
    5 @- _9 `) k+ [1 o
  19. /* LIST1: TIM1, TIM2, TIM3, TIM4, TIM5, TIM8, TIM9, TIM10, TIM11, TIM12, TIM13 and TIM14 */                                         
    8 d9 l  a& H& y/ k
  20. #define IS_TIM_LIST1_PERIPH(PERIPH) (((PERIPH) == TIM1) || \7 I1 n" g, z; q9 l" {
  21.                                      ((PERIPH) == TIM2) || \9 t3 r5 l9 V% Z5 P
  22.                                      ((PERIPH) == TIM3) || \- R/ b6 l4 {1 D4 S' c( E2 }7 Z/ W/ r
  23.                                      ((PERIPH) == TIM4) || \
    9 m2 C6 u: p: q" L
  24.                                      ((PERIPH) == TIM5) || \" z$ a# y% s0 Y  K
  25.                                      ((PERIPH) == TIM8) || \
    / D. M5 O( A9 k% G
  26.                                      ((PERIPH) == TIM9) || \* Z* r' v! D. R( ~" U4 G% R  [
  27.                                      ((PERIPH) == TIM10) || \0 g- P. k; f; E; W
  28.                                      ((PERIPH) == TIM11) || \
    5 }0 k# }- P6 w! R& K
  29.                                      ((PERIPH) == TIM12) || \
    % Q- U. t. c4 U0 {) j. @4 w
  30.                                      ((PERIPH) == TIM13) || \
    $ R3 Y. l/ v. N# J9 H
  31.                                      ((PERIPH) == TIM14))) J* \6 T* S: n- \- Z) s: z7 u
  32. 1 t( B9 y0 m' p5 `9 ]3 F! F5 d
  33. /* LIST2: TIM1, TIM2, TIM3, TIM4, TIM5, TIM8, TIM9 and TIM12 */) W# h$ W2 }' X: I$ X. T, r+ }3 ^, V
  34. #define IS_TIM_LIST2_PERIPH(PERIPH) (((PERIPH) == TIM1) || \
    ! K3 f& I# {) d3 V/ {. H) \9 P
  35.                                      ((PERIPH) == TIM2) || \
    1 V3 z7 o* D- p- u- J
  36.                                      ((PERIPH) == TIM3) || \8 i1 O  x7 Z! Q2 d  l7 K0 j
  37.                                      ((PERIPH) == TIM4) || \5 v7 n7 B( P/ M" F8 e2 L. q% V
  38.                                      ((PERIPH) == TIM5) || \
    3 n- |2 R( `( J8 b, P# l
  39.                                      ((PERIPH) == TIM8) || \) v2 R$ }5 H# x' k2 v3 j$ M
  40.                                      ((PERIPH) == TIM9) || \
    2 o6 \% S( g, u9 V+ Z( H" }6 W
  41.                                      ((PERIPH) == TIM12))
    6 S  w* b0 ^/ N  B7 l
  42. /* LIST3: TIM1, TIM2, TIM3, TIM4, TIM5 and TIM8 */
    & v7 M$ _/ d) {& W4 F) n
  43. #define IS_TIM_LIST3_PERIPH(PERIPH) (((PERIPH) == TIM1) || \+ _& `% q8 ]2 M6 q: J
  44.                                      ((PERIPH) == TIM2) || \
    0 X! I$ B( M0 R; X" [
  45.                                      ((PERIPH) == TIM3) || \. z3 e% k/ G5 z$ Z; q  w/ c* t
  46.                                      ((PERIPH) == TIM4) || \& E0 k% }( x2 W& e
  47.                                      ((PERIPH) == TIM5) || \8 z) U  P2 [2 G! }# w% i
  48.                                      ((PERIPH) == TIM8))
    # a8 `/ U+ L( o0 M
  49. /* LIST4: TIM1 and TIM8 */+ `/ O* U" q' h9 Y
  50. #define IS_TIM_LIST4_PERIPH(PERIPH) (((PERIPH) == TIM1) || \, d4 n3 b4 x0 B8 ^! w, c2 [) F3 R
  51.                                      ((PERIPH) == TIM8))1 z0 j& e6 z5 L# g2 W# v( I
  52. /* LIST5: TIM1, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7 and TIM8 */
    3 i9 q1 t' U& H! E9 N  e
  53. #define IS_TIM_LIST5_PERIPH(PERIPH) (((PERIPH) == TIM1) || \
    . X, D$ s4 h9 ~& @
  54.                                      ((PERIPH) == TIM2) || \4 W  s  L5 N; y% @
  55.                                      ((PERIPH) == TIM3) || \* E+ I$ ~3 i* c2 L
  56.                                      ((PERIPH) == TIM4) || \3 k  T4 W  B7 ]; N% u* g
  57.                                      ((PERIPH) == TIM5) || \
    % r8 N4 Q: Z! p; E1 g6 E* y* W) v
  58.                                      ((PERIPH) == TIM6) || \( Y- G! o7 x! \2 R0 @1 o* _- f: @
  59.                                      ((PERIPH) == TIM7) || \
    9 E8 G1 ?* _/ O" G' W( [
  60.                                      ((PERIPH) == TIM8))
    # ^* @3 a7 l( v1 O
  61. /* LIST6: TIM2, TIM5 and TIM11 */                              
    7 E8 _3 n% G. }( V
  62. #define IS_TIM_LIST6_PERIPH(TIMx)(((TIMx) == TIM2) || \# }0 d. v$ j. \% `; w. ]* g5 ~! _
  63.                                  ((TIMx) == TIM5) || \5 f) v$ k0 [* M& O- s! G
  64.                                  ((TIMx) == TIM11))
复制代码
: H( p7 {) x1 X
TIM_Output_Compare_and_PWM_modes
0 l& v3 v! r: j: \# \' O  m" e
" H! D  r8 h% b3 J  ^: Q3 F4 t  p$ p
  1. /** @defgroup TIM_Output_Compare_and_PWM_modes 2 ]; F% f5 L8 \$ S9 I; q- I( s
  2.   * @{7 k% @; Z" V( i3 L! F/ p
  3.   */
    8 f$ G) R( x( Y$ ?$ T: `  `
  4. 4 y) P+ v  C9 c6 R$ e: d9 ?' `, F
  5. #define TIM_OCMode_Timing                  ((uint16_t)0x0000)* }) ]3 K+ v6 Y2 g
  6. #define TIM_OCMode_Active                  ((uint16_t)0x0010)
    2 w9 J/ c; I* o6 B5 k) t: c' ~
  7. #define TIM_OCMode_Inactive                ((uint16_t)0x0020)
    8 j) Y% |+ d  a/ d% b1 A2 P
  8. #define TIM_OCMode_Toggle                  ((uint16_t)0x0030)2 R; o- H: p- W  [% K
  9. #define TIM_OCMode_PWM1                    ((uint16_t)0x0060)6 Z6 Q% t; x' m& {/ c
  10. #define TIM_OCMode_PWM2                    ((uint16_t)0x0070)
    ' W4 Y$ I7 }0 s  f$ {7 [
  11. #define IS_TIM_OC_MODE(MODE) (((MODE) == TIM_OCMode_Timing) || \$ N) j0 A2 d4 ^' }/ |" y5 v$ p, f
  12.                               ((MODE) == TIM_OCMode_Active) || \
    + s6 _% ?: l# N' N1 B0 u- r0 t
  13.                               ((MODE) == TIM_OCMode_Inactive) || \
    . v6 _/ e0 I7 o% w
  14.                               ((MODE) == TIM_OCMode_Toggle)|| \- Y( s) w' M- K' S. }* l' Y
  15.                               ((MODE) == TIM_OCMode_PWM1) || \
    ( z, J' K7 C6 `6 j
  16.                               ((MODE) == TIM_OCMode_PWM2))
    ; {, f( Q7 V5 S2 b4 ~
  17. #define IS_TIM_OCM(MODE) (((MODE) == TIM_OCMode_Timing) || \
    9 }, F2 s( L! P$ K
  18.                           ((MODE) == TIM_OCMode_Active) || \
    ; q2 C. m- B8 t- ]5 D! l" C
  19.                           ((MODE) == TIM_OCMode_Inactive) || \
    8 ^7 \& ^2 C8 c, w
  20.                           ((MODE) == TIM_OCMode_Toggle)|| \: _4 X3 Z, U8 n) ]# q9 r) ?
  21.                           ((MODE) == TIM_OCMode_PWM1) || \8 A" R# l$ v9 ?8 M& I: N! e  h
  22.                           ((MODE) == TIM_OCMode_PWM2) ||        \9 ]. y, ^- r, m, d9 u
  23.                           ((MODE) == TIM_ForcedAction_Active) || \
    $ `' M! ]+ f6 g
  24.                           ((MODE) == TIM_ForcedAction_InActive))
复制代码

; J' D! k7 I6 o" t; g8 x' wTIM_One_Pulse_Mode. t7 Q" R  \' u8 A+ I

/ M: q# k+ ~9 G; `5 W
  1. /** @defgroup TIM_One_Pulse_Mode
    ; S* T# W5 u& \) |2 ^) P
  2.   * @{
    6 C: r: D4 z. G. r& b
  3.   */
    ' T! q0 l# k( x
  4. 3 c) _3 I- s) ]* E- p8 N% B
  5. #define TIM_OPMode_Single                  ((uint16_t)0x0008). y1 o6 k- L+ D$ e# M' V$ y
  6. #define TIM_OPMode_Repetitive              ((uint16_t)0x0000)
    8 M$ h  ^' R7 C! V, j, g
  7. #define IS_TIM_OPM_MODE(MODE) (((MODE) == TIM_OPMode_Single) || \
    . p7 ]1 f' n& A- ]2 L7 [3 y
  8.                                ((MODE) == TIM_OPMode_Repetitive))
复制代码

  I6 \- y! a* U- ~/ {% NTIM_Channel
% Q; ]' @+ S7 p  R) _9 w- D9 |" N( b: k. |/ P% B1 p
  1. /** @defgroup TIM_Channel
    3 l7 O8 ^" y% x6 V6 M
  2.   * @{
    " H/ [; n2 Z2 y+ ~6 B: `( x
  3.   */
    ) U$ M. c* T* H

  4. # E7 M! L9 [& E
  5. #define TIM_Channel_1                      ((uint16_t)0x0000)- k0 M+ {* G5 K1 P
  6. #define TIM_Channel_2                      ((uint16_t)0x0004)! l6 @$ l  [" d; B9 \; h
  7. #define TIM_Channel_3                      ((uint16_t)0x0008)% ?" ~4 ~/ r% x. V5 H) n1 ?- \
  8. #define TIM_Channel_4                      ((uint16_t)0x000C)
    0 T8 j+ o9 l9 a1 b" N% S8 a+ _

  9. % j+ `+ S" X) l8 a
  10. #define IS_TIM_CHANNEL(CHANNEL) (((CHANNEL) == TIM_Channel_1) || \# x7 K" r" x& H. U/ t, ]7 t
  11.                                  ((CHANNEL) == TIM_Channel_2) || \
    0 k* i% I, D3 ~6 V! W" L
  12.                                  ((CHANNEL) == TIM_Channel_3) || \
    1 O7 W. S5 U  S
  13.                                  ((CHANNEL) == TIM_Channel_4))6 D2 `) m6 Z; l  {$ j* ^4 m

  14. , y/ p; ?+ v" E! I. F
  15. #define IS_TIM_PWMI_CHANNEL(CHANNEL) (((CHANNEL) == TIM_Channel_1) || \! T' k& |, q8 @, k: n- `2 z9 y
  16.                                       ((CHANNEL) == TIM_Channel_2))
    6 Z  z) M/ X. x* \
  17. #define IS_TIM_COMPLEMENTARY_CHANNEL(CHANNEL) (((CHANNEL) == TIM_Channel_1) || \
    % q+ x, R* c6 J
  18.                                                ((CHANNEL) == TIM_Channel_2) || \
    & [7 T) a& U& u
  19.                                                ((CHANNEL) == TIM_Channel_3))
    $ |7 d' J3 q9 O! N5 t( T9 ^; ~3 w
复制代码

' I; j) G: H5 B8 A% O5 qTIM_Clock_Division_CKD! W( a3 p5 O( t

0 |! T; v, ~6 Z2 z* S
  1. /** @defgroup TIM_Clock_Division_CKD 5 ^$ R2 x& A+ g9 O1 Z1 B" R
  2.   * @{
    . }4 Q- {, n/ l+ J8 D. [
  3.   */: @+ _; X: C6 ~* p

  4. / y" ~1 e( v' M0 H
  5. #define TIM_CKD_DIV1                       ((uint16_t)0x0000)
    0 b8 m. X: d" [8 e
  6. #define TIM_CKD_DIV2                       ((uint16_t)0x0100); P7 X! `% x9 B/ a# `- ~8 A$ b; r4 u
  7. #define TIM_CKD_DIV4                       ((uint16_t)0x0200); ]0 j* p+ U, o9 ~+ s+ Y
  8. #define IS_TIM_CKD_DIV(DIV) (((DIV) == TIM_CKD_DIV1) || \, l. H8 U1 N8 j) u( b; m2 {/ c
  9.                              ((DIV) == TIM_CKD_DIV2) || \
    " v# ]4 z6 [9 j% f" |) ]
  10.                              ((DIV) == TIM_CKD_DIV4))
复制代码

. ~6 ^* A! l. Z2 aTIM_Counter_Mode
  {/ b: P, c; A4 y/ C2 H; ~. `* ]9 \$ Q7 h
  1. /** @defgroup TIM_Counter_Mode
    + R2 J4 ~+ f$ |/ [) l) e. I' J
  2.   * @{, P4 M" t" `7 J! ~
  3.   */
    + a( f" U- z/ {( R

  4. 4 Q( y8 s+ p  }
  5. #define TIM_CounterMode_Up                 ((uint16_t)0x0000); F* M, g3 F( {" `( f+ X
  6. #define TIM_CounterMode_Down               ((uint16_t)0x0010)
    . _5 V& @, [: x: ~' e, ]
  7. #define TIM_CounterMode_CenterAligned1     ((uint16_t)0x0020); ^6 g+ D! f& d
  8. #define TIM_CounterMode_CenterAligned2     ((uint16_t)0x0040)" ~1 o; {* R  H& `7 J
  9. #define TIM_CounterMode_CenterAligned3     ((uint16_t)0x0060)  E: g3 {( `" Z8 \  `% W; m
  10. #define IS_TIM_COUNTER_MODE(MODE) (((MODE) == TIM_CounterMode_Up) ||  \( }3 v5 j- W; G" z5 i; d, [
  11.                                    ((MODE) == TIM_CounterMode_Down) || \
    # i' X7 m: k' v$ \0 i; @6 m
  12.                                    ((MODE) == TIM_CounterMode_CenterAligned1) || \: G9 i, p7 s0 w2 B7 k2 i
  13.                                    ((MODE) == TIM_CounterMode_CenterAligned2) || \. q% p% h  }4 |' q
  14.                                    ((MODE) == TIM_CounterMode_CenterAligned3))
复制代码
) f% T! I: U/ L. I: W8 F4 C
TIM_Output_Compare_Polarity- ~) R$ b3 C- O+ r4 f
. d3 Y$ T0 p* e# d8 |1 {
  1. /** @defgroup TIM_Output_Compare_Polarity
      y. D( H4 A% {( E
  2.   * @{
    , Z# n6 d9 [2 s' X8 n4 F2 D( C
  3.   */
    , V) i; w) c- K9 v0 l- x' V- ?6 [& W
  4. + d; X) S6 P$ |7 g: W. v
  5. #define TIM_OCPolarity_High                ((uint16_t)0x0000)- d5 s1 G2 R5 r9 s/ P8 C0 ^# M3 G
  6. #define TIM_OCPolarity_Low                 ((uint16_t)0x0002)
    $ P! p. e( z# C0 F
  7. #define IS_TIM_OC_POLARITY(POLARITY) (((POLARITY) == TIM_OCPolarity_High) || \, d4 m+ {! G/ e& i4 Z
  8.                                       ((POLARITY) == TIM_OCPolarity_Low))
复制代码

! w! U7 X, \: B7 h5 TTIM_Output_Compare_N_Polarity
  1. /** @defgroup TIM_Output_Compare_N_Polarity
    . Z6 r$ j! ]: `" s5 I+ _  ]. d2 D
  2.   * @{
    . y$ d& T* D( D9 \2 B' U5 i
  3.   */
    ( A# v" c0 y7 a- |
  4. 0 K# T8 a8 d. X' y7 m. a- p( O
  5. #define TIM_OCNPolarity_High               ((uint16_t)0x0000)
    2 M: b2 M# ], H2 @/ J" F
  6. #define TIM_OCNPolarity_Low                ((uint16_t)0x0008)
    . ?$ l+ c8 s* D1 Z8 \9 w
  7. #define IS_TIM_OCN_POLARITY(POLARITY) (((POLARITY) == TIM_OCNPolarity_High) || \/ x$ x. Y. I: F' @
  8.                                        ((POLARITY) == TIM_OCNPolarity_Low))
复制代码

3 p' I: C) v; `" G. y6 `% ETIM_Output_Compare_State' V0 d. i3 h% y2 N8 a- W- C$ o. r
: P$ E4 R% S5 X7 W) ]
  1. /** @defgroup TIM_Output_Compare_State
    5 {9 c) ]5 V% \* q$ `* b  }
  2.   * @{9 Q* s, b2 x$ Q- b: ?2 y' l4 d
  3.   */. F4 L- W  {* ^" B
  4.   j" r0 l8 j! p( V9 o5 S
  5. #define TIM_OutputState_Disable            ((uint16_t)0x0000)* J, D2 U+ G- o! D0 A+ X& g
  6. #define TIM_OutputState_Enable             ((uint16_t)0x0001)0 h  h; Y) o. x7 ^4 [$ R
  7. #define IS_TIM_OUTPUT_STATE(STATE) (((STATE) == TIM_OutputState_Disable) || \
    : T" i; Z7 Z: v4 v* `. D7 r/ f, C
  8.                                     ((STATE) == TIM_OutputState_Enable))
复制代码
1 m3 y! p+ x3 I1 P" O, L
TIM_Output_Compare_N_State
, z/ f5 W1 `+ E% ^5 \- J
& S% a1 O% I, _, M5 V; f9 H" \$ M
  1. /** @defgroup TIM_Output_Compare_N_State
    . [- s$ Q8 J& x( i) B; ?  x
  2.   * @{
    1 K& ?& m9 \7 E6 [5 T  t
  3.   */
    # h% [( v2 r) s* n/ m

  4. ) p5 o' \. d7 ?. l5 w& r$ {
  5. #define TIM_OutputNState_Disable           ((uint16_t)0x0000)
    4 f- h" L, u* ]+ c: L
  6. #define TIM_OutputNState_Enable            ((uint16_t)0x0004)
    $ Y: A( Y5 u' [) l
  7. #define IS_TIM_OUTPUTN_STATE(STATE) (((STATE) == TIM_OutputNState_Disable) || \/ P& ]% M5 @# I9 T
  8.                                      ((STATE) == TIM_OutputNState_Enable))
复制代码

2 A% C# v& q& c2 z2 jTIM_Capture_Compare_State
) L, U1 x4 \) F
8 m* `: \: ?  @7 O5 g3 v
  1. /** @defgroup TIM_Capture_Compare_State
    4 U6 j  ?! S/ U3 _! Q
  2.   * @{
    8 O- |3 ~# b9 V; v* T
  3.   */( f0 m+ ?( c9 h, |

  4. 9 e  s$ k9 E+ Q% C- |
  5. #define TIM_CCx_Enable                      ((uint16_t)0x0001)
    ! x  `" k* g7 b8 j1 B! s" y
  6. #define TIM_CCx_Disable                     ((uint16_t)0x0000)
    6 M" @8 {8 h. y1 [$ I3 }( l+ T
  7. #define IS_TIM_CCX(CCX) (((CCX) == TIM_CCx_Enable) || \1 r' T8 ~; s, ?6 f4 K
  8.                          ((CCX) == TIM_CCx_Disable))
复制代码
& M" a) f. m8 I: j4 V
TIM_Capture_Compare_N_State
, J" K7 Q. ?4 E* l" O
- l" T( w! r5 a' `! P
  1. /** @defgroup TIM_Capture_Compare_N_State
    ; j0 b+ o" r4 P2 o6 X8 B# r
  2.   * @{
    - B% _5 e0 Y) \8 o2 L
  3.   */+ e+ i: A7 T. z/ s1 V4 E
  4. : P( S: ]5 b2 y
  5. #define TIM_CCxN_Enable                     ((uint16_t)0x0004)/ Y, {, g8 V% z( G9 Q8 c
  6. #define TIM_CCxN_Disable                    ((uint16_t)0x0000)4 `7 R0 _3 G- @* P' m  l  D
  7. #define IS_TIM_CCXN(CCXN) (((CCXN) == TIM_CCxN_Enable) || \
    / `5 s- l2 s; Z! I8 [
  8.                            ((CCXN) == TIM_CCxN_Disable))
复制代码
0 p0 @! X" Z' b, y- g* u5 S" S
TIM_Break_Input_enable_disable
) p$ x2 g, W. K( }5 H8 C1 ~: p2 i" m7 \4 }; n+ O% ]$ A
  1. /** @defgroup TIM_Break_Input_enable_disable
    / b) M; h, t) V, ^. ~: T) L5 M
  2.   * @{0 L$ Z2 j+ f# ?+ ^9 v" c  s
  3.   */
    : G$ q1 M. O, S0 x( s4 i3 J9 A

  4. / b- d4 i+ m+ y, [
  5. #define TIM_Break_Enable                   ((uint16_t)0x1000)
    9 o/ p% A4 |7 q# m& r
  6. #define TIM_Break_Disable                  ((uint16_t)0x0000)
    ) J/ p+ \* x3 \8 i
  7. #define IS_TIM_BREAK_STATE(STATE) (((STATE) == TIM_Break_Enable) || \! _: B  M! V9 L/ M6 R) S" \: q
  8.                                    ((STATE) == TIM_Break_Disable))
复制代码

, M; |( A  t3 K8 `TIM_Break_Polarity
2 W: v+ `. f% _. w( j- B# t' p. |0 o6 \; N
  1. /** @defgroup TIM_Break_Polarity ( v5 S$ T9 `1 }/ N/ ^, J1 v: |) \
  2.   * @{
    ; @& q+ h9 G' V: r: h3 Q
  3.   */
    5 T2 f% i+ `5 L3 l6 m
  4. 4 V3 A7 Y. H( }0 p7 B
  5. #define TIM_BreakPolarity_Low              ((uint16_t)0x0000)% f. Z/ j8 j' v) b
  6. #define TIM_BreakPolarity_High             ((uint16_t)0x2000)
    $ c. R7 c$ I: I7 C* O
  7. #define IS_TIM_BREAK_POLARITY(POLARITY) (((POLARITY) == TIM_BreakPolarity_Low) || \4 A. A: \2 B  \7 v2 F1 n" g5 y
  8.                                          ((POLARITY) == TIM_BreakPolarity_High))
复制代码

3 x0 j  u1 `1 U7 g: X" FTIM_AOE_Bit_Set_Reset
6 M7 E/ p( j: j1 I
  1. /** @defgroup TIM_AOE_Bit_Set_Reset
    8 ], s, O! T0 X* ?1 X) C
  2.   * @{
    ' i' h0 l* c1 C, D7 `, j" w/ ^
  3.   */
    : ?7 |9 F# S4 M0 a7 t8 u0 Z

  4. . h6 x- k1 }! J* q" v
  5. #define TIM_AutomaticOutput_Enable         ((uint16_t)0x4000)
    8 U+ F6 f% \' v. S" m  B
  6. #define TIM_AutomaticOutput_Disable        ((uint16_t)0x0000)
    4 l2 m  P* {! ?  T0 x- Y* O9 R
  7. #define IS_TIM_AUTOMATIC_OUTPUT_STATE(STATE) (((STATE) == TIM_AutomaticOutput_Enable) || \
      q  x* a: T  Z
  8.                                               ((STATE) == TIM_AutomaticOutput_Disable))
复制代码
6 e# j, v8 n: G; A6 i* x
TIM_Lock_level
, B9 |) {; h' P; R$ @) S. D
2 G0 Q. Y. P% B2 ]7 q' ~
  1. /** @defgroup TIM_Lock_level& n8 m, [7 @  U2 M  I9 \3 c
  2.   * @{3 O* F8 W7 {4 Z7 X
  3.   */8 `& j3 @0 Z8 R& t' q* j5 z& W/ B
  4. % ^) r' m( k% I/ b* K7 U% z
  5. #define TIM_LOCKLevel_OFF                  ((uint16_t)0x0000)) o( ]) y" x: t6 G% h& S  M; T
  6. #define TIM_LOCKLevel_1                    ((uint16_t)0x0100); U- e, H3 J( o- k7 R5 ]+ ?
  7. #define TIM_LOCKLevel_2                    ((uint16_t)0x0200)
    5 h, T$ D! I; N- _. i% k
  8. #define TIM_LOCKLevel_3                    ((uint16_t)0x0300)& `2 X; W% ~7 k, g" P" w2 f# N
  9. #define IS_TIM_LOCK_LEVEL(LEVEL) (((LEVEL) == TIM_LOCKLevel_OFF) || \
    ' @/ y3 o. H. w2 o! O; s
  10.                                   ((LEVEL) == TIM_LOCKLevel_1) || \9 ]! o5 q& B2 a. O. _/ }: ]
  11.                                   ((LEVEL) == TIM_LOCKLevel_2) || \" a8 Q; a( T6 F0 d( c$ L
  12.                                   ((LEVEL) == TIM_LOCKLevel_3))
复制代码

* n' B& o8 O+ X7 {3 B  N- Y" nTIM_OSSI_Off_State_Selection_for_Idle_mode_state
  1. /** @defgroup TIM_OSSI_Off_State_Selection_for_Idle_mode_state / w% p! M4 e* C# Y, C* b' ]
  2.   * @{% e& a  C. Y* U1 t' M0 U8 p; ~
  3.   */
    2 v$ i* i" {+ s4 _
  4. % L7 P4 d, b& e& n/ I, \
  5. #define TIM_OSSIState_Enable               ((uint16_t)0x0400)
    7 W, \9 y, ~. `8 p6 S, z
  6. #define TIM_OSSIState_Disable              ((uint16_t)0x0000)
    3 p& \  O1 K& |- L
  7. #define IS_TIM_OSSI_STATE(STATE) (((STATE) == TIM_OSSIState_Enable) || \
    * Q7 v  P( R6 U. B$ x, E
  8.                                   ((STATE) == TIM_OSSIState_Disable))
复制代码

+ }% s: t8 h2 M/ J2 [+ ~  L; g* ?+ {TIM_OSSR_Off_State_Selection_for_Run_mode_state
$ G* I- a* r& E) v
- R. y" j. Q$ \3 R% N- o" Y
  1. /** @defgroup TIM_OSSR_Off_State_Selection_for_Run_mode_state
    . N& R$ F1 i* ^' B: g
  2.   * @{3 C: _9 d6 \" m# ?" X
  3.   */# a) f* g1 @& Y9 y3 j/ E4 j% V
  4. ( X/ u+ t8 t$ K/ L( |
  5. #define TIM_OSSRState_Enable               ((uint16_t)0x0800)  ]8 M  i9 ^- b& W/ q
  6. #define TIM_OSSRState_Disable              ((uint16_t)0x0000)
    " C" b! l0 o7 B. s% h2 i
  7. #define IS_TIM_OSSR_STATE(STATE) (((STATE) == TIM_OSSRState_Enable) || \9 u. y, d8 w/ B7 u9 ^+ r
  8.                                   ((STATE) == TIM_OSSRState_Disable))
复制代码
2 ?! j& z6 K; W( B  p* H
TIM_Output_Compare_Idle_State0 Q6 Y5 q6 ?) ]; _
0 m; B0 |% ]7 l* d  A) m/ p5 p9 Y
  1. /** @defgroup TIM_Output_Compare_Idle_State " Z+ v( Y- P5 J6 x
  2.   * @{
    " a# e0 }" K5 J/ E: K" X  Y4 }/ y
  3.   */
    0 G! h7 ~* u; w) ^

  4. ' q4 f, w* |. R4 {
  5. #define TIM_OCIdleState_Set                ((uint16_t)0x0100)
      g0 y& [/ X9 P5 C. B. A$ }
  6. #define TIM_OCIdleState_Reset              ((uint16_t)0x0000)% U* u, u# b, s2 L! d3 i6 X
  7. #define IS_TIM_OCIDLE_STATE(STATE) (((STATE) == TIM_OCIdleState_Set) || \
    7 w1 v7 h: c% L) M, C* m" `+ j7 s
  8.                                     ((STATE) == TIM_OCIdleState_Reset))
复制代码

! m; E. f# R' e, d: Y4 yTIM_Output_Compare_N_Idle_State
0 U& R, g+ l( B
$ k) E( m7 d2 y2 c
  1. /** @defgroup TIM_Output_Compare_N_Idle_State : v1 s# G- m% I
  2.   * @{
    9 A" @5 d0 T$ L! B3 {* [4 W
  3.   */( V9 ]. W3 N9 U0 a# [$ {

  4. ' }" R$ L  e: Y3 G4 Y
  5. #define TIM_OCNIdleState_Set               ((uint16_t)0x0200)
    ! v& x+ W( F! K: n! C
  6. #define TIM_OCNIdleState_Reset             ((uint16_t)0x0000)
    % B, f, |+ E. T9 }
  7. #define IS_TIM_OCNIDLE_STATE(STATE) (((STATE) == TIM_OCNIdleState_Set) || \) o! ?  {" v4 s( E1 t& G
  8.                                      ((STATE) == TIM_OCNIdleState_Reset))
复制代码
% l% G8 @; x* j* X4 T: [
TIM_Input_Capture_Polarity4 e9 n& T& e2 {1 l1 x5 N2 W- D0 T

4 T6 \/ @9 i$ o
  1. /** @defgroup TIM_Input_Capture_Polarity ) c! {, V$ ]& D$ M: ], l
  2.   * @{/ S( t3 ~/ T# U" m; \! x0 y
  3.   */
    , M( \+ o5 [& n
  4. ) d5 [# ~9 s/ Q! H1 I! H
  5. #define  TIM_ICPolarity_Rising             ((uint16_t)0x0000)
    5 t) J: U; a5 y4 F- J7 ~' D/ M
  6. #define  TIM_ICPolarity_Falling            ((uint16_t)0x0002)/ n8 P4 d. k3 |, q- l- T7 O6 y( D
  7. #define  TIM_ICPolarity_BothEdge           ((uint16_t)0x000A)
    ) S3 e% N" r* M0 M4 a1 i
  8. #define IS_TIM_IC_POLARITY(POLARITY) (((POLARITY) == TIM_ICPolarity_Rising) || \
    $ M1 g) a, {2 |# p! y" h
  9.                                       ((POLARITY) == TIM_ICPolarity_Falling)|| \9 s  C; B: ~1 F% N' S$ Z' o
  10.                                       ((POLARITY) == TIM_ICPolarity_BothEdge))
复制代码

6 z9 P& `3 F8 PTIM_Input_Capture_Selection
, N2 V, [7 G, k8 q' x6 S  u. g$ [, Z5 ^+ o" M5 r* Q
  1. /** @defgroup TIM_Input_Capture_Selection
    . u) G! I8 y5 J+ ?9 u1 t7 X
  2.   * @{/ M2 N, W1 [& a- Q& A  A  c4 `/ a
  3.   */
    + t, p) H: W: {9 R
  4.   T3 w6 c5 `  |  Q7 c. {0 D
  5. #define TIM_ICSelection_DirectTI           ((uint16_t)0x0001) /*!< TIM Input 1, 2, 3 or 4 is selected to be $ x5 F9 r& U6 ~! v1 n3 {5 `
  6.                                                                    connected to IC1, IC2, IC3 or IC4, respectively */* @) a3 a# j! W3 D& p: t3 I2 z4 Y
  7. #define TIM_ICSelection_IndirectTI         ((uint16_t)0x0002) /*!< TIM Input 1, 2, 3 or 4 is selected to be
    # n. t5 _+ w, L4 _/ L# N( ^1 Y
  8.                                                                    connected to IC2, IC1, IC4 or IC3, respectively. */
    1 N: \8 c( i' Y7 Q; V/ |+ G
  9. #define TIM_ICSelection_TRC                ((uint16_t)0x0003) /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to TRC. */
    8 F/ t  }- r# ~) p; G; t- O
  10. #define IS_TIM_IC_SELECTION(SELECTION) (((SELECTION) == TIM_ICSelection_DirectTI) || \  H; G7 g1 j, T5 E7 l
  11.                                         ((SELECTION) == TIM_ICSelection_IndirectTI) || \
    4 |/ N+ Y1 _1 O7 ^# n: y. J
  12.                                         ((SELECTION) == TIM_ICSelection_TRC))
复制代码
' v0 @( d0 X) h+ ~" O: R
TIM_Input_Capture_Prescaler
" b" n; Z  i% `9 {4 C2 ^$ u' K; H
& p- n+ L& l( Q1 u% F/ O
  1. /** @defgroup TIM_Input_Capture_Prescaler 3 v4 Z2 L9 E* c, T) _
  2.   * @{
    4 b# E( P% T6 E  B5 S" q
  3.   *// d- Z( D9 i# n- u( a

  4. # g% V! n2 V6 `( }2 c
  5. #define TIM_ICPSC_DIV1                     ((uint16_t)0x0000) /*!< Capture performed each time an edge is detected on the capture input. */3 G% q# N) U8 L8 P5 D# m2 i
  6. #define TIM_ICPSC_DIV2                     ((uint16_t)0x0004) /*!< Capture performed once every 2 events. */1 O5 n* M4 |6 r& z( X' M; [/ \5 k
  7. #define TIM_ICPSC_DIV4                     ((uint16_t)0x0008) /*!< Capture performed once every 4 events. *// s3 `5 Y' j6 N8 }3 t! t+ S: y" C  w3 n
  8. #define TIM_ICPSC_DIV8                     ((uint16_t)0x000C) /*!< Capture performed once every 8 events. */
    3 k% z! c0 A6 ^* q7 ?+ [0 E: c
  9. #define IS_TIM_IC_PRESCALER(PRESCALER) (((PRESCALER) == TIM_ICPSC_DIV1) || \
    5 [7 K( J( G. d" g" V, ~; D: ~
  10.                                         ((PRESCALER) == TIM_ICPSC_DIV2) || \2 u$ P  |" F( n7 x/ y
  11.                                         ((PRESCALER) == TIM_ICPSC_DIV4) || \
    ! n' q9 x6 X- M& d
  12.                                         ((PRESCALER) == TIM_ICPSC_DIV8))
    . y7 E- v; T1 J! U+ S. [6 J
复制代码

  k, t+ t8 O2 Q. M( ZTIM_interrupt_sources3 ~# x2 X& b7 \+ K( ^# E9 c% W

# b5 t9 w* r, G: V5 U9 R
  1. /** @defgroup TIM_interrupt_sources
    ; o+ F& c$ ^3 ]+ H- G: c5 Q8 Q
  2.   * @{, g+ m% @1 _  `  w
  3.   */* \; |; {% v+ }
  4. . d& y  L# h: _; W4 X
  5. #define TIM_IT_Update                      ((uint16_t)0x0001)
    & R3 E3 I; Y8 q! @
  6. #define TIM_IT_CC1                         ((uint16_t)0x0002); b+ }, h/ V2 X' e, F( K0 F  h
  7. #define TIM_IT_CC2                         ((uint16_t)0x0004)
    2 @- i# r; s: O% d7 u
  8. #define TIM_IT_CC3                         ((uint16_t)0x0008)
    , q+ Q/ w9 W3 i5 u2 b
  9. #define TIM_IT_CC4                         ((uint16_t)0x0010)
    + h, G, @/ k. S% I: s6 R
  10. #define TIM_IT_COM                         ((uint16_t)0x0020)  c) m9 F* G' [+ c5 G
  11. #define TIM_IT_Trigger                     ((uint16_t)0x0040)' ^8 c# H; B, y4 s
  12. #define TIM_IT_Break                       ((uint16_t)0x0080)& U3 e5 U' s5 b1 {+ r
  13. #define IS_TIM_IT(IT) ((((IT) & (uint16_t)0xFF00) == 0x0000) && ((IT) != 0x0000))+ E+ R3 C6 Y* g1 ~2 Q* z
  14. ; ^5 f$ ]0 _2 G' L" K  Q* [
  15. #define IS_TIM_GET_IT(IT) (((IT) == TIM_IT_Update) || \! ]4 y; D1 u( F( m5 w2 o3 t
  16.                            ((IT) == TIM_IT_CC1) || \
    1 [2 g9 B4 `. B( U
  17.                            ((IT) == TIM_IT_CC2) || \# O" V8 w! e% G" m9 n
  18.                            ((IT) == TIM_IT_CC3) || \5 s2 `2 `* l. |1 c
  19.                            ((IT) == TIM_IT_CC4) || \
    0 ?5 Q& U  s7 |2 I1 k. {! D
  20.                            ((IT) == TIM_IT_COM) || \* z2 e0 B% ~1 |0 Y# [) C: L- P- z
  21.                            ((IT) == TIM_IT_Trigger) || \
    $ _0 [: T0 A; x: l6 B# v% @2 w
  22.                            ((IT) == TIM_IT_Break))
    ( s. r  \/ x# q) F1 ?
复制代码

5 e3 g2 t1 e8 {! e3 P; dTIM_DMA_Base_address  j3 T) l4 r' k/ m9 }$ G

% F! |$ n9 d: w8 L% Q$ |$ C
  1. /** @defgroup TIM_DMA_Base_address
    $ Y2 c1 z, Y6 \. X
  2.   * @{
    " `! p- \& g* x# ?
  3.   */
    7 Q) L$ s. T$ r$ r

  4. ! k8 r1 B8 ?6 w9 v6 Q9 M# I0 Y
  5. #define TIM_DMABase_CR1                    ((uint16_t)0x0000)
    + w4 R4 a0 I4 t0 D9 I* v
  6. #define TIM_DMABase_CR2                    ((uint16_t)0x0001)4 U) l6 Y4 z3 V9 @2 P5 Z9 B3 S, t
  7. #define TIM_DMABase_SMCR                   ((uint16_t)0x0002)
      g( q$ c5 D  y1 e  r( i1 _
  8. #define TIM_DMABase_DIER                   ((uint16_t)0x0003)/ w' ?8 k4 L8 I# E3 o% @
  9. #define TIM_DMABase_SR                     ((uint16_t)0x0004)# k1 t1 B( V3 R' Z' N. P
  10. #define TIM_DMABase_EGR                    ((uint16_t)0x0005)
    - s9 A% R( s, d: p
  11. #define TIM_DMABase_CCMR1                  ((uint16_t)0x0006)
    6 k6 r* b* Z5 r6 d) @; c
  12. #define TIM_DMABase_CCMR2                  ((uint16_t)0x0007)
    ; a1 Z8 j, p2 t5 h; W/ e- S
  13. #define TIM_DMABase_CCER                   ((uint16_t)0x0008); V1 a' c3 M& n2 k: q( X
  14. #define TIM_DMABase_CNT                    ((uint16_t)0x0009)
      @+ A+ N- W( Z8 M( g5 Q1 t- l
  15. #define TIM_DMABase_PSC                    ((uint16_t)0x000A)& `/ g; L1 `% `' t3 w) z
  16. #define TIM_DMABase_ARR                    ((uint16_t)0x000B)( T/ T) E8 ^2 n' R3 v  ]
  17. #define TIM_DMABase_RCR                    ((uint16_t)0x000C): u) u( ^% @" o! z- a, N* p
  18. #define TIM_DMABase_CCR1                   ((uint16_t)0x000D)% z+ g  y, c5 }' ?9 o
  19. #define TIM_DMABase_CCR2                   ((uint16_t)0x000E)
    - ~* B3 b7 U1 U% `9 P* R1 L
  20. #define TIM_DMABase_CCR3                   ((uint16_t)0x000F)
    - _9 Q& Q2 c# G1 }7 R- Q
  21. #define TIM_DMABase_CCR4                   ((uint16_t)0x0010)
    # e0 u" v# i& ?4 \) q
  22. #define TIM_DMABase_BDTR                   ((uint16_t)0x0011)1 G' l3 C5 z4 F/ j, x
  23. #define TIM_DMABase_DCR                    ((uint16_t)0x0012)# L: i3 J8 ^. @+ P# h( L1 ^
  24. #define TIM_DMABase_OR                     ((uint16_t)0x0013)
    7 z5 U2 C" d  w, J: U% ^5 f
  25. #define IS_TIM_DMA_BASE(BASE) (((BASE) == TIM_DMABase_CR1) || \
    8 [7 V: y1 N, q  E$ D8 X7 F
  26.                                ((BASE) == TIM_DMABase_CR2) || \
    5 H% O. x# y" R. j9 b) N0 }0 m
  27.                                ((BASE) == TIM_DMABase_SMCR) || \
    4 b3 K0 U/ P9 F, W5 F; b
  28.                                ((BASE) == TIM_DMABase_DIER) || \
    " R% J" \( C/ F% Y+ ?5 z
  29.                                ((BASE) == TIM_DMABase_SR) || \
    5 {; ?: u+ v: u! _& v
  30.                                ((BASE) == TIM_DMABase_EGR) || \8 K7 z6 d# W* H3 A3 Y8 @& I9 d6 h! X
  31.                                ((BASE) == TIM_DMABase_CCMR1) || \
    ; H: @9 ]4 D7 g: e
  32.                                ((BASE) == TIM_DMABase_CCMR2) || \: Z4 k- d  b$ V% H, T2 t( l
  33.                                ((BASE) == TIM_DMABase_CCER) || \8 i  @/ X0 F5 h0 J0 h. s" ]  }- l% |
  34.                                ((BASE) == TIM_DMABase_CNT) || \2 j, K% w0 P& p; K
  35.                                ((BASE) == TIM_DMABase_PSC) || \/ x+ k3 I! l1 A, C7 k, o6 B( B
  36.                                ((BASE) == TIM_DMABase_ARR) || \
      o" Z4 K/ J+ r' O
  37.                                ((BASE) == TIM_DMABase_RCR) || \
    - C& s9 ?& y* g0 W. R. ]4 Q
  38.                                ((BASE) == TIM_DMABase_CCR1) || \
    8 E1 k2 p: v0 B4 `# [
  39.                                ((BASE) == TIM_DMABase_CCR2) || \" Z8 }1 u; d: X9 C& a
  40.                                ((BASE) == TIM_DMABase_CCR3) || \; G5 ^2 Y. g/ y6 ]  _8 z
  41.                                ((BASE) == TIM_DMABase_CCR4) || \
    # i8 Y8 x8 w+ N- v4 K' q
  42.                                ((BASE) == TIM_DMABase_BDTR) || \8 K7 R# W* Q8 F! j
  43.                                ((BASE) == TIM_DMABase_DCR) || \
    5 t5 R, l, L& E, W& i
  44.                                ((BASE) == TIM_DMABase_OR))         
复制代码
6 L- f; w/ s- V: y# u2 B! e/ ^; I
TIM_DMA_Burst_Length* x* `! s# o! A% R9 O% C

9 ~4 E& I$ o( z) u/ `! C" f0 f
  1. /** @defgroup TIM_DMA_Burst_Length ; G2 o* ]+ J" q( h+ S
  2.   * @{9 O: @( t# W* ^" D& A1 E$ z1 `, K
  3.   */  `% J% r5 \" f  G8 n1 r+ l
  4. % ]% k0 g- T1 p: Q9 Q  Z2 ?
  5. #define TIM_DMABurstLength_1Transfer           ((uint16_t)0x0000)4 G& ]# o( i* G; P, E
  6. #define TIM_DMABurstLength_2Transfers          ((uint16_t)0x0100). ~: h. ~9 j) M7 K# c4 t
  7. #define TIM_DMABurstLength_3Transfers          ((uint16_t)0x0200)
      Y5 L9 L! W3 w' W4 P
  8. #define TIM_DMABurstLength_4Transfers          ((uint16_t)0x0300)2 L7 R; m3 v6 j4 g8 T% }  s
  9. #define TIM_DMABurstLength_5Transfers          ((uint16_t)0x0400)6 O1 |4 K! v) f$ e5 c/ M
  10. #define TIM_DMABurstLength_6Transfers          ((uint16_t)0x0500)# A8 x% V2 I- u7 }" [* d
  11. #define TIM_DMABurstLength_7Transfers          ((uint16_t)0x0600)
    , T% X* t# `$ T7 z7 Y: n
  12. #define TIM_DMABurstLength_8Transfers          ((uint16_t)0x0700)
    . N7 I% V. P5 J& ^
  13. #define TIM_DMABurstLength_9Transfers          ((uint16_t)0x0800)
    + {1 ~6 U; W6 {% i
  14. #define TIM_DMABurstLength_10Transfers         ((uint16_t)0x0900)
    ' b+ u6 U+ s7 l& G2 W: q
  15. #define TIM_DMABurstLength_11Transfers         ((uint16_t)0x0A00)6 U* `" _9 N" h& G  \
  16. #define TIM_DMABurstLength_12Transfers         ((uint16_t)0x0B00)& Q$ w0 v& w' r" M0 i2 I! B9 f, }
  17. #define TIM_DMABurstLength_13Transfers         ((uint16_t)0x0C00)6 |3 e3 f5 q5 e% w$ ?0 Q: v' N
  18. #define TIM_DMABurstLength_14Transfers         ((uint16_t)0x0D00)
    . p& v# S2 g  H! Q5 t
  19. #define TIM_DMABurstLength_15Transfers         ((uint16_t)0x0E00)- \0 _  r& g5 R6 X4 _# K$ R$ S
  20. #define TIM_DMABurstLength_16Transfers         ((uint16_t)0x0F00)' f8 `0 h- L. R: X4 R
  21. #define TIM_DMABurstLength_17Transfers         ((uint16_t)0x1000)% M" _6 n' T. ~! l: o  H  a( S
  22. #define TIM_DMABurstLength_18Transfers         ((uint16_t)0x1100)
    * n, l4 y$ w) e$ x+ k: a
  23. #define IS_TIM_DMA_LENGTH(LENGTH) (((LENGTH) == TIM_DMABurstLength_1Transfer) || \; \2 Z* a8 U( l/ V- h1 y
  24.                                    ((LENGTH) == TIM_DMABurstLength_2Transfers) || \
    / P5 b( s! m2 x
  25.                                    ((LENGTH) == TIM_DMABurstLength_3Transfers) || \$ o6 V' [! ~1 k* X$ l
  26.                                    ((LENGTH) == TIM_DMABurstLength_4Transfers) || \# _# N) h, l) a. @
  27.                                    ((LENGTH) == TIM_DMABurstLength_5Transfers) || \" @' W; g. W$ U! X. V4 k
  28.                                    ((LENGTH) == TIM_DMABurstLength_6Transfers) || \
    ( }& @/ S/ T; D5 S" P# k
  29.                                    ((LENGTH) == TIM_DMABurstLength_7Transfers) || \
    # s8 g* D  F$ p8 q
  30.                                    ((LENGTH) == TIM_DMABurstLength_8Transfers) || \
    " s, c) R. h$ j! h
  31.                                    ((LENGTH) == TIM_DMABurstLength_9Transfers) || \
    ' H+ K6 @9 T7 z% }
  32.                                    ((LENGTH) == TIM_DMABurstLength_10Transfers) || \9 z/ H% c, q( p( y# ]
  33.                                    ((LENGTH) == TIM_DMABurstLength_11Transfers) || \
    4 x4 r. t9 I/ L! j+ W
  34.                                    ((LENGTH) == TIM_DMABurstLength_12Transfers) || \( \% J& Y3 \; M5 [' l" w. u% Y
  35.                                    ((LENGTH) == TIM_DMABurstLength_13Transfers) || \
    ( g* c" @7 l5 h% X. o9 h. g
  36.                                    ((LENGTH) == TIM_DMABurstLength_14Transfers) || \( \% H; H1 j6 z6 g  i
  37.                                    ((LENGTH) == TIM_DMABurstLength_15Transfers) || \- n' C' I( g- i
  38.                                    ((LENGTH) == TIM_DMABurstLength_16Transfers) || \
    ; F  o4 A+ t/ o  X
  39.                                    ((LENGTH) == TIM_DMABurstLength_17Transfers) || \/ t, w% p8 _# f, c5 V2 P# R1 F
  40.                                    ((LENGTH) == TIM_DMABurstLength_18Transfers))
复制代码

8 r0 v# @* V) a. X# _( a, yTIM_DMA_sources& E: P% _, r* ~1 T7 `; r/ \$ T
1 y- X) z3 y4 r5 d+ S% p7 A
  1. /** @defgroup TIM_DMA_sources
    / ^# O$ q: S% s6 F
  2.   * @{
    , ], P4 s4 e& O
  3.   */
    ( d# y2 J3 I. m' h" x. R, ]
  4. . v5 ^5 L; \6 H( w
  5. #define TIM_DMA_Update                     ((uint16_t)0x0100)
    : g% J& c9 N4 S3 [( V
  6. #define TIM_DMA_CC1                        ((uint16_t)0x0200)
    8 p! E" S0 U  @; H5 A- Y" E% k/ f" k
  7. #define TIM_DMA_CC2                        ((uint16_t)0x0400)8 l9 E; _9 j- r" {7 i1 {
  8. #define TIM_DMA_CC3                        ((uint16_t)0x0800), U1 D$ O0 W/ p
  9. #define TIM_DMA_CC4                        ((uint16_t)0x1000)2 b3 G# u, x% p: A6 t$ l
  10. #define TIM_DMA_COM                        ((uint16_t)0x2000)
    ; K# q$ g2 B9 C
  11. #define TIM_DMA_Trigger                    ((uint16_t)0x4000)/ d: l9 q5 c& K* h
  12. #define IS_TIM_DMA_SOURCE(SOURCE) ((((SOURCE) & (uint16_t)0x80FF) == 0x0000) && ((SOURCE) != 0x0000))
复制代码
1 H* u4 s- G' r# V; N% S! h
TIM_External_Trigger_Prescaler
7 \7 \' r1 B; l: H$ ]; ]
! n- A8 x9 O) n# q: w, N
  1. /** @defgroup TIM_External_Trigger_Prescaler
    9 q# U) e+ N1 b1 _- \* c! W$ s2 E
  2.   * @{
    # ^9 h. X/ H, z1 B$ }' ?
  3.   */! I6 S8 v* G$ K3 _4 t) O

  4. $ N  w6 M- I! f: f
  5. #define TIM_ExtTRGPSC_OFF                  ((uint16_t)0x0000)
    2 C! m4 B0 R- B+ B9 f: U$ W
  6. #define TIM_ExtTRGPSC_DIV2                 ((uint16_t)0x1000)
    , F$ |# V' R* w) a3 w6 H' i
  7. #define TIM_ExtTRGPSC_DIV4                 ((uint16_t)0x2000)
    , X! K! ^% c. d9 a
  8. #define TIM_ExtTRGPSC_DIV8                 ((uint16_t)0x3000)8 `- }6 m0 \# i5 I% V' k! c
  9. #define IS_TIM_EXT_PRESCALER(PRESCALER) (((PRESCALER) == TIM_ExtTRGPSC_OFF) || \- l' u. D+ H" }8 c
  10.                                          ((PRESCALER) == TIM_ExtTRGPSC_DIV2) || \* }/ _9 q2 U9 `% V) m
  11.                                          ((PRESCALER) == TIM_ExtTRGPSC_DIV4) || \2 Q! Y3 n( P0 U# J7 d+ T+ B; j
  12.                                          ((PRESCALER) == TIM_ExtTRGPSC_DIV8))
复制代码
9 I" L  e0 J9 t: y7 Z, P
TIM_Internal_Trigger_Selection
+ r# \) l5 N2 ~; D, X1 z- r4 y8 s( O( z& f
  1. /** @defgroup TIM_Internal_Trigger_Selection
    2 U  O! M' M9 [; q  i* n
  2.   * @{
    5 o6 T$ k; y% C0 n) @: {
  3.   */" V( V) u8 ?4 {( h# r; s
  4. & }) t# ~6 D$ m; m6 [; V' V: w( y
  5. #define TIM_TS_ITR0                        ((uint16_t)0x0000)% p  \1 w+ X- d4 J
  6. #define TIM_TS_ITR1                        ((uint16_t)0x0010)
    " v, Z" z. B7 l' z, l
  7. #define TIM_TS_ITR2                        ((uint16_t)0x0020)
    / B1 ^9 J7 X/ ^/ Z/ [
  8. #define TIM_TS_ITR3                        ((uint16_t)0x0030)' ~0 c7 T( @9 |/ u
  9. #define TIM_TS_TI1F_ED                     ((uint16_t)0x0040)3 U" f4 p+ i7 I2 `8 m
  10. #define TIM_TS_TI1FP1                      ((uint16_t)0x0050); H! x; |9 V/ Q8 |
  11. #define TIM_TS_TI2FP2                      ((uint16_t)0x0060)- D0 P& e7 z7 s6 X! i9 {, F
  12. #define TIM_TS_ETRF                        ((uint16_t)0x0070)
    9 k6 G7 h3 _, g+ s; C$ E
  13. #define IS_TIM_TRIGGER_SELECTION(SELECTION) (((SELECTION) == TIM_TS_ITR0) || \
    ( p( \1 W/ t" L8 O( |
  14.                                              ((SELECTION) == TIM_TS_ITR1) || \2 K7 l# F( D. j1 d
  15.                                              ((SELECTION) == TIM_TS_ITR2) || \
    ' |$ o- g, V. P4 t! c
  16.                                              ((SELECTION) == TIM_TS_ITR3) || \
    5 ?' ]7 ]4 ]; H( T
  17.                                              ((SELECTION) == TIM_TS_TI1F_ED) || \9 L3 [: e# n1 l) n. n2 V) f
  18.                                              ((SELECTION) == TIM_TS_TI1FP1) || \5 a! _$ P0 D. _6 j$ a
  19.                                              ((SELECTION) == TIM_TS_TI2FP2) || \  T& z, m: ~6 q3 ^/ y) E+ z4 e) d" g
  20.                                              ((SELECTION) == TIM_TS_ETRF))
    : c6 g3 q5 ]. K( T' ?1 e9 R" b! @
  21. #define IS_TIM_INTERNAL_TRIGGER_SELECTION(SELECTION) (((SELECTION) == TIM_TS_ITR0) || \
    4 z$ f; a( j3 l3 g, g0 s: [5 E
  22.                                                       ((SELECTION) == TIM_TS_ITR1) || \
    8 g% U3 T$ P2 y$ w9 u
  23.                                                       ((SELECTION) == TIM_TS_ITR2) || \( I$ X7 K7 x# a/ u% m
  24.                                                       ((SELECTION) == TIM_TS_ITR3))
复制代码
3 k/ ~5 j! z8 }0 b' ^
TIM_TIx_External_Clock_Source) Z; n8 u; b4 J

' m( K9 |) O( }( C5 r
  1. /** @defgroup TIM_TIx_External_Clock_Source , X- v. }( g- E. R( \
  2.   * @{
    6 K. c4 @% V2 G& i0 h& n7 h9 ^9 s$ Y
  3.   */
    8 o! T" A! I) k  J( t5 k* u" g

  4. # f" r! f8 L9 I4 j
  5. #define TIM_TIxExternalCLK1Source_TI1      ((uint16_t)0x0050)5 R, }: k) |. _6 w7 ~3 _3 j; g
  6. #define TIM_TIxExternalCLK1Source_TI2      ((uint16_t)0x0060)2 F5 }8 L1 A- [/ `( P$ j
  7. #define TIM_TIxExternalCLK1Source_TI1ED    ((uint16_t)0x0040)( T/ D4 @* W. e; j' L& j
复制代码

& G7 S* L, D) T4 E+ ]/ H% aTIM_External_Trigger_Polarity5 v5 N* z' A4 o# w9 s- o( y
: p/ e8 ~3 |# j
  1. /** @defgroup TIM_External_Trigger_Polarity # I8 A8 M7 B6 n- \% D
  2.   * @{/ [# ]0 W0 s8 L5 G: @- J3 ~' I
  3.   */   ~+ D9 [8 v- i1 r8 i) X
  4. #define TIM_ExtTRGPolarity_Inverted        ((uint16_t)0x8000)
    2 O( Y. t; c7 L4 Y1 l& z
  5. #define TIM_ExtTRGPolarity_NonInverted     ((uint16_t)0x0000)
    / e3 h4 L3 O, H+ X8 ~
  6. #define IS_TIM_EXT_POLARITY(POLARITY) (((POLARITY) == TIM_ExtTRGPolarity_Inverted) || \
    # Z4 K; T0 Y5 V+ d7 A) k' o
  7.                                        ((POLARITY) == TIM_ExtTRGPolarity_NonInverted))
复制代码
1 @  ~* H3 \) k
TIM_Prescaler_Reload_Mode
6 w7 ^: l: s; @
, s" @' K) J7 f0 s: T6 X
  1. /** @defgroup TIM_Prescaler_Reload_Mode
      A) u- [5 b, R: q
  2.   * @{' ^* a+ T, r; ]& d
  3.   */
    * U2 R/ G: D5 a0 s8 a1 I8 x
  4.   e  s  B5 l/ V2 @/ Y
  5. #define TIM_PSCReloadMode_Update           ((uint16_t)0x0000)
      z/ F! v" p# J5 Z* `% J/ w
  6. #define TIM_PSCReloadMode_Immediate        ((uint16_t)0x0001), {* K3 Z3 M0 s4 `
  7. #define IS_TIM_PRESCALER_RELOAD(RELOAD) (((RELOAD) == TIM_PSCReloadMode_Update) || \5 t+ l8 x, f9 M1 z! z+ X
  8.                                          ((RELOAD) == TIM_PSCReloadMode_Immediate))
复制代码
+ b# Z. x6 m* V, N
TIM_Forced_Action
4 }: z, g3 ]9 i( g- W: i
; G; {- x* _: E$ s  R& ]7 m1 @
  1. /** @defgroup TIM_Forced_Action ; \4 T) Q; |" U1 g+ p( m2 K
  2.   * @{
    : `) N5 O) Y9 a
  3.   */+ p- M- m' d, {% j; L
  4. / w/ D2 Y. c& u# ?
  5. #define TIM_ForcedAction_Active            ((uint16_t)0x0050)
    6 \) J% e1 `  U, v& x
  6. #define TIM_ForcedAction_InActive          ((uint16_t)0x0040)
    " X/ O5 A" J4 C
  7. #define IS_TIM_FORCED_ACTION(ACTION) (((ACTION) == TIM_ForcedAction_Active) || \
    3 B5 {  H9 ]4 _5 u( {9 ~/ F
  8.                                       ((ACTION) == TIM_ForcedAction_InActive))
复制代码
: Q0 m8 [) N/ z% K
TIM_Encoder_Mode
* M' A% m1 \3 }# W- a4 y+ J
, I- i* n# J$ ]# K! Q4 Y
  1. /** @defgroup TIM_Encoder_Mode
    7 q; S, ]- S8 j' p0 Y
  2.   * @{2 I9 m2 _7 r9 C0 }7 {
  3.   */
    & U- a9 T$ L) q0 \  B3 G

  4. ) w7 {, A2 F- k
  5. #define TIM_EncoderMode_TI1                ((uint16_t)0x0001)
    " S. T0 D$ G2 T4 t
  6. #define TIM_EncoderMode_TI2                ((uint16_t)0x0002)4 L  s& p5 ]3 v7 `& l0 h  X
  7. #define TIM_EncoderMode_TI12               ((uint16_t)0x0003), @& \, Q8 E5 v7 Z
  8. #define IS_TIM_ENCODER_MODE(MODE) (((MODE) == TIM_EncoderMode_TI1) || \0 m7 \. b/ V1 V" I9 e
  9.                                    ((MODE) == TIM_EncoderMode_TI2) || \
    ) y3 x8 A0 H6 A; J4 _
  10.                                    ((MODE) == TIM_EncoderMode_TI12))
复制代码

1 p+ b1 L# H" v  U$ w* vTIM_Event_Source+ Y$ C, ]( F4 ]: w

3 k2 B; U) w( ]+ w: n
  1. /** @defgroup TIM_Event_Source . b" L' T7 c9 h) ^0 m$ q+ a' }
  2.   * @{
    - J2 l" s- Q- t* H/ }9 k
  3.   */! n4 U* V: F' L' ]5 e3 w3 ~' @
  4. 1 |5 O& k6 K1 o* _! _2 R% _% S
  5. #define TIM_EventSource_Update             ((uint16_t)0x0001)- e" t/ j+ |& H% v  h* [5 H
  6. #define TIM_EventSource_CC1                ((uint16_t)0x0002)
    , t- f3 i( B5 W* V
  7. #define TIM_EventSource_CC2                ((uint16_t)0x0004)
    & G; n  g5 J* L% @" F
  8. #define TIM_EventSource_CC3                ((uint16_t)0x0008)
    , n. j9 f7 Q5 m* J9 H. T& m
  9. #define TIM_EventSource_CC4                ((uint16_t)0x0010)
    " C& E2 L" J2 @
  10. #define TIM_EventSource_COM                ((uint16_t)0x0020)  z' c5 N3 i! k  M7 t: P' a/ T
  11. #define TIM_EventSource_Trigger            ((uint16_t)0x0040)
    : q9 N( ^; |7 l, c& @6 T
  12. #define TIM_EventSource_Break              ((uint16_t)0x0080)9 z& c: X5 I& M: J/ ]% T0 M
  13. #define IS_TIM_EVENT_SOURCE(SOURCE) ((((SOURCE) & (uint16_t)0xFF00) == 0x0000) && ((SOURCE) != 0x0000))   
复制代码

/ H3 b# I7 r& L/ W: k( XTIM_Update_Source
; A! ?! v9 k" S& r* P* D. Q6 J/ O) [& j& d6 N
  1. /** @defgroup TIM_Update_Source % }% ~5 ]: z1 _* l- \% c
  2.   * @{
    $ [$ W6 \# f: `& A7 i9 D& n6 p' E) Z7 E$ P
  3.   */
    6 L2 J+ e4 l. ]2 X# h" V

  4. 1 d5 H! W! R( @# C
  5. #define TIM_UpdateSource_Global            ((uint16_t)0x0000) /*!< Source of update is the counter overflow/underflow
    ' S( S# D) q0 o. o! z6 z  t
  6.                                                                    or the setting of UG bit, or an update generation
    : f3 \6 k; ^; u7 D. i
  7.                                                                    through the slave mode controller. */6 C$ X9 Z6 [' g' \" K  r
  8. #define TIM_UpdateSource_Regular           ((uint16_t)0x0001) /*!< Source of update is counter overflow/underflow. */
    & y' |4 s- G) a" E
  9. #define IS_TIM_UPDATE_SOURCE(SOURCE) (((SOURCE) == TIM_UpdateSource_Global) || \
    2 G0 n- Q; i! a
  10.                                       ((SOURCE) == TIM_UpdateSource_Regular))
复制代码

+ w6 C9 S: ~; m; \4 |( A8 K) |& ]TIM_Output_Compare_Preload_State
3 h8 W- ]( e" x% l# P8 H
+ \+ o  ~) W& k* J8 t
  1. /** @defgroup TIM_Output_Compare_Preload_State ! [: Y* {$ M: I+ |/ W
  2.   * @{
    6 B: r, N8 n4 v2 D% K1 _. m
  3.   */' c- t1 n" Z# Q+ q

  4. ) F- D: r% w& \+ ^! H3 n
  5. #define TIM_OCPreload_Enable               ((uint16_t)0x0008)8 J# M" y# Z  o& m
  6. #define TIM_OCPreload_Disable              ((uint16_t)0x0000)* e3 X& y( Y# k7 Z& w: j7 s
  7. #define IS_TIM_OCPRELOAD_STATE(STATE) (((STATE) == TIM_OCPreload_Enable) || \
    + W0 Z2 {1 r& |, [
  8.                                        ((STATE) == TIM_OCPreload_Disable))
复制代码

# F& Q( q! n; p! l5 ]TIM_Output_Compare_Fast_State
6 }8 T2 q$ `7 z
  L6 b4 ?4 Q9 E7 R
  1. /** @defgroup TIM_Output_Compare_Fast_State 0 s3 u! [5 R" Q( x) ]
  2.   * @{/ w* `6 {7 X9 S  ]. L8 l+ Q
  3.   */) r' L8 w& W" h7 K' T' ~- S% A5 P

  4. * u1 R* a9 o: c, _% i' a
  5. #define TIM_OCFast_Enable                  ((uint16_t)0x0004)! G9 ?. `7 S: \" N- {- w6 k
  6. #define TIM_OCFast_Disable                 ((uint16_t)0x0000)% E+ S: v2 o- ~* N8 H+ ]+ r
  7. #define IS_TIM_OCFAST_STATE(STATE) (((STATE) == TIM_OCFast_Enable) || \
    / t  E% R6 @8 Q2 A8 i
  8.                                     ((STATE) == TIM_OCFast_Disable))
复制代码
& J/ g& o5 [# t8 H1 G) t
TIM_Output_Compare_Clear_State
8 E& Q2 ]  g! ^5 t) H1 C/ _& z( `, O( w' G& x2 G& y8 ~' n
  1. /** @defgroup TIM_Output_Compare_Clear_State   k0 O( M: a# B( ?0 ~* [( s
  2.   * @{
    , x! W& }1 f. J% k3 J1 N2 e( f
  3.   */! R- J3 G8 d$ w+ ^
  4. 7 B  i1 f; i& F! Y9 [# _0 V6 P
  5. #define TIM_OCClear_Enable                 ((uint16_t)0x0080)& t! c( p% F+ |! m
  6. #define TIM_OCClear_Disable                ((uint16_t)0x0000)/ U# D7 I6 C, t; E' o! p
  7. #define IS_TIM_OCCLEAR_STATE(STATE) (((STATE) == TIM_OCClear_Enable) || \2 z5 J8 L, R6 {7 F6 c' M" x
  8.                                      ((STATE) == TIM_OCClear_Disable))
复制代码
  H% ]- Z. R& c1 A! F% z2 ?
TIM_Trigger_Output_Source
/ a* c- o2 I3 i9 k. t$ I) e. z3 Q: ^# v" l7 D6 b1 c3 J! K& J
  1. /** @defgroup TIM_Trigger_Output_Source
    , `0 {1 n( T* y  C4 j* @3 s
  2.   * @{
      m: k2 l# O' \, E' ?: p& |
  3.   */
    $ u( c2 a: A8 K- q/ y& t

  4. 5 l' K* l# c- O; v
  5. #define TIM_TRGOSource_Reset               ((uint16_t)0x0000)
    , H1 |4 B' [; j' N, p
  6. #define TIM_TRGOSource_Enable              ((uint16_t)0x0010)
    4 O$ n& @+ T2 Y( I/ a* }
  7. #define TIM_TRGOSource_Update              ((uint16_t)0x0020)
    5 C- I$ r6 p2 T5 X- U
  8. #define TIM_TRGOSource_OC1                 ((uint16_t)0x0030)
    8 x7 ~/ b: r7 b' e
  9. #define TIM_TRGOSource_OC1Ref              ((uint16_t)0x0040)+ o! J1 q+ r4 T6 P+ G/ F+ `
  10. #define TIM_TRGOSource_OC2Ref              ((uint16_t)0x0050)
    , G/ l% j% z& i' l
  11. #define TIM_TRGOSource_OC3Ref              ((uint16_t)0x0060)
    / s0 j$ ^! z$ [2 v: i
  12. #define TIM_TRGOSource_OC4Ref              ((uint16_t)0x0070)! S/ G0 ~& g2 M  ?8 x) K
  13. #define IS_TIM_TRGO_SOURCE(SOURCE) (((SOURCE) == TIM_TRGOSource_Reset) || \5 `* f, C  [6 y+ t8 ^
  14.                                     ((SOURCE) == TIM_TRGOSource_Enable) || \0 n" f. b* d- Q, s
  15.                                     ((SOURCE) == TIM_TRGOSource_Update) || \
    8 |/ a$ |/ G& _3 P* d
  16.                                     ((SOURCE) == TIM_TRGOSource_OC1) || \
    9 J( V3 u) i) R, `; d
  17.                                     ((SOURCE) == TIM_TRGOSource_OC1Ref) || \% {+ u& ]" G! z: V$ e, z
  18.                                     ((SOURCE) == TIM_TRGOSource_OC2Ref) || \- B$ g7 s% W8 g' m
  19.                                     ((SOURCE) == TIM_TRGOSource_OC3Ref) || \2 B/ A* i6 Z: L5 j7 Q& B6 B
  20.                                     ((SOURCE) == TIM_TRGOSource_OC4Ref))
复制代码
% \; K9 F: z3 Y  `4 J# S5 J
TIM_Slave_Mode
- G: d% q& s7 e1 ^( V
% o5 ~- [! n7 D4 F% q9 X
  1. /** @defgroup TIM_Slave_Mode 2 Z; V( o1 c; N& Q3 e7 g1 o
  2.   * @{
    # Z5 X4 w$ e. s, \4 D: D
  3.   */
    ' i# i! {3 L6 h" X7 }

  4. . x( O$ U  A9 Q8 P6 q+ C
  5. #define TIM_SlaveMode_Reset                ((uint16_t)0x0004)
    6 p4 O8 X5 Q' A6 B2 H
  6. #define TIM_SlaveMode_Gated                ((uint16_t)0x0005)
    * m4 H; @, N( E' X8 Y  H3 i! B% q
  7. #define TIM_SlaveMode_Trigger              ((uint16_t)0x0006)% o- Q7 L  _4 m- @# v6 |
  8. #define TIM_SlaveMode_External1            ((uint16_t)0x0007)
    ; `4 I6 G! b: n* K4 Y8 y0 p
  9. #define IS_TIM_SLAVE_MODE(MODE) (((MODE) == TIM_SlaveMode_Reset) || \6 Q- b. c, N( ^
  10.                                  ((MODE) == TIM_SlaveMode_Gated) || \
    6 R4 {  M5 ~  [* F$ |% S
  11.                                  ((MODE) == TIM_SlaveMode_Trigger) || \
    % \- i  ~) b% I5 ]6 q5 t
  12.                                  ((MODE) == TIM_SlaveMode_External1))
复制代码
; f- ]" \8 I5 }& [
TIM_Master_Slave_Mode
: O* D4 R8 [0 g$ d" R4 [9 y
8 A6 @) e" b/ `: h4 t8 B
  1. /** @defgroup TIM_Master_Slave_Mode
    : V3 E+ x2 ~. p2 `
  2.   * @{4 _! W( m0 s9 {& J7 h, j  k8 j
  3.   */- @% b5 @8 G/ \. P4 U& T* b# }

  4. 5 W8 }8 @) m, Z% e+ _
  5. #define TIM_MasterSlaveMode_Enable         ((uint16_t)0x0080)) H( _* g9 I+ c" G% Q
  6. #define TIM_MasterSlaveMode_Disable        ((uint16_t)0x0000)
    + I4 s8 C" [$ J/ a
  7. #define IS_TIM_MSM_STATE(STATE) (((STATE) == TIM_MasterSlaveMode_Enable) || \
    $ K! a2 v2 d2 M$ M2 k/ V
  8.                                  ((STATE) == TIM_MasterSlaveMode_Disable))
复制代码
9 O  W- k; [$ a- U4 P9 n! J
TIM_Remap
9 f1 k5 {) I+ F+ S- R4 }1 V+ m
  1. /** @defgroup TIM_Remap
    7 b! Y  u: Q+ F
  2.   * @{$ s4 d. k) h# t! h$ f
  3.   */
    ! g5 u- ?. H, p+ M
  4. ; C) F& |7 w4 T( J+ h) y3 @
  5. #define TIM2_TIM8_TRGO                     ((uint16_t)0x0000)
    # T7 i- @! P3 H2 U7 ~' Z: t8 n
  6. #define TIM2_ETH_PTP                       ((uint16_t)0x0400)
    / m6 G# p: J/ t# O
  7. #define TIM2_USBFS_SOF                     ((uint16_t)0x0800)8 o1 P1 A  }; \; o
  8. #define TIM2_USBHS_SOF                     ((uint16_t)0x0C00)
    2 v( N0 V/ u) @# e5 O! b% W( a
  9. ' G6 }; [" V: _3 j5 B; j6 ^
  10. #define TIM5_GPIO                          ((uint16_t)0x0000)
    . J+ P$ G  x1 X, r; {1 W$ u! D
  11. #define TIM5_LSI                           ((uint16_t)0x0040)0 f. Z8 \* K0 l5 I6 G! u
  12. #define TIM5_LSE                           ((uint16_t)0x0080)
    ) [8 A, _" u. \, m0 {' S
  13. #define TIM5_RTC                           ((uint16_t)0x00C0)
    2 }% |- j% I- g. J5 t

  14. / ^# c+ j. j$ _1 t/ A) N
  15. #define TIM11_GPIO                         ((uint16_t)0x0000)
    ! D% z5 l9 C; f$ u
  16. #define TIM11_HSE                          ((uint16_t)0x0002)
    5 ^0 S6 o3 j! C1 x/ L. o
  17. ) P% `$ z2 A) z& |% x, W; ^" l
  18. #define IS_TIM_REMAP(TIM_REMAP)         (((TIM_REMAP) == TIM2_TIM8_TRGO)||\
    7 q& E" B0 M3 g% ^1 b- X
  19.                                   ((TIM_REMAP) == TIM2_ETH_PTP)||\7 P5 Q1 T7 C& g8 z$ t9 h
  20.                                   ((TIM_REMAP) == TIM2_USBFS_SOF)||\! u; B8 m: Y  E- ?" V' _
  21.                                   ((TIM_REMAP) == TIM2_USBHS_SOF)||\( O9 J1 F2 D7 O5 K
  22.                                   ((TIM_REMAP) == TIM5_GPIO)||\  s- N0 b% |* ~9 o4 N/ O. Z! V/ U
  23.                                   ((TIM_REMAP) == TIM5_LSI)||\& b- ]( s/ ]' U  N8 a" B) q: S9 x
  24.                                   ((TIM_REMAP) == TIM5_LSE)||\
    % _, c: e& p7 z1 L# K% ^
  25.                                   ((TIM_REMAP) == TIM5_RTC)||\
    ) U/ n2 @+ `2 Z, k& h! `$ }4 I
  26.                                   ((TIM_REMAP) == TIM11_GPIO)||\) |7 w! q  v, {; t8 [/ }" {7 G
  27.                                   ((TIM_REMAP) == TIM11_HSE))
复制代码

/ k$ e6 e! v+ h( C  [TIM_Flags
; x* v5 N; D* s3 z
  M( S; v2 R  S; I
  1. /** @defgroup TIM_Flags * h: k9 [- z& i0 y$ I
  2.   * @{4 y2 T5 p1 l6 M- w! E7 c8 j
  3.   */
    ; G% ~6 X0 g- ^1 q4 j# b- ?! Q% ]9 U

  4. 8 _2 G: u" \2 h
  5. #define TIM_FLAG_Update                    ((uint16_t)0x0001)  `8 v. B& y- S1 H" y
  6. #define TIM_FLAG_CC1                       ((uint16_t)0x0002)
    ) `- Y% T# n* n
  7. #define TIM_FLAG_CC2                       ((uint16_t)0x0004)( h8 W5 w3 A" \" t& y
  8. #define TIM_FLAG_CC3                       ((uint16_t)0x0008)* t# ]1 {; y$ j7 h, [, c
  9. #define TIM_FLAG_CC4                       ((uint16_t)0x0010)
    $ o  r( k$ I5 u; Z& g
  10. #define TIM_FLAG_COM                       ((uint16_t)0x0020)
    ( D! I8 j4 j0 y& J0 V% B7 P
  11. #define TIM_FLAG_Trigger                   ((uint16_t)0x0040), C% O. A0 C) Y+ b# k
  12. #define TIM_FLAG_Break                     ((uint16_t)0x0080)
    5 ?5 W6 N  e! S/ m
  13. #define TIM_FLAG_CC1OF                     ((uint16_t)0x0200)% j6 G0 V5 q+ K( ]; \, v1 p9 \3 @
  14. #define TIM_FLAG_CC2OF                     ((uint16_t)0x0400)7 p' z: M9 |; j8 H3 r7 I) x2 n
  15. #define TIM_FLAG_CC3OF                     ((uint16_t)0x0800)
    + F! n3 e; |. z8 u4 z$ R- i
  16. #define TIM_FLAG_CC4OF                     ((uint16_t)0x1000)! l  U; g# u/ D) T; e- o
  17. #define IS_TIM_GET_FLAG(FLAG) (((FLAG) == TIM_FLAG_Update) || \
    % z( t7 f- k# `4 f2 J+ n' c
  18.                                ((FLAG) == TIM_FLAG_CC1) || \
    8 g4 E" H0 X8 B6 A
  19.                                ((FLAG) == TIM_FLAG_CC2) || \
    : f* l2 f. _9 |+ J! ?2 a5 \
  20.                                ((FLAG) == TIM_FLAG_CC3) || \. w* H. S; ?" x; m& v
  21.                                ((FLAG) == TIM_FLAG_CC4) || \) ~" i, }6 q" G% l! l
  22.                                ((FLAG) == TIM_FLAG_COM) || \. E7 C6 q& x& R. ]- l
  23.                                ((FLAG) == TIM_FLAG_Trigger) || \! @. e$ }7 I& d- j; K3 I
  24.                                ((FLAG) == TIM_FLAG_Break) || \1 h8 {9 w( G1 X$ l$ M
  25.                                ((FLAG) == TIM_FLAG_CC1OF) || \
    / ]1 t- `: h8 Q# x8 M! f
  26.                                ((FLAG) == TIM_FLAG_CC2OF) || \
      a9 X# L. ]) O6 ^4 K
  27.                                ((FLAG) == TIM_FLAG_CC3OF) || \
      m* ?7 K- @& K) s+ t
  28.                                ((FLAG) == TIM_FLAG_CC4OF))
复制代码
7 U4 v/ [6 q# k" F
其它
' \, L1 G. t- B) D2 i: @6 I! ~+ x
9 G9 f. p4 b% o# U' z9 A2 C
  1. /** @defgroup TIM_Input_Capture_Filer_Value ' R/ J! r) p3 y8 z
  2.   * @{1 h, F% g1 `1 v- ^8 Q9 a, W; a
  3.   */$ \2 _+ D7 x% Z; m7 k. ?6 f

  4. 6 W1 e. u% V7 A( M$ J
  5. #define IS_TIM_IC_FILTER(ICFILTER) ((ICFILTER) <= 0xF) % x; f, l5 [) c* D) @
  6. /**5 m( I1 R  x9 q3 {
  7.   * @}
    . {9 H/ n2 e4 W) @1 v
  8.   */ . P9 e3 d5 Y' V; u7 v

  9. + \) V( f1 b4 l. V+ P/ F. {. D
  10. /** @defgroup TIM_External_Trigger_Filter 1 ^# X! T2 P) y( b
  11.   * @{! E: O: p( h' D8 m
  12.   */
    ( s( f5 M9 S4 ]* w  ^

  13. ; h8 I; \0 b9 |7 O
  14. #define IS_TIM_EXT_FILTER(EXTFILTER) ((EXTFILTER) <= 0xF)
    0 H, ^& `( K4 d) A- ^# A5 T" _
  15. /**
    # [" f' l3 W, ~2 Q+ H
  16.   * @}
    * b3 ^) M% c% h$ k# Q
  17.   */ ( ?2 {/ ?- `1 K6 g8 f) w' M
  18. ( F5 g2 e* Z2 G
  19. /** @defgroup TIM_Legacy
    + [& T* u8 c, ]7 J% j0 D) _
  20.   * @{
    " v1 K, I3 ^$ R( `  p; u
  21.   */, H/ b6 S; z" ]! J

  22. 7 f; q8 j; T3 n: ?% B. x
  23. #define TIM_DMABurstLength_1Byte           TIM_DMABurstLength_1Transfer
    7 y' X# `. m# n/ z4 c2 u
  24. #define TIM_DMABurstLength_2Bytes          TIM_DMABurstLength_2Transfers
    % A! ?8 Z! ]0 I
  25. #define TIM_DMABurstLength_3Bytes          TIM_DMABurstLength_3Transfers
    . b/ X% o: q, B! N5 h$ ^
  26. #define TIM_DMABurstLength_4Bytes          TIM_DMABurstLength_4Transfers
    ) p8 {) Z' j) B7 K5 f- i( ^
  27. #define TIM_DMABurstLength_5Bytes          TIM_DMABurstLength_5Transfers5 K& G" S4 a" @' ^+ Z  ?5 t0 I
  28. #define TIM_DMABurstLength_6Bytes          TIM_DMABurstLength_6Transfers
    1 R0 ^. x8 J) w- H( y/ T, N
  29. #define TIM_DMABurstLength_7Bytes          TIM_DMABurstLength_7Transfers. I9 l6 P& ~' i. a$ J+ b: B/ t6 q0 b
  30. #define TIM_DMABurstLength_8Bytes          TIM_DMABurstLength_8Transfers( j5 g3 t; M3 |. U% T; e1 L
  31. #define TIM_DMABurstLength_9Bytes          TIM_DMABurstLength_9Transfers
    % ?  T2 \  L" ~6 p/ Q
  32. #define TIM_DMABurstLength_10Bytes         TIM_DMABurstLength_10Transfers8 K" l! m6 V6 h7 C% }+ @/ x/ J
  33. #define TIM_DMABurstLength_11Bytes         TIM_DMABurstLength_11Transfers4 J$ E* z1 T+ D1 v
  34. #define TIM_DMABurstLength_12Bytes         TIM_DMABurstLength_12Transfers
    9 F2 P- |, |; z% H, y# `6 N
  35. #define TIM_DMABurstLength_13Bytes         TIM_DMABurstLength_13Transfers
    ; H8 k' R! A9 I7 m/ ~/ _
  36. #define TIM_DMABurstLength_14Bytes         TIM_DMABurstLength_14Transfers8 p/ h1 @% j& U9 N" m
  37. #define TIM_DMABurstLength_15Bytes         TIM_DMABurstLength_15Transfers
    ! @1 A, e: a7 t6 u  G3 \+ V
  38. #define TIM_DMABurstLength_16Bytes         TIM_DMABurstLength_16Transfers
    6 N6 v. x8 \/ X0 a3 r
  39. #define TIM_DMABurstLength_17Bytes         TIM_DMABurstLength_17Transfers/ K2 ]! f" O/ _1 E/ n  W
  40. #define TIM_DMABurstLength_18Bytes         TIM_DMABurstLength_18Transfers
复制代码
; X: f9 w: @# x4 l7 W0 |% a: {# @
03. 相关函数8 I! Y6 B/ o) O1 S2 `; J1 O/ x
  1. /* TimeBase management ********************************************************/
    , X2 e+ \* w. z- x
  2. void TIM_DeInit(TIM_TypeDef* TIMx);' w) W- |: V+ _+ X3 H( [+ f
  3. void TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);! `5 ^& t  P$ `
  4. void TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);
    9 u+ J  c. \7 t" N. |1 _
  5. void TIM_PrescalerConfig(TIM_TypeDef* TIMx, uint16_t Prescaler, uint16_t TIM_PSCReloadMode);- W* Y' n' H4 D! N  Y6 g4 c
  6. void TIM_CounterModeConfig(TIM_TypeDef* TIMx, uint16_t TIM_CounterMode);
    $ b- ^* |/ b* R2 q. L
  7. void TIM_SetCounter(TIM_TypeDef* TIMx, uint32_t Counter);
    / q* b$ ?5 _3 U2 K0 D0 z: ~
  8. void TIM_SetAutoreload(TIM_TypeDef* TIMx, uint32_t Autoreload);" K# F, b0 v9 v: T- a6 o, ]
  9. uint32_t TIM_GetCounter(TIM_TypeDef* TIMx);
      E* K8 P$ t$ s, t# W
  10. uint16_t TIM_GetPrescaler(TIM_TypeDef* TIMx);% \0 z/ i5 U/ C+ {4 d" S
  11. void TIM_UpdateDisableConfig(TIM_TypeDef* TIMx, FunctionalState NewState);  Y$ ~2 U* m) X0 q
  12. void TIM_UpdateRequestConfig(TIM_TypeDef* TIMx, uint16_t TIM_UpdateSource);
    * G4 i$ R  h+ g7 U. o! `+ k( I+ O0 E
  13. void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState);8 y% C' k( _% L* {3 v: Y1 L
  14. void TIM_SelectOnePulseMode(TIM_TypeDef* TIMx, uint16_t TIM_OPMode);* \' H- y" K+ b7 I! D4 i
  15. void TIM_SetClockDivision(TIM_TypeDef* TIMx, uint16_t TIM_CKD);
    & V% c2 X8 k7 _
  16. void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState);
    7 M3 I* a' y& A) p. t8 M1 ]* ?

  17. ; q$ x* U, e5 t- |
  18. /* Output Compare management **************************************************/1 }* d$ U0 T) }3 k3 i, t3 U
  19. void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
    9 ~7 V* k3 e0 d% ^0 T( c" q
  20. void TIM_OC2Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);. d7 Y( U2 s. k' a0 u5 C' _
  21. void TIM_OC3Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
    . F7 i) ?. X" Q+ D4 q/ F* r
  22. void TIM_OC4Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
    & B8 j% P2 h" g, s0 {
  23. void TIM_OCStructInit(TIM_OCInitTypeDef* TIM_OCInitStruct);0 e( Z  @4 Y- _2 l( `
  24. void TIM_SelectOCxM(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_OCMode);. p4 c% ]7 b* O% ~
  25. void TIM_SetCompare1(TIM_TypeDef* TIMx, uint32_t Compare1);# w$ ~6 R( x5 h% z; n
  26. void TIM_SetCompare2(TIM_TypeDef* TIMx, uint32_t Compare2);
    + `1 `* M: v) s6 a# C( G
  27. void TIM_SetCompare3(TIM_TypeDef* TIMx, uint32_t Compare3);3 i6 u; z- y  e
  28. void TIM_SetCompare4(TIM_TypeDef* TIMx, uint32_t Compare4);( {5 T/ \: w# G9 K
  29. void TIM_ForcedOC1Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
    * u/ s# M, M+ O, o  d! d
  30. void TIM_ForcedOC2Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);+ v6 N% [9 W( x% c
  31. void TIM_ForcedOC3Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
    $ a6 J: }* E3 \( G
  32. void TIM_ForcedOC4Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);4 n$ S; O- `& M. e, u& \
  33. void TIM_OC1PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
    - Q4 @* c7 U  h+ b4 \3 U$ b! N
  34. void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
    5 g" ?8 |6 P: D6 w5 T* U1 p. G9 M
  35. void TIM_OC3PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
    ! S7 ^$ L$ G+ _/ r
  36. void TIM_OC4PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);9 L5 }. e0 a1 ~  o! [2 {
  37. void TIM_OC1FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);4 R% P( I3 _; ^
  38. void TIM_OC2FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
    2 }$ i! r0 {# y7 @6 L
  39. void TIM_OC3FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);! i2 h+ N& J, J/ U! `3 {5 t
  40. void TIM_OC4FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);$ y- Q0 ^' m" |) p1 y6 u
  41. void TIM_ClearOC1Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
    2 I2 d% i5 q0 u4 m8 |
  42. void TIM_ClearOC2Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
    1 s) o4 A; f/ d0 x# I. F
  43. void TIM_ClearOC3Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
    : Z( @5 \& |: @5 f6 M
  44. void TIM_ClearOC4Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
    # y1 l$ O; z. Q' p' D$ K3 N2 {" D
  45. void TIM_OC1PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);* f' B& @7 {# e: {% F( W
  46. void TIM_OC1NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);
    & ?, f& d2 y8 G( X, |
  47. void TIM_OC2PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
      t( g' ^. T+ {- Q
  48. void TIM_OC2NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);6 H8 O7 ^7 H# ?4 m: k" d0 E
  49. void TIM_OC3PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);, b- B5 G0 @$ M- P3 W
  50. void TIM_OC3NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);/ h  X3 O, `; n6 L% _- w
  51. void TIM_OC4PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
    9 B- [" |9 |( A% V' Q
  52. void TIM_CCxCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCx);- L( l& q3 e' x
  53. void TIM_CCxNCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCxN);
      i8 C; a1 E& n2 B6 E% y3 s
  54. ( R; A5 b/ N: ~4 f
  55. /* Input Capture management ***************************************************/( ]% e9 W' q/ @" k  U# w6 n0 ]' t0 l8 x
  56. void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);
    4 A% e0 h+ o! x
  57. void TIM_ICStructInit(TIM_ICInitTypeDef* TIM_ICInitStruct);
    / i3 ^, ^- j8 ]) j6 [/ V2 m, N7 ?
  58. void TIM_PWMIConfig(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);: {( J5 Z. a) a+ L0 u- Y/ ]
  59. uint32_t TIM_GetCapture1(TIM_TypeDef* TIMx);4 [: ^! K5 M8 Z
  60. uint32_t TIM_GetCapture2(TIM_TypeDef* TIMx);( }/ Q: o, i5 e! w* f
  61. uint32_t TIM_GetCapture3(TIM_TypeDef* TIMx);( M6 x+ d2 J. B$ i
  62. uint32_t TIM_GetCapture4(TIM_TypeDef* TIMx);
      B* U& a/ q* o
  63. void TIM_SetIC1Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
    2 s( q- ]/ V2 }+ e3 n( b3 N
  64. void TIM_SetIC2Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
    3 d7 Z, Z% Z- i" x7 c
  65. void TIM_SetIC3Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
    3 S( Z* w3 W" s. f) h
  66. void TIM_SetIC4Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
    ' a3 {4 W6 G0 _; P8 z
  67. . N+ _2 d, p: Q8 f
  68. /* Advanced-control timers (TIM1 and TIM8) specific features ******************/
    6 C2 ?* |1 g+ v* @4 H& ^0 x
  69. void TIM_BDTRConfig(TIM_TypeDef* TIMx, TIM_BDTRInitTypeDef *TIM_BDTRInitStruct);% [4 R/ E3 j( P6 E7 B: h6 P: z
  70. void TIM_BDTRStructInit(TIM_BDTRInitTypeDef* TIM_BDTRInitStruct);' G) m) t* V( E1 p; ~, B
  71. void TIM_CtrlPWMOutputs(TIM_TypeDef* TIMx, FunctionalState NewState);
    7 c; n$ U# ^  h, q8 C+ h7 R$ Y2 M
  72. void TIM_SelectCOM(TIM_TypeDef* TIMx, FunctionalState NewState);
    9 [, n  f/ W( Q+ S
  73. void TIM_CCPreloadControl(TIM_TypeDef* TIMx, FunctionalState NewState);
    ; j! y6 |( H- @7 ~
  74. / k' C: j0 A8 i- ^5 {; Q/ k; `- v) q
  75. /* Interrupts, DMA and flags management ***************************************/  \  M% @3 K) ^3 F; `) K- j
  76. void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);
    : P* ?* x2 v2 E9 |9 |! A7 u
  77. void TIM_GenerateEvent(TIM_TypeDef* TIMx, uint16_t TIM_EventSource);& J, G* i0 h. J; v
  78. FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);+ z/ V- i0 C% O  E* [( u" u/ N
  79. void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);
    % m$ U( I) G/ K% {3 j- Q
  80. ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT);$ Q$ I! k" U, ^
  81. void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT);
    9 w* G- a9 A4 _& O7 v" A4 z- b
  82. void TIM_DMAConfig(TIM_TypeDef* TIMx, uint16_t TIM_DMABase, uint16_t TIM_DMABurstLength);
    & U) b# A( E. h* ]1 V) l
  83. void TIM_DMACmd(TIM_TypeDef* TIMx, uint16_t TIM_DMASource, FunctionalState NewState);
    6 K( g3 J4 I4 ]
  84. void TIM_SelectCCDMA(TIM_TypeDef* TIMx, FunctionalState NewState);/ P0 o3 A' k/ m9 o# A
  85. 9 c0 o% F, D! g  k4 }
  86. /* Clocks management **********************************************************/
    " c/ v# [6 E- V
  87. void TIM_InternalClockConfig(TIM_TypeDef* TIMx);
    4 x+ s: G* a: f
  88. void TIM_ITRxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);
      `: a% l: U6 V
  89. void TIM_TIxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_TIxExternalCLKSource,& Y$ Z4 {8 n6 j
  90.                                 uint16_t TIM_ICPolarity, uint16_t ICFilter);! q- |3 s5 Z2 q3 h$ j; S
  91. void TIM_ETRClockMode1Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity," e8 t" N% E, w, D
  92.                              uint16_t ExtTRGFilter);( I' ?# f; ]1 _" `0 ~' W( j! O
  93. void TIM_ETRClockMode2Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler,
    * G- x3 R- ~/ q" I$ V
  94.                              uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter);+ z1 a/ o) R' [- \; O0 j

  95. 9 a0 i& t8 g2 x8 l
  96. /* Synchronization management *************************************************/& u6 u" y4 C4 d' N7 D/ e7 G
  97. void TIM_SelectInputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);
    + }) B1 v- @( b1 y
  98. void TIM_SelectOutputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_TRGOSource);) k2 W% u# Z, }5 g2 I* V3 a
  99. void TIM_SelectSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_SlaveMode);
    ' h2 y% u1 {/ Q, j
  100. void TIM_SelectMasterSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_MasterSlaveMode);0 D- N3 L1 |# o& G& ~
  101. void TIM_ETRConfig(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,
    # n9 w' M/ B+ I4 o& o9 c
  102.                    uint16_t ExtTRGFilter);- O% k- |5 ]9 z6 ?7 k5 a
  103. 8 r/ p% ^  s7 S  H$ s- k
  104. /* Specific interface management **********************************************/   2 L  [% M% \) q! l! s9 d
  105. void TIM_EncoderInterfaceConfig(TIM_TypeDef* TIMx, uint16_t TIM_EncoderMode,: r7 x, ]! p& J8 ~5 U, B
  106.                                 uint16_t TIM_IC1Polarity, uint16_t TIM_IC2Polarity);
    3 b, S% B3 E+ w' u7 M) p, @, I
  107. void TIM_SelectHallSensor(TIM_TypeDef* TIMx, FunctionalState NewState);$ c0 B6 Z% b+ F0 }& J  S% Y

  108. ( P8 T8 ^# e7 ~% g: V0 T
  109. /* Specific remapping management **********************************************/
    - u( }0 E: Z% p/ W  K! l
  110. void TIM_RemapConfig(TIM_TypeDef* TIMx, uint16_t TIM_Remap);
复制代码

  x3 a" u, e7 O: O  O, u0 O04. 结构体封装
, d" g5 p8 j1 I/ n  `* @
  1. /**
    % r. a( k2 q$ n9 p4 A
  2.   * @brief TIM5 C: Z  [+ u+ y2 F  F* h
  3.   */9 t2 n5 {( |! T  A# T& I
  4. 7 n) F. G/ a2 b: ~6 P0 i: o
  5. typedef struct2 g4 @7 t2 K2 Q! B( ]/ q$ v
  6. {6 k3 c; v( \  k" ~6 w) V# j# t
  7.   __IO uint16_t CR1;         /*!< TIM control register 1,              Address offset: 0x00 */# Y  A0 L1 L: [0 H
  8.   uint16_t      RESERVED0;   /*!< Reserved, 0x02                                            */
    * N( V5 _7 m4 I& |3 @* G+ q) b! e
  9.   __IO uint16_t CR2;         /*!< TIM control register 2,              Address offset: 0x04 */# e4 a; n5 E0 _" B& J& C
  10.   uint16_t      RESERVED1;   /*!< Reserved, 0x06                                            */& {. d2 ~0 I) l% g7 e8 D: u
  11.   __IO uint16_t SMCR;        /*!< TIM slave mode control register,     Address offset: 0x08 */- d3 k; y: F+ S' e$ D& }
  12.   uint16_t      RESERVED2;   /*!< Reserved, 0x0A                                            */
    $ ]6 f7 W# k. H3 A, D
  13.   __IO uint16_t DIER;        /*!< TIM DMA/interrupt enable register,   Address offset: 0x0C */) |) U4 c$ c, g7 ^
  14.   uint16_t      RESERVED3;   /*!< Reserved, 0x0E                                            */- E. q6 D! Z1 S( n4 O
  15.   __IO uint16_t SR;          /*!< TIM status register,                 Address offset: 0x10 */
      r5 G6 Z# |5 _- o; C" p3 o- l
  16.   uint16_t      RESERVED4;   /*!< Reserved, 0x12                                            */: X) H+ j* s: F  T
  17.   __IO uint16_t EGR;         /*!< TIM event generation register,       Address offset: 0x14 */
    . W8 h1 f6 P% y+ N0 W
  18.   uint16_t      RESERVED5;   /*!< Reserved, 0x16                                            */8 p4 Y' ^$ b  \# t1 e
  19.   __IO uint16_t CCMR1;       /*!< TIM capture/compare mode register 1, Address offset: 0x18 */4 x/ f8 k  _. O
  20.   uint16_t      RESERVED6;   /*!< Reserved, 0x1A                                            */
    ) V2 A: \7 c6 N, ]" }& ?
  21.   __IO uint16_t CCMR2;       /*!< TIM capture/compare mode register 2, Address offset: 0x1C */- F1 h3 z! s5 K. Z/ z4 {
  22.   uint16_t      RESERVED7;   /*!< Reserved, 0x1E                                            */9 J( e: n# W& `; K# U6 g
  23.   __IO uint16_t CCER;        /*!< TIM capture/compare enable register, Address offset: 0x20 */+ ?+ e/ |6 K, y% P# a! e" P. F
  24.   uint16_t      RESERVED8;   /*!< Reserved, 0x22                                            */
    4 K: N& J0 t2 e: ]
  25.   __IO uint32_t CNT;         /*!< TIM counter register,                Address offset: 0x24 */+ Z. c& `) M' K# v4 X6 [
  26.   __IO uint16_t PSC;         /*!< TIM prescaler,                       Address offset: 0x28 */8 J- w$ `5 d) D, [/ O0 Y7 h7 Y
  27.   uint16_t      RESERVED9;   /*!< Reserved, 0x2A                                            */9 L9 ?! z; [$ a6 ~0 }
  28.   __IO uint32_t ARR;         /*!< TIM auto-reload register,            Address offset: 0x2C */
    ! j  O* A$ l! N. V$ q
  29.   __IO uint16_t RCR;         /*!< TIM repetition counter register,     Address offset: 0x30 */) G8 S+ r6 j, W' ]3 Y2 m
  30.   uint16_t      RESERVED10;  /*!< Reserved, 0x32                                            */0 G  D$ Z5 l% x# {
  31.   __IO uint32_t CCR1;        /*!< TIM capture/compare register 1,      Address offset: 0x34 */7 F' M; U" ]* V( ?
  32.   __IO uint32_t CCR2;        /*!< TIM capture/compare register 2,      Address offset: 0x38 */
    ! C4 ^9 n# `  E0 B. l
  33.   __IO uint32_t CCR3;        /*!< TIM capture/compare register 3,      Address offset: 0x3C */
    7 K0 s2 V" p  p7 C
  34.   __IO uint32_t CCR4;        /*!< TIM capture/compare register 4,      Address offset: 0x40 */
    9 V" _# X$ T# q2 }+ ?
  35.   __IO uint16_t BDTR;        /*!< TIM break and dead-time register,    Address offset: 0x44 */
    : Z$ E% y' f* e, ]0 y. y9 c
  36.   uint16_t      RESERVED11;  /*!< Reserved, 0x46                                            */3 A/ o; w% W- m6 D" p
  37.   __IO uint16_t DCR;         /*!< TIM DMA control register,            Address offset: 0x48 */; g1 _# F+ `, C0 b. I: n% M
  38.   uint16_t      RESERVED12;  /*!< Reserved, 0x4A                                            */
    5 P7 v& e/ W3 k1 x( ?* L- p
  39.   __IO uint16_t DMAR;        /*!< TIM DMA address for full transfer,   Address offset: 0x4C */
    1 q0 u* L& h- r  }8 E. s) X$ Q
  40.   uint16_t      RESERVED13;  /*!< Reserved, 0x4E                                            */
    5 d5 ]2 W  z! S7 j6 e
  41.   __IO uint16_t OR;          /*!< TIM option register,                 Address offset: 0x50 */  f) f; c% J: C( ?' h% G9 x. ~
  42.   uint16_t      RESERVED14;  /*!< Reserved, 0x52                                            */, Z/ X7 \  {; L1 b
  43. } TIM_TypeDef;
复制代码
/ Z8 {* b' s2 i/ t0 k& n
4 j) O0 L9 @4 M4 ?* J
5 }! P7 \& T8 ]7 z  L% Z
收藏 评论0 发布时间:2022-6-13 17:40

举报

0个回答

所属标签

相似分享

官网相关资源

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