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