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

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

[复制链接]
STMCU小助手 发布时间:2022-6-10 20:14
01. 概述
$ u7 \) H' [+ M" U在 STM32F4 标准固件库里,时钟源的选择以及时钟使能等函数都是在 RCC 相关固件库文件 stm32f4xx_rcc.h 和 stm32f4xx_rcc.c 中声明和定义的。大家打开 stm32f4xx_rcc.h 文件可以看到文件开头有很多宏定义标识符,然后是一系列时钟配置和时钟使能函数申明。这些函数大致可以归结为三类,一类是外设时钟使能函数,一类是时钟源和分频因子配置函数,还有一类是外设复位函数。当然还有几个获取时钟源配置的函数。
) p* D4 a* g$ x. z  H- m" ~  n  E0 f- }

4 v' i# E8 b( w8 K02. 相关类型, Q0 R  W8 ?& [- i1 ]
RCC_ClocksTypeDef
  1. /* Exported types ------------------------------------------------------------*/
    # d0 t1 q! D7 C; |# e+ W- V' e# D
  2. typedef struct
    % M+ g; I& c/ n  e
  3. {( S. v$ O- U( F7 j( f1 |3 K
  4.   uint32_t SYSCLK_Frequency; /*!<  SYSCLK clock frequency expressed in Hz */  G' Z6 e) q) R& i1 l9 |) K
  5.   uint32_t HCLK_Frequency;   /*!<  HCLK clock frequency expressed in Hz   */
    ' N8 E! o0 q1 S2 O! u. h
  6.   uint32_t PCLK1_Frequency;  /*!<  PCLK1 clock frequency expressed in Hz  */2 ^0 W2 `" Z% T7 q
  7.   uint32_t PCLK2_Frequency;  /*!<  PCLK2 clock frequency expressed in Hz  */
    6 o: e/ L; {, T4 ?4 g- B9 }9 m
  8. }RCC_ClocksTypeDef;
复制代码
% i0 _- `) U1 m# E# k3 o
RCC_HSE_configuration
0 H/ l8 \: D  z
  1. /** @defgroup RCC_HSE_configuration
    0 q1 r, p% P+ y: W- N
  2.   * @{
    ; W5 W& U4 _  X- u
  3.   */& ?, X0 S; i( Q3 d0 O
  4. #define RCC_HSE_OFF                      ((uint8_t)0x00)
    7 u& f- L- u( y3 r9 x
  5. #define RCC_HSE_ON                       ((uint8_t)0x01)% C. m, W3 Q* M8 s% ^  R
  6. #define RCC_HSE_Bypass                   ((uint8_t)0x05)
    8 f9 o& Z- h4 n, o8 `! D
  7. #define IS_RCC_HSE(HSE) (((HSE) == RCC_HSE_OFF) || ((HSE) == RCC_HSE_ON) || \% {* j6 o' Y3 J) y" ^
  8.                          ((HSE) == RCC_HSE_Bypass))
    5 g4 v/ i8 ^. A; j8 p
复制代码

$ [+ i, k% p4 _2 pRCC_LSE_Dual_Mode_Selection
( {! A& @2 D) U5 p$ q
  1. /** @defgroup RCC_LSE_Dual_Mode_Selection) W1 Y# I5 Q% e+ T5 h
  2.   * @{
    9 [3 Y  g" y: r( \
  3.   */
    / b3 ]- o  g; X" W# ?2 w* n
  4. #define RCC_LSE_LOWPOWER_MODE           ((uint8_t)0x00)
    2 Q) r: Q$ g. R
  5. #define RCC_LSE_HIGHDRIVE_MODE          ((uint8_t)0x01)8 b) X; D9 ~. H+ y
  6. #define IS_RCC_LSE_MODE(MODE)           (((MODE) == RCC_LSE_LOWPOWER_MODE) || \( K6 o- C! H2 b, v% X8 Y8 ], r
  7.                                          ((MODE) == RCC_LSE_HIGHDRIVE_MODE))
复制代码

1 p. N8 d$ Y& S3 Z$ |$ `RCC_PLLSAIDivR_Factor
1 ?$ L6 D3 ]6 y; G
  1. /** @defgroup RCC_PLLSAIDivR_Factor
    5 o5 Q* G' L' ]: f
  2.   * @{
    + |6 o* ?+ G% {+ m" Z; @
  3.   */
    1 w2 G9 \% \; U2 E7 u
  4. #define RCC_PLLSAIDivR_Div2                ((uint32_t)0x00000000)0 i) ~- ]/ K" T; \. e8 a5 _
  5. #define RCC_PLLSAIDivR_Div4                ((uint32_t)0x00010000)2 M3 o4 V* c2 n' N' k/ m  |+ b. D
  6. #define RCC_PLLSAIDivR_Div8                ((uint32_t)0x00020000), A7 E# O7 c  c- V  K3 F$ k
  7. #define RCC_PLLSAIDivR_Div16               ((uint32_t)0x00030000)
    : r8 M( n* N* B; u, ]
  8. #define IS_RCC_PLLSAI_DIVR_VALUE(VALUE) (((VALUE) == RCC_PLLSAIDivR_Div2) ||\4 R+ O3 _, e7 T0 e% K
  9.                                         ((VALUE) == RCC_PLLSAIDivR_Div4)  ||\, r# t7 e5 ]+ C# E  @2 p& E5 v
  10.                                         ((VALUE) == RCC_PLLSAIDivR_Div8)  ||\
    . A' K9 {1 v6 _+ [$ _, j
  11.                                         ((VALUE) == RCC_PLLSAIDivR_Div16))+ M( j( [! E, S( \: C
复制代码

+ e9 e) q2 `0 [
3 F. t) @% o3 T% |RCC_PLL_Clock_Source
- r. n2 S4 E+ @
  1. /** @defgroup RCC_PLL_Clock_Source $ p  {& n0 t; J$ n1 n+ f
  2.   * @{
    5 K" O8 ~2 U' ^0 {. p# p
  3.   */  }3 C* v4 A- `9 C$ k0 W
  4. #define RCC_PLLSource_HSI                ((uint32_t)0x00000000)' z0 k: {' W6 @2 z( o! X$ u
  5. #define RCC_PLLSource_HSE                ((uint32_t)0x00400000)' K6 a" {" y3 P0 c7 h6 Y% c: |
  6. #define IS_RCC_PLL_SOURCE(SOURCE) (((SOURCE) == RCC_PLLSource_HSI) || \
    . R3 Q3 V  O& _, b1 P4 ]
  7.                                    ((SOURCE) == RCC_PLLSource_HSE))
    % o* k9 d& F$ s8 \" f
  8. #define IS_RCC_PLLM_VALUE(VALUE) ((VALUE) <= 63)  @9 I( r  A5 s# Y/ n1 r3 v+ s
  9. #define IS_RCC_PLLN_VALUE(VALUE) ((50 <= (VALUE)) && ((VALUE) <= 432))
    & [& Q. {- f& [; M1 F
  10. #define IS_RCC_PLLP_VALUE(VALUE) (((VALUE) == 2) || ((VALUE) == 4) ||
    ) J( ^% V. |0 B9 L
  11. ((VALUE) == 6) || ((VALUE) == 8))3 r/ e" m8 W* n9 c3 l9 G9 F4 a
  12. #define IS_RCC_PLLQ_VALUE(VALUE) ((4 <= (VALUE)) && ((VALUE) <= 15))
    * m% p7 D3 `5 ]0 p! n0 f
  13. #if defined(STM32F410xx) || defined(STM32F412xG) || defined(STM32F413_423xx)
    8 Y$ a( P1 q4 C7 X' w3 _. d) M
  14.     || defined(STM32F446xx) || defined(STM32F469_479xx)
    ) \$ T' j" n0 F5 c
  15. #define IS_RCC_PLLR_VALUE(VALUE) ((2 <= (VALUE)) && ((VALUE) <= 7))3 H4 O4 E. Z: V$ d6 v: X
  16. #endif /* STM32F410xx || STM32F412xG || STM32F413_423xx || STM32F446xx & h/ D$ h9 e2 q8 A4 Z
  17. || STM32F469_479xx */
    8 u  z  @3 S- ]# O" s: @$ g

  18.   P1 D# b2 v: V
  19. #define IS_RCC_PLLI2SN_VALUE(VALUE) ((50 <= (VALUE)) && ((VALUE) <= 432))* D1 p" }4 X: i6 }# L
  20. #define IS_RCC_PLLI2SR_VALUE(VALUE) ((2 <= (VALUE))  && ((VALUE) <= 7))" M6 y5 ]; Y* `: o1 \
  21. #define IS_RCC_PLLI2SM_VALUE(VALUE) ((2 <= (VALUE))  && ((VALUE) <= 63))
      g0 H' P1 {2 _3 B
  22. #define IS_RCC_PLLI2SQ_VALUE(VALUE) ((2 <= (VALUE))  && ((VALUE) <= 15))2 d# `9 H9 D& [. Q4 d
  23. #if defined(STM32F446xx)
    . O+ P& T4 ^1 ?7 G3 ]
  24. #define IS_RCC_PLLI2SP_VALUE(VALUE) (((VALUE) == 2) || ((VALUE) == 4)
    ' M& V" b9 b2 c, W8 I
  25.     || ((VALUE) == 6) || ((VALUE) == 8))) \  u9 z9 `7 k9 X# l. }. N1 A4 O
  26. #define IS_RCC_PLLSAIM_VALUE(VALUE) ((VALUE) <= 63)
    0 G( R  j, G; P7 F7 |
  27. #elif  defined(STM32F412xG) || defined(STM32F413_423xx)
    ! Z/ x" |# f( ^, w5 N  l
  28. #define IS_RCC_PLLI2SP_VALUE(VALUE) (((VALUE) == 2) || ((VALUE) == 4) 1 D7 H+ O9 p" f4 Q
  29.     || ((VALUE) == 6) || ((VALUE) == 8))
    9 }" X1 h+ ]% h( y
  30. #else& i4 Y6 A( V8 E, u2 Q5 U  ?. \! ?
  31. #endif /* STM32F446xx */
    / `, O! H' Y% J( \9 |1 D0 {. h
  32. #define IS_RCC_PLLSAIN_VALUE(VALUE) ((50 <= (VALUE)) && ((VALUE) <= 432))
    3 t6 z5 E1 f. `  U/ ?, l* ?
  33. #if defined(STM32F446xx) || defined(STM32F469_479xx)3 J5 m+ l7 U% S
  34. #define IS_RCC_PLLSAIP_VALUE(VALUE) (((VALUE) == 2) || ((VALUE) == 4) 7 T. K, k% ~) M- d% o
  35.     || ((VALUE) == 6) || ((VALUE) == 8))8 m7 w% o# _: G+ F: d* A9 L7 J" L
  36. #endif /* STM32F446xx || STM32F469_479xx */( o6 x  ~  a; r" A1 u/ K) |
  37. #define IS_RCC_PLLSAIQ_VALUE(VALUE) ((2 <= (VALUE)) && ((VALUE) <= 15))
    8 s: Y7 u# ~' q
  38. #define IS_RCC_PLLSAIR_VALUE(VALUE) ((2 <= (VALUE)) && ((VALUE) <= 7))  
    ' v4 X2 \4 d( d3 x8 B
  39. 1 ]% S0 ]' [9 I% u" I1 X9 d7 N
  40. #define IS_RCC_PLLSAI_DIVQ_VALUE(VALUE) ((1 <= (VALUE)) && ((VALUE) <= 32))
    ) L' |' c" M9 d2 K% W# D6 S% y' ~; f
  41. #define IS_RCC_PLLI2S_DIVQ_VALUE(VALUE) ((1 <= (VALUE)) && ((VALUE) <= 32))
    . x1 d4 O# t- C0 ~! c# ~
  42. 6 n) v. f: Q% w7 Q8 E: `
  43. #if defined(STM32F413_423xx)
    6 ^8 v" E) J" e, o
  44. #define IS_RCC_PLLI2S_DIVR_VALUE(VALUE) ((1 <= (VALUE)) && ((VALUE) <= 32))
    5 i& y7 @. A: L
  45. #define IS_RCC_PLL_DIVR_VALUE(VALUE)    ((1 <= (VALUE)) && ((VALUE) <= 32))% r3 l7 `. y3 P
  46. #endif /* STM32F413_423xx */9 `# j) `& ^/ x! P! W
复制代码

! V* q; s& L( @RCC_System_Clock_Source
5 l; P. y  C0 t$ }( h
  1. /** @defgroup RCC_System_Clock_Source % l( Z4 S) O: D; L7 h' l/ [
  2.   * @{5 L. b$ @0 Q+ t4 e( t  a4 o
  3.   */" X' n% }% H9 F' H4 N& f

  4. # f# X- C" W$ d0 \
  5. #if  defined(STM32F412xG) || defined(STM32F413_423xx) || defined(STM32F446xx)( K% T( Z2 ^7 L9 O  H8 D  H  L9 O
  6. #define RCC_SYSCLKSource_HSI             ((uint32_t)0x00000000)" A, C9 |) y$ b
  7. #define RCC_SYSCLKSource_HSE             ((uint32_t)0x00000001)2 E) D4 T( f6 x  e
  8. #define RCC_SYSCLKSource_PLLPCLK         ((uint32_t)0x00000002)
    8 {: j6 t$ [9 M% @( N7 c0 n
  9. #define RCC_SYSCLKSource_PLLRCLK         ((uint32_t)0x00000003)9 P3 u) {  [; x6 K
  10. #define IS_RCC_SYSCLK_SOURCE(SOURCE) (((SOURCE) == RCC_SYSCLKSource_HSI) || \8 s0 u- T" [1 q' p9 m. ]/ v
  11.                                       ((SOURCE) == RCC_SYSCLKSource_HSE) || \8 C5 o+ u' {5 c7 K' g! \
  12.                                       ((SOURCE) == RCC_SYSCLKSource_PLLPCLK) || \9 l# X. n8 I5 R- o2 N) r
  13.                                       ((SOURCE) == RCC_SYSCLKSource_PLLRCLK))/ l9 w6 s2 i) Y7 i
  14. /* Add legacy definition */
    0 V; K6 h9 R; v; w$ S( i% K
  15. #define  RCC_SYSCLKSource_PLLCLK    RCC_SYSCLKSource_PLLPCLK  
    , |9 b; `1 P0 P
  16. #endif /* STM32F446xx */* r2 G6 ?  [* l; O
  17.   w4 ^, b$ b# _$ X7 ?
  18. #if defined(STM32F40_41xxx) || defined(STM32F427_437xx) || defined(STM32F429_439xx) , v0 m. G1 q3 L2 x
  19. || defined(STM32F401xx) || defined(STM32F410xx) || defined(STM32F411xE)   \1 e; }) t' j' r
  20.     || defined(STM32F469_479xx)
    1 C" H& j8 f5 h* a
  21. #define RCC_SYSCLKSource_HSI             ((uint32_t)0x00000000)
    - R1 g. n' P3 Y; K$ _0 ?: _
  22. #define RCC_SYSCLKSource_HSE             ((uint32_t)0x00000001)
    # x7 T5 g1 |9 D% N
  23. #define RCC_SYSCLKSource_PLLCLK          ((uint32_t)0x00000002)1 O3 S% f3 ?4 D  {* A
  24. #define IS_RCC_SYSCLK_SOURCE(SOURCE) (((SOURCE) == RCC_SYSCLKSource_HSI) || \
    9 p; g% K7 h0 j
  25.                                       ((SOURCE) == RCC_SYSCLKSource_HSE) || \
    5 V' m# p# R6 S9 k  f2 K1 L* [
  26.                                       ((SOURCE) == RCC_SYSCLKSource_PLLCLK))
    ' H. r8 w  b  O0 Y* T5 j  h' G
  27. #endif /* STM32F40_41xxx || STM32F427_437xx || STM32F429_439xx || STM32F401xx
    + Z& w( b5 p) T$ j
  28. || STM32F410xx || STM32F411xE || STM32F469_479xx */
    - L) Q) ~6 N5 b# ?% ], N
复制代码

. @" w" D% n$ e$ M0 _1 w) zRCC_AHB_Clock_Source
0 J! O8 [4 j+ C5 R* q2 m7 R
  1. /** @defgroup RCC_AHB_Clock_Source" f" A1 G. H: ^& Y4 E9 z7 O
  2.   * @{  n, }  f& D/ b& n: k
  3.   */
    ( b$ m9 b& ^9 F* `$ n
  4. #define RCC_SYSCLK_Div1                  ((uint32_t)0x00000000)
    * c# q9 q2 D; k$ Z
  5. #define RCC_SYSCLK_Div2                  ((uint32_t)0x00000080), O% v  N7 D) s6 i2 x7 b. T
  6. #define RCC_SYSCLK_Div4                  ((uint32_t)0x00000090)
    # N$ F2 d- |( z9 S2 |7 q1 V
  7. #define RCC_SYSCLK_Div8                  ((uint32_t)0x000000A0)
    7 t' A/ G3 m2 W$ ?3 j7 X8 w/ a
  8. #define RCC_SYSCLK_Div16                 ((uint32_t)0x000000B0)
    $ Q  l* A/ Z' }9 i% ?
  9. #define RCC_SYSCLK_Div64                 ((uint32_t)0x000000C0)8 J3 Q' H5 ~( v5 h
  10. #define RCC_SYSCLK_Div128                ((uint32_t)0x000000D0)
    5 G' e6 U* X  H8 \/ f
  11. #define RCC_SYSCLK_Div256                ((uint32_t)0x000000E0)
    4 {, X- Q8 O3 f2 x- c7 x9 b) ]/ n
  12. #define RCC_SYSCLK_Div512                ((uint32_t)0x000000F0)5 L  |4 a$ [, W) L) g" K9 {' D2 m
  13. #define IS_RCC_HCLK(HCLK) (((HCLK) == RCC_SYSCLK_Div1) || ((HCLK) == RCC_SYSCLK_Div2) || \2 |1 \- _0 H: @  I/ o+ `+ w
  14.                            ((HCLK) == RCC_SYSCLK_Div4) || ((HCLK) == RCC_SYSCLK_Div8) || \+ C. a# J0 `% D) k" ]
  15.                            ((HCLK) == RCC_SYSCLK_Div16) || ((HCLK) == RCC_SYSCLK_Div64) || \
    + @7 |( _- t; ~" i+ W
  16.                            ((HCLK) == RCC_SYSCLK_Div128) || ((HCLK) == RCC_SYSCLK_Div256) || \5 c3 a  i/ x: Y. Q
  17.                            ((HCLK) == RCC_SYSCLK_Div512))
复制代码

' _9 A9 V! j8 tRCC_APB1_APB2_Clock_Source) n) |" P% O7 m/ v! d7 Q
  1. /** @defgroup RCC_APB1_APB2_Clock_Source) S! \* a0 R3 u6 M; P  Q4 f1 e* ~& K
  2.   * @{
    , e% ]+ }4 Q3 W
  3.   */
    " A" J8 R7 |9 Q) |
  4. #define RCC_HCLK_Div1                    ((uint32_t)0x00000000)
    / V$ B( f3 t4 }, ^: s4 f/ a
  5. #define RCC_HCLK_Div2                    ((uint32_t)0x00001000)! s7 s: ?9 B8 `
  6. #define RCC_HCLK_Div4                    ((uint32_t)0x00001400)
    " D! Y7 I# Y3 y& m$ Q+ [) C+ I" N
  7. #define RCC_HCLK_Div8                    ((uint32_t)0x00001800)/ e2 M9 ~; K" o# p7 r6 X; b3 x
  8. #define RCC_HCLK_Div16                   ((uint32_t)0x00001C00)- u' |0 }9 |& N, A4 r: Y7 i) M/ U
  9. #define IS_RCC_PCLK(PCLK) (((PCLK) == RCC_HCLK_Div1) || ((PCLK) == RCC_HCLK_Div2) || \6 m4 k7 C2 v6 [" `
  10.                            ((PCLK) == RCC_HCLK_Div4) || ((PCLK) == RCC_HCLK_Div8) || \$ J8 x1 Q8 d6 l5 t) f
  11.                            ((PCLK) == RCC_HCLK_Div16))3 r) h5 u+ m6 U
复制代码
1 Z' _; ]$ Q4 a4 ?: y
RCC_Interrupt_Source

2 T  q# c4 `2 ~" g8 `6 A! V% k* ]: k% I
  1. /** @defgroup RCC_Interrupt_Source
    3 I0 t; j6 }, Q2 Z
  2.   * @{* D4 W# c6 H9 U8 N9 n( t
  3.   */
    . G; _" N8 f: r. X% I8 q, h
  4. #define RCC_IT_LSIRDY                    ((uint8_t)0x01)
    7 G7 i" w7 S+ E7 c" o# Q5 D
  5. #define RCC_IT_LSERDY                    ((uint8_t)0x02)/ b: M6 ~& |, B6 B7 W/ F1 ~* P
  6. #define RCC_IT_HSIRDY                    ((uint8_t)0x04)
    9 A9 W4 [$ m8 O- j* @  Q  n
  7. #define RCC_IT_HSERDY                    ((uint8_t)0x08)
    3 A0 s, @. G1 C* B8 O( P  e
  8. #define RCC_IT_PLLRDY                    ((uint8_t)0x10)5 y5 @( l2 a! s
  9. #define RCC_IT_PLLI2SRDY                 ((uint8_t)0x20)
    + @+ _& A* E) n6 W; O6 \6 S
  10. #define RCC_IT_PLLSAIRDY                 ((uint8_t)0x40); d  l- [( V' q. w+ A+ P5 G% W4 E5 d
  11. #define RCC_IT_CSS                       ((uint8_t)0x80)
    8 `6 D6 ]" e: i) z/ p* D) L
  12. ( a8 c, F. X5 U+ D, O# H
  13. #define IS_RCC_IT(IT) ((((IT) & (uint8_t)0x80) == 0x00) && ((IT) != 0x00))8 v' m: N/ y0 u3 g+ o
  14. #define IS_RCC_GET_IT(IT) (((IT) == RCC_IT_LSIRDY) || ((IT) == RCC_IT_LSERDY) || \2 `( G; |+ Z7 q; x0 w: r
  15.                            ((IT) == RCC_IT_HSIRDY) || ((IT) == RCC_IT_HSERDY) || \# k4 [' L, F" ]* r2 V: w  v/ A5 f
  16.                            ((IT) == RCC_IT_PLLRDY) || ((IT) == RCC_IT_CSS) || \" E6 X+ n) j$ B% S. O" u* H$ q
  17.                            ((IT) == RCC_IT_PLLSAIRDY) || ((IT) == RCC_IT_PLLI2SRDY))
    9 D- F) ^3 C0 p% a
  18. #define IS_RCC_CLEAR_IT(IT)((IT) != 0x00)6 F  @6 r* b+ W6 M: C
复制代码

+ L9 [& f; ^$ ^* {2 g5 tRCC_LSE_Configuration
6 L8 R1 v) [$ T  Z& G% s9 z! \
  1. /** @defgroup RCC_LSE_Configuration
    % W0 z" y& A; o3 ^7 X- y
  2.   * @{# N# }& f/ R0 T& j9 E6 M
  3.   */
    . \& K! _4 H$ I. f" K* Y; T
  4. #define RCC_LSE_OFF                      ((uint8_t)0x00)( x2 O) d' V& O+ G0 e) z6 I
  5. #define RCC_LSE_ON                       ((uint8_t)0x01)) t4 ^6 |1 d+ \- }! {/ Y* A4 e% w
  6. #define RCC_LSE_Bypass                   ((uint8_t)0x04)
    2 ], R7 p, o5 i: ^+ N5 W  a
  7. #define IS_RCC_LSE(LSE) (((LSE) == RCC_LSE_OFF) || ((LSE) == RCC_LSE_ON) || \
    ; x8 P) ], j% o! s& m
  8.                          ((LSE) == RCC_LSE_Bypass))
复制代码
+ B4 S9 d9 C; Y3 ?! F- T
RCC_RTC_Clock_Source
8 O0 g. w$ \3 ~. h+ |
  1. /** @defgroup RCC_RTC_Clock_Source$ ~& y. s3 y2 A9 ^, @. p" k
  2.   * @{" `3 _- |+ {; ?# F0 o, C
  3.   */+ n+ `1 S5 p2 J
  4. #define RCC_RTCCLKSource_LSE             ((uint32_t)0x00000100)
    5 ~8 l2 X0 R" |6 u# f# r
  5. #define RCC_RTCCLKSource_LSI             ((uint32_t)0x00000200); ]7 d( m* ?' p3 t1 Y: W" Y
  6. #define RCC_RTCCLKSource_HSE_Div2        ((uint32_t)0x00020300)0 K4 [8 e( p* g1 _/ O& }) w5 E$ G
  7. #define RCC_RTCCLKSource_HSE_Div3        ((uint32_t)0x00030300)' L7 }# D: y7 q# G" [
  8. #define RCC_RTCCLKSource_HSE_Div4        ((uint32_t)0x00040300), t0 A0 x+ {7 ~3 Q" D9 P
  9. #define RCC_RTCCLKSource_HSE_Div5        ((uint32_t)0x00050300)
    % P. b; r3 W% Z5 T3 D/ {
  10. #define RCC_RTCCLKSource_HSE_Div6        ((uint32_t)0x00060300)
    + a, g" C9 z% g! v
  11. #define RCC_RTCCLKSource_HSE_Div7        ((uint32_t)0x00070300)
    ' b) _8 z$ Z, u7 O5 @  J, u) _2 C
  12. #define RCC_RTCCLKSource_HSE_Div8        ((uint32_t)0x00080300)% X* [4 f: ~( Y- E; [6 P- \
  13. #define RCC_RTCCLKSource_HSE_Div9        ((uint32_t)0x00090300)
    ' }5 R! E# x) G$ ?$ Y" a! L
  14. #define RCC_RTCCLKSource_HSE_Div10       ((uint32_t)0x000A0300)4 L& p7 |% B1 F) }$ @
  15. #define RCC_RTCCLKSource_HSE_Div11       ((uint32_t)0x000B0300)
    + }5 J5 `# Y9 K5 [* E$ h. y3 L' j
  16. #define RCC_RTCCLKSource_HSE_Div12       ((uint32_t)0x000C0300)9 v, e$ H1 z0 H; U: V9 U
  17. #define RCC_RTCCLKSource_HSE_Div13       ((uint32_t)0x000D0300)1 l0 N& O. P0 a. S9 M
  18. #define RCC_RTCCLKSource_HSE_Div14       ((uint32_t)0x000E0300)
    / f% F& _7 F; h7 a, o# q+ X
  19. #define RCC_RTCCLKSource_HSE_Div15       ((uint32_t)0x000F0300)1 V+ l' w& [# c
  20. #define RCC_RTCCLKSource_HSE_Div16       ((uint32_t)0x00100300)
    ( y8 B) w8 }6 x
  21. #define RCC_RTCCLKSource_HSE_Div17       ((uint32_t)0x00110300)
    4 E/ [, I/ t) D4 k" _! E
  22. #define RCC_RTCCLKSource_HSE_Div18       ((uint32_t)0x00120300)
    + D" v8 C- w2 |- H5 L2 f+ K* D
  23. #define RCC_RTCCLKSource_HSE_Div19       ((uint32_t)0x00130300)) q; H. Z8 P8 d
  24. #define RCC_RTCCLKSource_HSE_Div20       ((uint32_t)0x00140300)7 J+ H. Z4 j0 g- r
  25. #define RCC_RTCCLKSource_HSE_Div21       ((uint32_t)0x00150300)
    & j7 ^: t# ]/ F; ?5 c8 A
  26. #define RCC_RTCCLKSource_HSE_Div22       ((uint32_t)0x00160300)9 \1 @4 x) S  B7 [
  27. #define RCC_RTCCLKSource_HSE_Div23       ((uint32_t)0x00170300)- D( r1 C/ O8 k  }2 D# ?9 t
  28. #define RCC_RTCCLKSource_HSE_Div24       ((uint32_t)0x00180300)1 o, e4 [) P& u0 A! J/ ]
  29. #define RCC_RTCCLKSource_HSE_Div25       ((uint32_t)0x00190300)
    , Y5 A! p1 }7 c+ S/ p
  30. #define RCC_RTCCLKSource_HSE_Div26       ((uint32_t)0x001A0300)6 E7 b3 h+ P, T. p- g
  31. #define RCC_RTCCLKSource_HSE_Div27       ((uint32_t)0x001B0300)
    $ O9 x8 r/ Z  L  s+ ~& Z7 y7 Y) K# r
  32. #define RCC_RTCCLKSource_HSE_Div28       ((uint32_t)0x001C0300)
    ) a6 E- t8 i5 l8 V" g# f
  33. #define RCC_RTCCLKSource_HSE_Div29       ((uint32_t)0x001D0300), @% L, L' C7 J/ a$ G+ @2 a
  34. #define RCC_RTCCLKSource_HSE_Div30       ((uint32_t)0x001E0300)% ?4 V3 W; N8 A. a& G/ b4 Q
  35. #define RCC_RTCCLKSource_HSE_Div31       ((uint32_t)0x001F0300)
    # y! f' ?* e. @; P! g
  36. #define IS_RCC_RTCCLK_SOURCE(SOURCE) (((SOURCE) == RCC_RTCCLKSource_LSE) || \
    $ O+ p. G! N; n1 n
  37.                                       ((SOURCE) == RCC_RTCCLKSource_LSI) || \( T  j* @- h) k& k- G0 N' }
  38.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div2) || \
    5 G0 `6 k0 }5 t
  39.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div3) || \+ D; n! U  V' H# W$ _# Z
  40.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div4) || \8 P: q8 s2 \6 ^/ I) c0 p# j2 p$ J
  41.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div5) || \7 b; z" v1 H, Z, ?: f5 i9 ^  Y9 e2 P
  42.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div6) || \1 E! S' ^/ i1 w7 D
  43.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div7) || \
    ; F, w9 ~# P, B. H
  44.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div8) || \/ v/ s( y' y. f/ {) m# N2 x8 q8 d
  45.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div9) || \* U# ?  A6 M1 R4 k2 s
  46.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div10) || \+ w; V2 m5 I7 u: s: t8 I) I
  47.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div11) || \
      V  J$ t9 Z) G/ x) O$ E
  48.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div12) || \
    6 O. A, ]0 h5 k# C
  49.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div13) || \8 e: _3 S) M1 `% n. B" \+ Q$ {) f
  50.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div14) || \0 O7 D& f% z7 p/ o
  51.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div15) || \
    ; @4 |, y5 N. i# R0 G) D$ k( X
  52.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div16) || \
    ( J- h# L. v4 n# Y; d, T
  53.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div17) || \
    ' T5 h* {4 v$ x$ \2 l' M6 [
  54.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div18) || \9 A, g2 J4 t- [1 D/ T
  55.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div19) || \
    ) r0 i, L8 S" B# W7 T
  56.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div20) || \
    - p1 {7 y. }9 s. O9 L: r$ Z0 }
  57.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div21) || \
    6 T1 X/ T  F+ O+ A- Y5 l
  58.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div22) || \! z* M7 k7 E8 \6 f( }
  59.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div23) || \
    # l5 e8 Z; a9 z% b- Z1 p4 j4 ?
  60.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div24) || \
    1 G) p% V$ e3 {9 v
  61.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div25) || \# H- D% `& s! H$ O3 @
  62.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div26) || \
    $ R* A9 Q, B& X8 [
  63.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div27) || \
    5 C& |" h( G( H+ c% s& h" J  h
  64.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div28) || \
    " a1 O( e. [; L% q8 d5 j
  65.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div29) || \
    / a* s/ f, N1 e, K
  66.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div30) || \
    0 T2 e/ i' u! g
  67.                                       ((SOURCE) == RCC_RTCCLKSource_HSE_Div31))& ?; q% U9 r; i  ?
复制代码

9 m  k0 T9 Q0 h) _* p2 U) m1 ]RCC_SAI_BlockA_Clock_Source5 J* o( [: x2 }) `! _

  1. ( b- |) x. [0 T: g
  2. /** @defgroup RCC_SAI_BlockA_Clock_Source# ^* @/ X, l6 H: o8 `
  3.   * @{7 H8 W4 Y( p* r& i
  4.   */: }, j; n6 i# Q$ o  d
  5. #define RCC_SAIACLKSource_PLLSAI             ((uint32_t)0x00000000)
    , z( _$ i0 G: C. X( c; W& e
  6. #define RCC_SAIACLKSource_PLLI2S             ((uint32_t)0x00100000)/ U6 ]" i3 S+ W$ D. ]# ~
  7. #define RCC_SAIACLKSource_Ext                ((uint32_t)0x00200000)/ Z" b: ^* ]$ U' t3 d' E

  8. % j0 Z" G( s8 w9 e) T6 E8 h
  9. #define IS_RCC_SAIACLK_SOURCE(SOURCE) (((SOURCE) == RCC_SAIACLKSource_PLLI2S) ||\
    0 D  R; s' d; K" s
  10.                                        ((SOURCE) == RCC_SAIACLKSource_PLLSAI) ||\
    % \$ A& L; d8 b) g9 @, J- B
  11.                                        ((SOURCE) == RCC_SAIACLKSource_Ext))" p# W% M& ?9 v
复制代码

7 f: d) C4 X: _. I+ m$ l9 W; n' r- J7 G9 S/ |& v" N
RCC_SAI_BlockB_Clock_Source
  1. /** @defgroup RCC_SAI_BlockB_Clock_Source6 q# t) r- q; k5 `# z
  2.   * @{" {4 Y! Q- c' [- ?
  3.   *// d5 O# ^9 t2 t
  4. #define RCC_SAIBCLKSource_PLLSAI             ((uint32_t)0x00000000)
    ' O0 _' L" r0 y4 u4 D. u
  5. #define RCC_SAIBCLKSource_PLLI2S             ((uint32_t)0x00400000)
    : E; M! j0 d# Z7 [- k+ \& Y) v! u
  6. #define RCC_SAIBCLKSource_Ext                ((uint32_t)0x00800000)$ D  U, Q0 {1 E. W9 p! d

  7. 8 J. q! D: C/ [
  8. #define IS_RCC_SAIBCLK_SOURCE(SOURCE) (((SOURCE) == RCC_SAIBCLKSource_PLLI2S) ||\
    + T  q7 S4 e4 K9 V6 r4 g' T2 J0 D
  9.                                        ((SOURCE) == RCC_SAIBCLKSource_PLLSAI) ||\
    - l9 N1 Y$ H* r
  10.                                        ((SOURCE) == RCC_SAIBCLKSource_Ext))
复制代码
! k" j* z& Z- \3 l1 Q# K
RCC_TIM_PRescaler_Selection) S/ O: d+ n; D5 ], a( \7 H* T
  1. /** @defgroup RCC_TIM_PRescaler_Selection
    * x; e- e/ S7 D% o- l% y
  2.   * @{( p8 h/ Y6 j3 T( V6 d2 e: f# @) z
  3.   */! d/ P  Y7 K* z9 Q
  4. #define RCC_TIMPrescDesactivated             ((uint8_t)0x00)
    ( k- O, N( j' H* M
  5. #define RCC_TIMPrescActivated                ((uint8_t)0x01)" R$ m9 E* u! ]4 j& F2 G& q
  6. ' Y  t" M" [; E) i2 j: @
  7. #define IS_RCC_TIMCLK_PRESCALER(VALUE) (((VALUE) == RCC_TIMPrescDesactivated)
    ! g4 I7 X2 R' W3 _. v
  8. || ((VALUE) == RCC_TIMPrescActivated)); ?) I# d0 f# ]  g$ j' e9 \
复制代码

+ I0 r+ g6 r! f% ]RCC_AHB1_Peripherals
7 X) Y( _1 ^7 i9 |) e  q1 R* W' k
  1. /** @defgroup RCC_AHB1_Peripherals
    % o/ ]8 q5 Z2 k% |1 r5 c) f* h
  2.   * @{
    ; \- n" L" j! r! E# D; q- T, K
  3.   */ 6 X$ d2 T/ V) r5 J7 d) s: z
  4. #define RCC_AHB1Periph_GPIOA             ((uint32_t)0x00000001)  y9 }0 b% A5 d" F1 ^5 z
  5. #define RCC_AHB1Periph_GPIOB             ((uint32_t)0x00000002)% f% g: X2 h$ M, _0 {  b
  6. #define RCC_AHB1Periph_GPIOC             ((uint32_t)0x00000004)7 E: p! a4 Y) ?) H
  7. #define RCC_AHB1Periph_GPIOD             ((uint32_t)0x00000008)
    4 c( E8 d+ f( j9 ^1 [
  8. #define RCC_AHB1Periph_GPIOE             ((uint32_t)0x00000010)
    4 A: n) s7 @! f& K& m9 A
  9. #define RCC_AHB1Periph_GPIOF             ((uint32_t)0x00000020)" n" f0 \) \% l  H) [
  10. #define RCC_AHB1Periph_GPIOG             ((uint32_t)0x00000040)) _  Q6 I9 {% `  r3 @% X7 d3 W
  11. #define RCC_AHB1Periph_GPIOH             ((uint32_t)0x00000080)
    , \1 W! j5 R' i) r7 s  B
  12. #define RCC_AHB1Periph_GPIOI             ((uint32_t)0x00000100)
    & l( s" w4 U3 z7 p/ Q4 u% a; \, x) t
  13. #define RCC_AHB1Periph_GPIOJ             ((uint32_t)0x00000200)
    . e' u, F( \" |
  14. #define RCC_AHB1Periph_GPIOK             ((uint32_t)0x00000400)' f  d8 h1 v; A& H
  15. #define RCC_AHB1Periph_CRC               ((uint32_t)0x00001000)
    4 b  V) `9 I/ B9 _* k0 P$ u9 `
  16. #define RCC_AHB1Periph_FLITF             ((uint32_t)0x00008000)
    & Q$ N$ i  T2 B" z6 ]! n
  17. #define RCC_AHB1Periph_SRAM1             ((uint32_t)0x00010000)
    . r* g+ u5 y$ A! l0 y2 n) U; M' e0 z/ U
  18. #define RCC_AHB1Periph_SRAM2             ((uint32_t)0x00020000). }. a3 e  s: O3 K
  19. #define RCC_AHB1Periph_BKPSRAM           ((uint32_t)0x00040000)- I; G: z$ d( u% m# y; k- F" e/ M" \
  20. #define RCC_AHB1Periph_SRAM3             ((uint32_t)0x00080000)- h7 O! |# \' B$ `. {. v: v
  21. #define RCC_AHB1Periph_CCMDATARAMEN      ((uint32_t)0x00100000)
    1 x) Z9 C+ b( |
  22. #define RCC_AHB1Periph_DMA1              ((uint32_t)0x00200000)# F( O3 j7 E7 ~, U! B( O" W
  23. #define RCC_AHB1Periph_DMA2              ((uint32_t)0x00400000)
    9 K' x" O3 ?$ O* D
  24. #define RCC_AHB1Periph_DMA2D             ((uint32_t)0x00800000)
    ; o) e3 C+ d4 n$ e8 D
  25. #define RCC_AHB1Periph_ETH_MAC           ((uint32_t)0x02000000): V' H1 t; x+ k0 Y2 q( {& ]
  26. #define RCC_AHB1Periph_ETH_MAC_Tx        ((uint32_t)0x04000000)( l) l" p! E1 w$ W! o. \9 M1 ]
  27. #define RCC_AHB1Periph_ETH_MAC_Rx        ((uint32_t)0x08000000)5 c2 Z. v8 T/ K3 B  [: A: o* M
  28. #define RCC_AHB1Periph_ETH_MAC_PTP       ((uint32_t)0x10000000)% G* H- j! \3 M2 ~
  29. #define RCC_AHB1Periph_OTG_HS            ((uint32_t)0x20000000)( g/ d6 a0 K; C9 y; W% @0 C5 c$ g
  30. #define RCC_AHB1Periph_OTG_HS_ULPI       ((uint32_t)0x40000000)$ c$ ^* E4 N! H# d, T+ b8 @

  31. 8 v9 l6 [7 w$ K9 g0 O
  32. #define IS_RCC_AHB1_CLOCK_PERIPH(PERIPH)
    9 B, J+ o  [/ V) R* e
  33.         ((((PERIPH) & 0x010BE800) == 0x00) && ((PERIPH) != 0x00))% O7 G( c% S/ i
  34. #define IS_RCC_AHB1_RESET_PERIPH(PERIPH) " P, S+ R6 J9 l: i7 r. q8 N
  35.         ((((PERIPH) & 0x51FE800) == 0x00) && ((PERIPH) != 0x00))
    3 h3 q1 v6 }! s
  36. #define IS_RCC_AHB1_LPMODE_PERIPH(PERIPH) 8 t0 J+ |6 V5 D# r7 f3 c( s- z) {
  37.         ((((PERIPH) & 0x01106800) == 0x00) && ((PERIPH) != 0x00))  R  I; v$ T& Y( _/ ]. _
复制代码
% y' N- M- C5 G. `/ h
RCC_AHB2_Peripherals
  z$ b% w" g7 t7 J
  1. /** @defgroup RCC_AHB2_Peripherals
    2 q* |7 s- @. J* y" b8 J
  2.   * @{: u* [5 V9 z, A. B( T; @+ r" ]
  3.   */  
    + a, H8 |1 Y  Y: L1 @, `
  4. #define RCC_AHB2Periph_DCMI              ((uint32_t)0x00000001). O" m# s" A! F4 [. x
  5. #define RCC_AHB2Periph_CRYP              ((uint32_t)0x00000010)5 ]5 L; E# R1 [+ ]
  6. #define RCC_AHB2Periph_HASH              ((uint32_t)0x00000020)
    8 q( P  q6 ^* B3 x2 W& r  W, N
  7. #define RCC_AHB2Periph_OTG_FS            ((uint32_t)0x00000080)
    6 ~( V! w: c( }4 V6 Y4 p
  8. #define IS_RCC_AHB2_PERIPH(PERIPH)
    8 m% H0 ?" q, h# E9 M
  9.         ((((PERIPH) & 0xFFFFFF0E) == 0x00) && ((PERIPH) != 0x00))
复制代码

' m# c9 V; _8 j/ FRCC_APB1_Peripherals

( _9 v" ^. S) E, E
  1. /** @defgroup RCC_APB1_Peripherals
    # N  f% b- P6 o& e: X* g3 |
  2.   * @{" ?$ u' ^" h7 q/ y( q/ x. e% m
  3.   */
    1 d6 u9 S* `$ A) l/ P% Q
  4. #define RCC_APB1Periph_TIM2              ((uint32_t)0x00000001)6 l- c! `$ I/ o8 g# l
  5. #define RCC_APB1Periph_TIM3              ((uint32_t)0x00000002)
    / ?2 u; |7 W: H# I' r7 L
  6. #define RCC_APB1Periph_TIM4              ((uint32_t)0x00000004)" {' w, J0 G, q' l$ u. O
  7. #define RCC_APB1Periph_TIM5              ((uint32_t)0x00000008)$ t9 x! X5 v: o& A; S
  8. #define RCC_APB1Periph_TIM6              ((uint32_t)0x00000010)* m6 q9 Q% R) A( z9 q
  9. #define RCC_APB1Periph_TIM7              ((uint32_t)0x00000020)4 [* F$ Z. S" i* `
  10. #define RCC_APB1Periph_TIM12             ((uint32_t)0x00000040)+ S6 H, p) `4 b- p* {
  11. #define RCC_APB1Periph_TIM13             ((uint32_t)0x00000080)
    6 D0 ^7 k8 m; C& p
  12. #define RCC_APB1Periph_TIM14             ((uint32_t)0x00000100)
    : z' \# G" `  ^9 {: d3 ~7 ?
  13. #if defined(STM32F410xx) || defined(STM32F413_423xx)
    $ M( H5 E5 G" r7 j& @
  14. #define RCC_APB1Periph_LPTIM1            ((uint32_t)0x00000200)$ j1 \, {- l' f# w/ K+ f  l6 m
  15. #endif /* STM32F410xx || STM32F413_423xx */1 c0 v5 e: ~6 N3 p' `7 z$ c7 W
  16. #define RCC_APB1Periph_WWDG              ((uint32_t)0x00000800)
    1 V' t4 r  M) F9 X+ [1 A- ~
  17. #define RCC_APB1Periph_SPI2              ((uint32_t)0x00004000)
    6 R0 C) r9 D: W/ l' ^, S$ o7 [
  18. #define RCC_APB1Periph_SPI3              ((uint32_t)0x00008000)' x7 A4 u" T. E0 U! a
  19. #if defined(STM32F446xx)
    0 N) h& h( C  B: ]4 M
  20. #define RCC_APB1Periph_SPDIFRX           ((uint32_t)0x00010000)
    & Y% P# F5 S4 N
  21. #endif /* STM32F446xx */
    $ v; q. G4 A+ b1 m+ e
  22. #define RCC_APB1Periph_USART2            ((uint32_t)0x00020000)
    , Z6 Z: l' z2 Z: }+ |
  23. #define RCC_APB1Periph_USART3            ((uint32_t)0x00040000)- H$ e3 n7 u' ~8 ^0 i. [
  24. #define RCC_APB1Periph_UART4             ((uint32_t)0x00080000)( M! f+ `7 T, D  T' t
  25. #define RCC_APB1Periph_UART5             ((uint32_t)0x00100000), o1 }3 V* B& t
  26. #define RCC_APB1Periph_I2C1              ((uint32_t)0x00200000)
    5 F$ O! V3 M/ |, M- g
  27. #define RCC_APB1Periph_I2C2              ((uint32_t)0x00400000)! X2 X! \' g, e& Y
  28. #define RCC_APB1Periph_I2C3              ((uint32_t)0x00800000)
    / i2 B3 D% V. }( f$ R
  29. #if defined(STM32F410xx) || defined(STM32F412xG) / ?2 i2 Y$ [$ u0 g( l
  30. || defined(STM32F413_423xx) || defined(STM32F446xx)$ |' F; |/ O, a3 G
  31. #define RCC_APB1Periph_FMPI2C1           ((uint32_t)0x01000000)
    $ m) y" z6 z3 p* F) u. D
  32. #endif /* STM32F410xx || STM32F446xx || STM32F413_423xx*/ 0 q; N& V1 A* p/ M0 c; Z8 m
  33. #define RCC_APB1Periph_CAN1              ((uint32_t)0x02000000)% ?/ W  w' ]) P( j- Q
  34. #define RCC_APB1Periph_CAN2              ((uint32_t)0x04000000)4 R6 r% F5 f- H; g8 o, m
  35. #if defined(STM32F413_423xx)
    / i/ p6 J2 W& O7 o, C9 p
  36. #define RCC_APB1Periph_CAN3              ((uint32_t)0x08000000)
    : d7 W0 A' |6 O) w6 c
  37. #endif /* STM32F413_423xx */7 ?! i9 X6 Z. r% }" L! W
  38. #if defined(STM32F446xx)8 J7 i; E2 L- g" Q( ~
  39. #define RCC_APB1Periph_CEC               ((uint32_t)0x08000000)
    + U1 W) h5 t1 ~6 C: H! p
  40. #endif /* STM32F446xx */ # @4 v+ I4 N1 W$ M- b; T( Z
  41. #define RCC_APB1Periph_PWR               ((uint32_t)0x10000000)
    * l; \$ J. A- R% Z" g% \' a1 u1 W1 _
  42. #define RCC_APB1Periph_DAC               ((uint32_t)0x20000000). I  F5 Y( v! @3 A$ Y, R
  43. #define RCC_APB1Periph_UART7             ((uint32_t)0x40000000)
    ' R  B! l9 d3 _6 [, q
  44. #define RCC_APB1Periph_UART8             ((uint32_t)0x80000000)
    - ?) Y, q8 L, v" J9 S) G
  45. #define IS_RCC_APB1_PERIPH(PERIPH)
    * s4 m, U/ C' t4 E3 H8 R5 H
  46.     ((((PERIPH) & 0x00003600) == 0x00) && ((PERIPH) != 0x00))$ w2 j7 o8 S! f4 a4 ^' I% ~; T
复制代码
2 S5 j5 `' ?  ^  |
RCC_APB2_Peripherals
# [$ n) q) B) s8 u
  1. /** @defgroup RCC_APB2_Peripherals ( X6 u+ T6 C7 ?8 ^6 D( F  ~( m
  2.   * @{3 Q5 S0 U& \3 X( |* v
  3.   */
    1 k2 J$ S. o+ q* Y2 T  }9 Q$ ]
  4. #define RCC_APB2Periph_TIM1              ((uint32_t)0x00000001)) L" I, }8 _. y5 \/ J
  5. #define RCC_APB2Periph_TIM8              ((uint32_t)0x00000002)
    * X  s; o  M3 g0 w
  6. #define RCC_APB2Periph_USART1            ((uint32_t)0x00000010)3 `* w+ Y: R5 l. l
  7. #define RCC_APB2Periph_USART6            ((uint32_t)0x00000020)
    1 H, p# {& U/ Z% R3 I* d5 f
  8. #define RCC_APB2Periph_ADC               ((uint32_t)0x00000100)
      T$ `* g) V# E, W" }" ^) I
  9. #define RCC_APB2Periph_ADC1              ((uint32_t)0x00000100): i2 h3 Q: ^  \, I; L5 H
  10. #define RCC_APB2Periph_ADC2              ((uint32_t)0x00000200)
    9 D% l  D" I2 p6 k# O" E
  11. #define RCC_APB2Periph_ADC3              ((uint32_t)0x00000400)
    / ]. Q6 H! Z6 H* C! f% F3 d
  12. #define RCC_APB2Periph_SDIO              ((uint32_t)0x00000800)5 Q" }' I; I, l0 b/ i* ]0 }
  13. #define RCC_APB2Periph_SPI1              ((uint32_t)0x00001000)
    . O5 N0 A) q# p6 X
  14. #define RCC_APB2Periph_SPI4              ((uint32_t)0x00002000)
    5 {7 ^8 d6 q9 O. {' h9 U
  15. #define RCC_APB2Periph_SYSCFG            ((uint32_t)0x00004000)
    / q2 ?! v2 A7 @1 B
  16. #define RCC_APB2Periph_EXTIT             ((uint32_t)0x00008000); d9 |) c+ w5 g; }
  17. #define RCC_APB2Periph_TIM9              ((uint32_t)0x00010000)$ R% o1 k( }9 S5 Q6 U( ^& G3 z8 y
  18. #define RCC_APB2Periph_TIM10             ((uint32_t)0x00020000)6 y1 m  z* p5 ]5 ]
  19. #define RCC_APB2Periph_TIM11             ((uint32_t)0x00040000)) I! w" m2 b% g7 Q, Y& N- B
  20. #define RCC_APB2Periph_SPI5              ((uint32_t)0x00100000)
    ' A2 d) n% b7 g/ ^; H
  21. #define RCC_APB2Periph_SPI6              ((uint32_t)0x00200000)+ G/ K( c/ }: e0 @- W: p( g' ?
  22. #define RCC_APB2Periph_SAI1              ((uint32_t)0x00400000)2 i9 _- @+ i( h
  23. #if defined(STM32F446xx) || defined(STM32F469_479xx)  W2 o# s+ F3 E, P
  24. #define RCC_APB2Periph_SAI2              ((uint32_t)0x00800000)
    4 T3 a& E6 t7 x! P
  25. #endif /* STM32F446xx || STM32F469_479xx */9 [& R) a' W% G* m" I
  26. #define RCC_APB2Periph_LTDC              ((uint32_t)0x04000000)
    # @$ g, ]- t% ]; O  b
  27. #if defined(STM32F469_479xx)) \" K) N, l1 A( A' i
  28. #define RCC_APB2Periph_DSI               ((uint32_t)0x08000000)8 y& @: @9 I- A3 m/ E
  29. #endif /* STM32F469_479xx *// u  x" _  q9 \( `6 E
  30. #if defined(STM32F412xG) || defined(STM32F413_423xx)
    ' I; U8 [  h, o# c4 T
  31. #define RCC_APB2Periph_DFSDM1            ((uint32_t)0x01000000)
    4 Z. e4 X  A1 B5 K% X
  32. #endif /* STM32F412xG || STM32F413_423xx */
    2 D, N/ t& [7 ]* T. i
  33. #if defined(STM32F413_423xx)
    6 B1 V7 Y7 r; \5 w0 K  n1 c, w- N
  34. #define RCC_APB2Periph_DFSDM2            ((uint32_t)0x02000000)+ t0 ~' }0 n. T
  35. #define RCC_APB2Periph_UART9             ((uint32_t)0x02000040)
    9 O3 y9 t. D2 b
  36. #define RCC_APB2Periph_UART10            ((uint32_t)0x00000080)' J4 \+ ~1 d$ i! p, u/ X; l/ p
  37. #endif /* STM32F413_423xx */0 d- `2 S2 b0 X

  38. ; ?9 D& ]. e* X3 d  t" X# x
  39. /* Legacy Defines */1 j. w0 G+ {6 i
  40. #define RCC_APB2Periph_DFSDM              RCC_APB2Periph_DFSDM1
    " l2 S, J- Q+ N* w

  41. ( }& f* x  E# t5 w+ w4 {; H  s# C( O
  42. #define IS_RCC_APB2_PERIPH(PERIPH)
    9 O8 O6 a% Y) b# x' m+ S
  43.         ((((PERIPH) & 0xF008000C) == 0x00) && ((PERIPH) != 0x00))( x- e) d* F5 ], X9 L
  44. #define IS_RCC_APB2_RESET_PERIPH(PERIPH)
    ! s6 C- c  p" S8 G) b8 A
  45.         ((((PERIPH) & 0xF208860C) == 0x00) && ((PERIPH) != 0x00))
复制代码

1 x# T, x( `1 [4 n8 b" CRCC_MCO1_Clock_Source_Prescaler
% }  J) o; K* y+ N- m) t
  1. /** @defgroup RCC_MCO1_Clock_Source_Prescaler4 h4 O' k4 n/ g& O( A8 ?
  2.   * @{
    , }3 p9 b/ j+ y7 x# i  U
  3.   */
    # l9 f" G4 k$ O; x
  4. #define RCC_MCO1Source_HSI               ((uint32_t)0x00000000); E4 _7 u6 e9 D8 O: a* c( X. M
  5. #define RCC_MCO1Source_LSE               ((uint32_t)0x00200000)
    . c+ ^) ^" D) L' d% h
  6. #define RCC_MCO1Source_HSE               ((uint32_t)0x00400000)" O; n# }* ~& w
  7. #define RCC_MCO1Source_PLLCLK            ((uint32_t)0x00600000)
    4 w  s( x- e9 k6 ?: X% L8 z
  8. #define RCC_MCO1Div_1                    ((uint32_t)0x00000000)) L& {/ W% C1 g4 O
  9. #define RCC_MCO1Div_2                    ((uint32_t)0x04000000)8 Q. B) I9 l1 f  V7 n# \/ ?, I7 `
  10. #define RCC_MCO1Div_3                    ((uint32_t)0x05000000)9 q/ l9 D0 N8 w2 u* C0 z
  11. #define RCC_MCO1Div_4                    ((uint32_t)0x06000000)6 _. H  J1 I2 X; n& x6 U. o
  12. #define RCC_MCO1Div_5                    ((uint32_t)0x07000000)
    , g% t' {9 l" x9 N3 c4 r
  13. #define IS_RCC_MCO1SOURCE(SOURCE) (((SOURCE) == RCC_MCO1Source_HSI) 5 z/ v/ Q! m7 [% c7 E7 H; n
  14. || ((SOURCE) == RCC_MCO1Source_LSE) || \2 \: V0 Z" F( e1 k3 X* L# O, M. N# X0 @
  15. ((SOURCE) == RCC_MCO1Source_HSE) || ((SOURCE) == RCC_MCO1Source_PLLCLK))
    ; F2 k% C7 K, c% b3 [6 Q
  16.                                    * i0 o- t# ]7 C) R! Z9 D1 m
  17. #define IS_RCC_MCO1DIV(DIV) (((DIV) == RCC_MCO1Div_1) || ((DIV) == RCC_MCO1Div_2) || \
    ; K1 J5 T( p4 Y- D
  18.                              ((DIV) == RCC_MCO1Div_3) || ((DIV) == RCC_MCO1Div_4) || \
    , Y5 [. A5 t: w9 v0 H; C: [
  19.                              ((DIV) == RCC_MCO1Div_5))
复制代码

7 Z8 A: ?0 a# G* k! wRCC_MCO2_Clock_Source_Prescaler4 `3 k/ N* j& ]' B# K
  1. /** @defgroup RCC_MCO2_Clock_Source_Prescaler
    5 D! x# x5 Z8 b) d  d, R- {+ v
  2.   * @{
    * m# y3 n) b# S9 P
  3.   */6 q  A8 ?; L8 H( F' a7 K5 w
  4. #define RCC_MCO2Source_SYSCLK            ((uint32_t)0x00000000)
    ( J/ C; N  _  U1 D9 I' _
  5. #define RCC_MCO2Source_PLLI2SCLK         ((uint32_t)0x40000000)
    2 v0 Z: ^, F, k
  6. #define RCC_MCO2Source_HSE               ((uint32_t)0x80000000)6 p( }) I; l" _4 d4 f
  7. #define RCC_MCO2Source_PLLCLK            ((uint32_t)0xC0000000)
    ; s( P0 Z1 D) L, z7 Q5 Y
  8. #define RCC_MCO2Div_1                    ((uint32_t)0x00000000)# q3 K" @: x& M2 H; T. l
  9. #define RCC_MCO2Div_2                    ((uint32_t)0x20000000)
    1 L1 |* m7 }) W
  10. #define RCC_MCO2Div_3                    ((uint32_t)0x28000000)8 j3 @& v: Y1 _, n5 e5 q) a
  11. #define RCC_MCO2Div_4                    ((uint32_t)0x30000000)
    1 f  H9 `9 S* r/ f2 q9 n( H7 i
  12. #define RCC_MCO2Div_5                    ((uint32_t)0x38000000)
    5 o/ O' {* b' z6 u, G
  13. #define IS_RCC_MCO2SOURCE(SOURCE) (((SOURCE) == RCC_MCO2Source_SYSCLK) # M5 T" @7 W0 `" c6 \, _( X* K9 ^
  14. || ((SOURCE) == RCC_MCO2Source_PLLI2SCLK)|| \3 v4 E# G3 g$ R- l0 H% A  O/ m( H; o
  15.                                    ((SOURCE) == RCC_MCO2Source_HSE) % @" ]+ K- i. y& q
  16.     || ((SOURCE) == RCC_MCO2Source_PLLCLK))2 d* ^6 S& P. V7 L3 _, Z
  17.                                    # q6 ]( O% p* W# ~# j6 c
  18. #define IS_RCC_MCO2DIV(DIV) (((DIV) == RCC_MCO2Div_1) || ((DIV) == RCC_MCO2Div_2) || \
    2 z1 L' R$ p% J1 L7 h2 V, C
  19.                              ((DIV) == RCC_MCO2Div_3) || ((DIV) == RCC_MCO2Div_4) || \
      ?& s4 s$ t' }; m3 V, f
  20.                              ((DIV) == RCC_MCO2Div_5))        
    ( N- A9 }3 }7 C4 B# e
复制代码
) G9 W! _/ P  q& P  w" F) }) X
RCC_Flag2 v  M& m1 J% t$ Y; U* g6 g1 D
  1. /** @defgroup RCC_Flag
    & S9 F6 B  |" W; G( C: b7 m
  2.   * @{
    ; S3 H4 G1 j1 q2 J) q$ `& U
  3.   */3 m) B' @' Y6 p( i$ S! B# [
  4. #define RCC_FLAG_HSIRDY                  ((uint8_t)0x21)/ L7 m9 |6 z2 x, W% L, `
  5. #define RCC_FLAG_HSERDY                  ((uint8_t)0x31)$ Q* ]; [8 ^* M4 ]- g& i
  6. #define RCC_FLAG_PLLRDY                  ((uint8_t)0x39)3 A; W' b+ ^2 F/ v2 a
  7. #define RCC_FLAG_PLLI2SRDY               ((uint8_t)0x3B)
    - a  w! R) z% f4 ~! {( b5 `
  8. #define RCC_FLAG_PLLSAIRDY               ((uint8_t)0x3D)' D4 M; J8 Y3 a
  9. #define RCC_FLAG_LSERDY                  ((uint8_t)0x41)
    ) o( {) q  q9 S
  10. #define RCC_FLAG_LSIRDY                  ((uint8_t)0x61)$ K/ x8 ?# E& V* h
  11. #define RCC_FLAG_BORRST                  ((uint8_t)0x79)
    4 J% u$ N1 J4 B2 ~$ Q
  12. #define RCC_FLAG_PINRST                  ((uint8_t)0x7A)6 P' A  W$ d, _6 J8 K8 o; ]& M/ ]/ J
  13. #define RCC_FLAG_PORRST                  ((uint8_t)0x7B)4 g0 Y# u. v9 _1 m
  14. #define RCC_FLAG_SFTRST                  ((uint8_t)0x7C)
    / R4 A4 z( }/ t( b& Z$ \9 T' R
  15. #define RCC_FLAG_IWDGRST                 ((uint8_t)0x7D)9 f; d" E9 m2 o# F" ]# w  T  h, x/ ^
  16. #define RCC_FLAG_WWDGRST                 ((uint8_t)0x7E)3 \. |! @( n% P" Z# o9 I! F% O0 n
  17. #define RCC_FLAG_LPWRRST                 ((uint8_t)0x7F)/ ~& Y4 U; r3 ]  U

  18. 3 ]2 w  W+ h; N  S% F$ j
  19. #define IS_RCC_FLAG(FLAG) (((FLAG) == RCC_FLAG_HSIRDY)   || ((FLAG) == RCC_FLAG_HSERDY) || \7 s8 [' p$ \6 [1 y: p
  20.                            ((FLAG) == RCC_FLAG_PLLRDY)   || ((FLAG) == RCC_FLAG_LSERDY) || \
    2 N" A: I  a6 H) W* Y9 [/ g
  21.                            ((FLAG) == RCC_FLAG_LSIRDY)   || ((FLAG) == RCC_FLAG_BORRST) || \
    1 n0 T7 @" l$ G$ C# D& M+ o
  22.                            ((FLAG) == RCC_FLAG_PINRST)   || ((FLAG) == RCC_FLAG_PORRST) || \* x8 k9 t3 v; P3 \1 [
  23.                            ((FLAG) == RCC_FLAG_SFTRST)   || ((FLAG) == RCC_FLAG_IWDGRST)|| \
    9 D" J. y# q8 [6 n' e( k  t, t) J3 w
  24.                            ((FLAG) == RCC_FLAG_WWDGRST)  || ((FLAG) == RCC_FLAG_LPWRRST)|| \5 N0 D: X) l1 c  _
  25.                            ((FLAG) == RCC_FLAG_PLLI2SRDY)|| ((FLAG) == RCC_FLAG_PLLSAIRDY)). P, T4 @2 }3 p
  26. % j  m/ G0 |* K2 i- L, i" U
  27. #define IS_RCC_CALIBRATION_VALUE(VALUE) ((VALUE) <= 0x1F)
复制代码

2 {. D7 g9 @, E, Y6 E+ y03. 相关函数
# {7 l: q& j* f) ?( k
  1. /* Function used to set the RCC clock configuration to the default reset state */. H( A1 f, }0 N  c, `( ?9 X! ]
  2. void        RCC_DeInit(void);  ^" o3 r  X0 X0 C& U9 ]; q7 p/ }

  3. & g2 `$ U5 j' D7 L( B( d' t, C7 b
  4. /* Internal/external clocks, PLL, CSS and MCO configuration functions *********/
    ; D: K+ E; C7 ~5 H0 Z0 ^5 R  O' E
  5. void        RCC_HSEConfig(uint8_t RCC_HSE);
    + H2 B/ o5 |3 J  l
  6. ErrorStatus RCC_WaitForHSEStartUp(void);
    ! Q2 U; |; f, x8 |5 M
  7. void        RCC_AdjustHSICalibrationValue(uint8_t HSICalibrationValue);
    0 x" k8 G8 T; I2 Y# G0 ?
  8. void        RCC_HSICmd(FunctionalState NewState);' }. _2 X5 A+ A
  9. void        RCC_LSEConfig(uint8_t RCC_LSE);
    % \4 d+ ^1 V7 m/ }" b
  10. void        RCC_LSICmd(FunctionalState NewState);
    . I5 @) }' S* O! \

  11. 7 y* g$ `- S) t8 B% l( j  k$ i7 q
  12. void        RCC_PLLCmd(FunctionalState NewState);
    ( w6 a( V$ a  G7 H

  13. & l8 ?) u* v# k# j
  14. void        RCC_PLLConfig(uint32_t RCC_PLLSource, uint32_t PLLM, uint32_t PLLN,
    : F6 B5 P) x$ Q, ?' ]
  15.                           uint32_t PLLP, uint32_t PLLQ);/ h& i) |9 j) Q' k$ \1 d7 l
  16. . c* q0 [# H; r0 I5 c" P: k
  17. void        RCC_PLLI2SCmd(FunctionalState NewState);
    5 u' [$ J" y9 q- C6 `- {8 g9 O3 W

  18. 1 s. ]! R( U" K. E% _: M
  19. void        RCC_PLLI2SConfig(uint32_t PLLI2SN, uint32_t PLLI2SR);
    ; ]7 Q* {# I; z% z

  20. 1 R  B, o5 M9 D- u3 P, E

  21. 3 Y: w8 A+ D- f, S4 w; a5 E
  22. void        RCC_PLLSAICmd(FunctionalState NewState);
    5 e. p0 P2 ~: A$ C  Q2 P" D

  23. ; L. @1 `' K; I
  24. void        RCC_PLLSAIConfig(uint32_t PLLSAIN, uint32_t PLLSAIQ, uint32_t PLLSAIR);3 o0 N' T$ I+ e4 b6 l! R
  25. void        RCC_ClockSecuritySystemCmd(FunctionalState NewState);6 I% O; f$ a5 h8 _! W* T
  26. void        RCC_MCO1Config(uint32_t RCC_MCO1Source, uint32_t RCC_MCO1Div);
    % T- c% I' I0 G
  27. void        RCC_MCO2Config(uint32_t RCC_MCO2Source, uint32_t RCC_MCO2Div);
    3 Z: A9 d8 B" n9 p1 S& y

  28. . {3 I+ m5 k. }! o. t3 g

  29. # K  a  J) O# j! k
  30. /* System, AHB and APB busses clocks configuration functions ******************/4 d6 o3 g7 q+ g# c/ @; q$ b
  31. void        RCC_SYSCLKConfig(uint32_t RCC_SYSCLKSource);
    . D% N& Q! x# z6 Q9 p1 ^6 z
  32. uint8_t     RCC_GetSYSCLKSource(void);
    3 ]$ R" n3 w3 c- q! ^
  33. void        RCC_HCLKConfig(uint32_t RCC_SYSCLK);
    ) d* [* y2 E% W
  34. void        RCC_PCLK1Config(uint32_t RCC_HCLK);
    . r$ r. b0 H: C2 e
  35. void        RCC_PCLK2Config(uint32_t RCC_HCLK);
    3 V- ?8 [% W4 {& k) h
  36. void        RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks);4 J1 Y. H9 ]. b( J! O( M  _3 D
  37. 6 D2 h3 w# ^  c; {5 P+ b
  38. /* Peripheral clocks configuration functions **********************************/, r, m  d. K1 Y6 L: s. b
  39. void        RCC_RTCCLKConfig(uint32_t RCC_RTCCLKSource);
    9 l0 K+ z6 F* y+ u1 G* ~% @3 s
  40. void        RCC_RTCCLKCmd(FunctionalState NewState);4 O& d: V1 B' }0 s2 |* ^
  41. void        RCC_BackupResetCmd(FunctionalState NewState);3 F- z1 V' n# K3 T6 N0 J: d

  42. % o; J4 c+ Y1 c8 j6 g
  43.   A0 m* L! n9 p2 _' `- E
  44. void        RCC_I2SCLKConfig(uint32_t RCC_I2SCLKSource);) H' X2 p0 _5 J- h% v3 z) j

  45. 5 Z: ^) }; T( C( l) {, y' U

  46. 2 n) K% T# l# F0 j* Q
  47. void        RCC_SAIBlockACLKConfig(uint32_t RCC_SAIBlockACLKSource);7 D& h* n: l) Z( T
  48. void        RCC_SAIBlockBCLKConfig(uint32_t RCC_SAIBlockBCLKSource);
    % }3 [1 E9 @* ]  j

  49. 9 D1 N* h- k' x3 z

  50. ( e$ a! c/ {  \% S' S, D
  51. void        RCC_SAIPLLI2SClkDivConfig(uint32_t RCC_PLLI2SDivQ);9 f5 g5 C. l$ h: u; u3 K6 y
  52. void        RCC_SAIPLLSAIClkDivConfig(uint32_t RCC_PLLSAIDivQ);- r% O9 l' Q9 q7 I) x' n, D

  53. 3 x2 `7 N2 A2 T% P$ P5 p3 F. k9 L

  54. ( a) h$ ]" s. A% I; x7 w
  55. void        RCC_LTDCCLKDivConfig(uint32_t RCC_PLLSAIDivR);
    8 }( a5 G+ N$ y! ?4 z5 [& a2 F( J
  56. void        RCC_TIMCLKPresConfig(uint32_t RCC_TIMCLKPrescaler);: I8 \! L5 h- q. C& J' h

  57. 7 W' c8 z: s6 \
  58. void        RCC_AHB1PeriphClockCmd(uint32_t RCC_AHB1Periph, FunctionalState NewState);
    6 K1 ~0 W% \- \' O
  59. void        RCC_AHB2PeriphClockCmd(uint32_t RCC_AHB2Periph, FunctionalState NewState);# t1 t3 b. `% D6 q! r. B; f" m, ]
  60. void        RCC_AHB3PeriphClockCmd(uint32_t RCC_AHB3Periph, FunctionalState NewState);
    : z5 L0 C% K- ]. b/ [3 y6 O
  61. void        RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);
    1 k& q( V0 D" D. ~7 r
  62. void        RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);/ \5 x5 c" M& i+ {* |0 e
  63.   ]* o9 f, Q/ g* `
  64. void        RCC_AHB1PeriphResetCmd(uint32_t RCC_AHB1Periph, FunctionalState NewState);
    6 e, Q, k2 p7 X  R" Y( s, m' e
  65. void        RCC_AHB2PeriphResetCmd(uint32_t RCC_AHB2Periph, FunctionalState NewState);
    ( P* u# V' K9 {
  66. void        RCC_AHB3PeriphResetCmd(uint32_t RCC_AHB3Periph, FunctionalState NewState);
    7 C/ W- T( N3 a% M9 V
  67. void        RCC_APB1PeriphResetCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);* |) t7 z& a  x$ T7 \2 B, _. A# S
  68. void        RCC_APB2PeriphResetCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
    ' @' h& e5 u3 n$ @( J

  69. , o# u. G+ I+ g
  70. void        RCC_AHB1PeriphClockLPModeCmd(uint32_t RCC_AHB1Periph, FunctionalState NewState);9 l/ ~  t9 R3 x4 O4 I
  71. void        RCC_AHB2PeriphClockLPModeCmd(uint32_t RCC_AHB2Periph, FunctionalState NewState);$ d9 p! {7 ^6 N+ E8 v
  72. void        RCC_AHB3PeriphClockLPModeCmd(uint32_t RCC_AHB3Periph, FunctionalState NewState);0 n# R1 U& Q) c& `& a  a
  73. void        RCC_APB1PeriphClockLPModeCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);0 {% [( S* c4 E: c' h4 s0 |# K
  74. void        RCC_APB2PeriphClockLPModeCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);- I# p6 c+ ?8 M& t! [# s. X
  75. 5 G. Z+ i; }* i
  76. : l) Q' U* \+ ^4 q2 B$ _% F$ h
  77. /* Interrupts and flags management functions **********************************/
    7 Z* A4 M) ~. f" e) @# A
  78. void        RCC_ITConfig(uint8_t RCC_IT, FunctionalState NewState);
    & U- y4 a  V$ h+ ?. _; P
  79. FlagStatus  RCC_GetFlagStatus(uint8_t RCC_FLAG);2 m% O  U" A; ^
  80. void        RCC_ClearFlag(void);% i7 K: a6 N) S% C! ^! ?$ O
  81. ITStatus    RCC_GetITStatus(uint8_t RCC_IT);
    ( c" `# j2 f) [9 x* D3 X
  82. void        RCC_ClearITPendingBit(uint8_t RCC_IT);4 K$ c3 Q3 c9 {" H/ U1 W
复制代码

% {! z, ^3 i: v0 |  q1 F5 G7 O/ m8 F
04. 结构体封装
+ x$ p% p9 B) ]: R
  1. /**
    0 i/ j/ a, r% e) K1 j
  2.   * @brief Reset and Clock Control  B& \$ m# K# s5 L  h. v
  3.   */1 D* Y* o. Y+ E; m

  4. % c+ }$ p- r4 ], E6 n
  5. typedef struct
    # M/ ?: e4 b' ^7 p2 A
  6. {
    5 u- o1 ~$ F) _; P! H
  7.   __IO uint32_t CR;            /*!< RCC clock control register,                                  Address offset: 0x00 */
    6 J4 R- [- c0 j3 A
  8.   __IO uint32_t PLLCFGR;       /*!< RCC PLL configuration register,                              Address offset: 0x04 */
    6 B, _. S7 }+ O* M! H
  9.   __IO uint32_t CFGR;          /*!< RCC clock configuration register,                            Address offset: 0x08 */- e" u. j$ C3 P, c( `9 [# g. D" s
  10.   __IO uint32_t CIR;           /*!< RCC clock interrupt register,                                Address offset: 0x0C */
    : w% m; @; v. V
  11.   __IO uint32_t AHB1RSTR;      /*!< RCC AHB1 peripheral reset register,                          Address offset: 0x10 */
    1 I2 r& z( x) T8 g8 u7 _
  12.   __IO uint32_t AHB2RSTR;      /*!< RCC AHB2 peripheral reset register,                          Address offset: 0x14 */5 k! w( v; x: o
  13.   __IO uint32_t AHB3RSTR;      /*!< RCC AHB3 peripheral reset register,                          Address offset: 0x18 */
    # B0 g3 a7 E8 U1 A# q
  14.   uint32_t      RESERVED0;     /*!< Reserved, 0x1C                                                                    */; V& c6 @& P' N
  15.   __IO uint32_t APB1RSTR;      /*!< RCC APB1 peripheral reset register,                          Address offset: 0x20 */' E+ B- S! \* n3 [
  16.   __IO uint32_t APB2RSTR;      /*!< RCC APB2 peripheral reset register,                          Address offset: 0x24 */2 c& z1 U3 q! m. q- w2 I
  17.   uint32_t      RESERVED1[2];  /*!< Reserved, 0x28-0x2C                                                               */% W$ T9 B3 ?4 z; p$ L
  18.   __IO uint32_t AHB1ENR;       /*!< RCC AHB1 peripheral clock register,                          Address offset: 0x30 */
    # Y! T; C) d0 |
  19.   __IO uint32_t AHB2ENR;       /*!< RCC AHB2 peripheral clock register,                          Address offset: 0x34 */* b7 q* m& V# i9 T# m6 B
  20.   __IO uint32_t AHB3ENR;       /*!< RCC AHB3 peripheral clock register,                          Address offset: 0x38 */, x, O. d! k* ^' s
  21.   uint32_t      RESERVED2;     /*!< Reserved, 0x3C                                                                    */: W) S2 g8 I3 r: K
  22.   __IO uint32_t APB1ENR;       /*!< RCC APB1 peripheral clock enable register,                   Address offset: 0x40 */
    1 U! ]' r) M* D, v
  23.   __IO uint32_t APB2ENR;       /*!< RCC APB2 peripheral clock enable register,                   Address offset: 0x44 */
    % y2 p' c7 E' o; n
  24.   uint32_t      RESERVED3[2];  /*!< Reserved, 0x48-0x4C                                                               */3 T' {4 y' c; Q4 }( {' U$ c
  25.   __IO uint32_t AHB1LPENR;     /*!< RCC AHB1 peripheral clock enable in low power mode register, Address offset: 0x50 */- W6 s# c' H% d0 {. T$ }
  26.   __IO uint32_t AHB2LPENR;     /*!< RCC AHB2 peripheral clock enable in low power mode register, Address offset: 0x54 */8 @0 J, h9 M6 u, }* I
  27.   __IO uint32_t AHB3LPENR;     /*!< RCC AHB3 peripheral clock enable in low power mode register, Address offset: 0x58 */
    1 u$ u3 F2 F" C1 g7 _
  28.   uint32_t      RESERVED4;     /*!< Reserved, 0x5C                                                                    */* F! D2 O4 ^6 Y
  29.   __IO uint32_t APB1LPENR;     /*!< RCC APB1 peripheral clock enable in low power mode register, Address offset: 0x60 */
    ; i* m2 B6 {1 n7 z: A) N% f
  30.   __IO uint32_t APB2LPENR;     /*!< RCC APB2 peripheral clock enable in low power mode register, Address offset: 0x64 */. h, o, a, O& ^& |
  31.   uint32_t      RESERVED5[2];  /*!< Reserved, 0x68-0x6C                                                               */# b' z1 P3 f% m+ a3 T1 G
  32.   __IO uint32_t BDCR;          /*!< RCC Backup domain control register,                          Address offset: 0x70 */- x& W2 I$ d8 W- W
  33.   __IO uint32_t CSR;           /*!< RCC clock control & status register,                         Address offset: 0x74 */
    - p+ p( o( p0 p8 l( d; B: R& A- i* I
  34.   uint32_t      RESERVED6[2];  /*!< Reserved, 0x78-0x7C                                                               */
    7 y+ K! l8 [6 Z
  35.   __IO uint32_t SSCGR;         /*!< RCC spread spectrum clock generation register,               Address offset: 0x80 */
    7 K" H+ m$ J0 n* z4 Q0 X! y
  36.   __IO uint32_t PLLI2SCFGR;    /*!< RCC PLLI2S configuration register,                           Address offset: 0x84 */
    1 q4 G+ [& _  d- X+ Y
  37.   __IO uint32_t PLLSAICFGR;    /*!< RCC PLLSAI configuration register,                           Address offset: 0x88 */" [$ M, v% Q1 E& ?8 {- n
  38.   __IO uint32_t DCKCFGR;       /*!< RCC Dedicated Clocks configuration register,                 Address offset: 0x8C */; O1 l- C" G* F. T5 P. B6 L
  39.   __IO uint32_t CKGATENR;      /*!< RCC Clocks Gated Enable Register,                            Address offset: 0x90 */ /* Only for STM32F412xG, STM32413_423xx and STM32F446xx devices */6 J1 X, {. Y+ j+ _
  40.   __IO uint32_t DCKCFGR2;      /*!< RCC Dedicated Clocks configuration register 2,               Address offset: 0x94 */ /* Only for STM32F410xx, STM32F412xG, STM32413_423xx and STM32F446xx devices */9 x! l% ^. Z( n) O! s+ Y, W
  41. 3 C% |  R$ r+ |; \- H9 R2 e
  42. } RCC_TypeDef;0 O1 J7 a. V, V1 Z  Z. }
复制代码
/ N6 t1 _/ U. l( n& B' N7 j
5 a/ I/ ^5 N1 D) y( Z+ {$ K
05. 其它
6 Y- w- D9 C0 a- L
  1. /******************************************************************************/
    2 V8 {5 T+ ?7 V: Y3 [5 B. A$ F
  2. /*                                                                            */  x  ?& b" s" m: M
  3. /*                         Reset and Clock Control                            */
    % h8 }4 F5 ~  W, Y0 u
  4. /*                                                                            */# c$ M5 s, u7 @- J
  5. /******************************************************************************/6 K. B5 `2 g) m' L
  6. /********************  Bit definition for RCC_CR register  ********************/; e1 u: j9 ]; p+ ?0 D
  7. #define  RCC_CR_HSION                        ((uint32_t)0x00000001)
    ( o) G3 y/ c. M: ?: n
  8. #define  RCC_CR_HSIRDY                       ((uint32_t)0x00000002)5 L2 v* n/ D* `+ F

  9. ) O! {4 L* b& m( y% b. H' K1 P! u
  10. #define  RCC_CR_HSITRIM                      ((uint32_t)0x000000F8)
    - Y6 S2 s# \% l- k' z
  11. #define  RCC_CR_HSITRIM_0                    ((uint32_t)0x00000008)/*!<Bit 0 */& X7 \4 ~( u* Z% ^+ n
  12. #define  RCC_CR_HSITRIM_1                    ((uint32_t)0x00000010)/*!<Bit 1 */8 @! q( z/ W# ~
  13. #define  RCC_CR_HSITRIM_2                    ((uint32_t)0x00000020)/*!<Bit 2 */" w0 f" a1 d( M4 w4 U2 H( q
  14. #define  RCC_CR_HSITRIM_3                    ((uint32_t)0x00000040)/*!<Bit 3 */
    9 s8 s8 \1 N9 x* l7 q
  15. #define  RCC_CR_HSITRIM_4                    ((uint32_t)0x00000080)/*!<Bit 4 */, ]6 i+ U/ n# n* M% r6 z* H) u

  16. 7 K$ q' S' d) ~
  17. #define  RCC_CR_HSICAL                       ((uint32_t)0x0000FF00); I* {' ?# Z* F" n
  18. #define  RCC_CR_HSICAL_0                     ((uint32_t)0x00000100)/*!<Bit 0 */- t4 _. q8 Z# o2 O- C
  19. #define  RCC_CR_HSICAL_1                     ((uint32_t)0x00000200)/*!<Bit 1 */$ ^1 \& D  l5 P
  20. #define  RCC_CR_HSICAL_2                     ((uint32_t)0x00000400)/*!<Bit 2 */% j2 J8 _$ f& ^. K! o3 T0 W
  21. #define  RCC_CR_HSICAL_3                     ((uint32_t)0x00000800)/*!<Bit 3 */
    ' b9 E8 A( F+ b
  22. #define  RCC_CR_HSICAL_4                     ((uint32_t)0x00001000)/*!<Bit 4 */
    # i, K( j' P' Z: S8 J
  23. #define  RCC_CR_HSICAL_5                     ((uint32_t)0x00002000)/*!<Bit 5 */
    2 z7 j  P! N* d0 R1 k
  24. #define  RCC_CR_HSICAL_6                     ((uint32_t)0x00004000)/*!<Bit 6 */
    4 C* x7 G, ?2 K* P: r( b: R
  25. #define  RCC_CR_HSICAL_7                     ((uint32_t)0x00008000)/*!<Bit 7 */: B" n4 Z1 \4 g4 a2 R0 @! }
  26. / A( R8 {' N) t2 `
  27. #define  RCC_CR_HSEON                        ((uint32_t)0x00010000)& f2 g' w- c8 }0 S- b* {
  28. #define  RCC_CR_HSERDY                       ((uint32_t)0x00020000)
    3 v; D3 T/ I( u  i: {. i- ~/ h" |) E
  29. #define  RCC_CR_HSEBYP                       ((uint32_t)0x00040000): z5 J' K, y# l
  30. #define  RCC_CR_CSSON                        ((uint32_t)0x00080000)  B3 [. i* D6 b; x
  31. #define  RCC_CR_PLLON                        ((uint32_t)0x01000000)3 B+ G5 h, V) W+ R. v
  32. #define  RCC_CR_PLLRDY                       ((uint32_t)0x02000000)& C: c7 D$ x" v, Z' U/ f
  33. #define  RCC_CR_PLLI2SON                     ((uint32_t)0x04000000)
    . u7 {  k4 G: Z# v
  34. #define  RCC_CR_PLLI2SRDY                    ((uint32_t)0x08000000)2 u- ~, n# h' J' [. i
  35. #define  RCC_CR_PLLSAION                     ((uint32_t)0x10000000)
    ( m" Q* E9 L) B8 w
  36. #define  RCC_CR_PLLSAIRDY                    ((uint32_t)0x20000000)
    . Y! e1 R' _( O' ^
  37. 4 H$ t# N6 d4 C% [' j- D8 Q
  38. /********************  Bit definition for RCC_PLLCFGR register  ***************/
    " C9 U) G* I* j( @7 `
  39. #define  RCC_PLLCFGR_PLLM                    ((uint32_t)0x0000003F)
    3 b* |/ w6 I, t1 v; ^7 B, F" E5 a4 f
  40. #define  RCC_PLLCFGR_PLLM_0                  ((uint32_t)0x00000001)
    ( H- [. k0 i) Q+ [
  41. #define  RCC_PLLCFGR_PLLM_1                  ((uint32_t)0x00000002)6 v9 D4 K" @1 E: R
  42. #define  RCC_PLLCFGR_PLLM_2                  ((uint32_t)0x00000004)
    5 @' t. I4 N$ y$ F. o( y% i; j# `- p9 u
  43. #define  RCC_PLLCFGR_PLLM_3                  ((uint32_t)0x00000008)
    , S& ?1 q' J" c5 }7 P
  44. #define  RCC_PLLCFGR_PLLM_4                  ((uint32_t)0x00000010)
    $ F! a' \4 F2 A4 M; ?4 L! ~# v
  45. #define  RCC_PLLCFGR_PLLM_5                  ((uint32_t)0x00000020)
    ' ?2 G$ R0 l- C
  46. " a; s$ ]' `- P* m3 ?
  47. #define  RCC_PLLCFGR_PLLN                     ((uint32_t)0x00007FC0)3 d( s$ R; W9 O, b
  48. #define  RCC_PLLCFGR_PLLN_0                   ((uint32_t)0x00000040)( L, d( E. i6 ?5 ]3 V" j
  49. #define  RCC_PLLCFGR_PLLN_1                   ((uint32_t)0x00000080)/ T, H0 r7 t2 U  H2 z1 B( B" j$ R
  50. #define  RCC_PLLCFGR_PLLN_2                   ((uint32_t)0x00000100)( `1 s0 j( i' T0 ^4 ^' j
  51. #define  RCC_PLLCFGR_PLLN_3                   ((uint32_t)0x00000200)$ Q3 ^; [1 \( O" \, e
  52. #define  RCC_PLLCFGR_PLLN_4                   ((uint32_t)0x00000400)
    9 o( E. p/ p2 q+ q% f. B  \
  53. #define  RCC_PLLCFGR_PLLN_5                   ((uint32_t)0x00000800)! y, A  E& m9 T6 b7 d2 H8 E
  54. #define  RCC_PLLCFGR_PLLN_6                   ((uint32_t)0x00001000)# F$ P5 S9 ~/ ^' h
  55. #define  RCC_PLLCFGR_PLLN_7                   ((uint32_t)0x00002000), l6 O9 x4 }* H0 Z. D
  56. #define  RCC_PLLCFGR_PLLN_8                   ((uint32_t)0x00004000)2 e* L0 U3 ^$ r% V
  57. 0 }3 {; u  W3 z& h  u
  58. #define  RCC_PLLCFGR_PLLP                    ((uint32_t)0x00030000)
    1 p: h+ Y4 Z( A+ G- Z
  59. #define  RCC_PLLCFGR_PLLP_0                  ((uint32_t)0x00010000)+ ~/ s& r5 F" d8 X
  60. #define  RCC_PLLCFGR_PLLP_1                  ((uint32_t)0x00020000)
    - ?+ _  R# k+ B* K7 e

  61. ; @& S  v$ Q  J1 B% D& G
  62. #define  RCC_PLLCFGR_PLLSRC                  ((uint32_t)0x00400000)
    ( _3 U. T+ [7 W7 O+ R# L- V' v
  63. #define  RCC_PLLCFGR_PLLSRC_HSE              ((uint32_t)0x00400000)- B' A9 H2 v" q9 ~5 c" x
  64. #define  RCC_PLLCFGR_PLLSRC_HSI              ((uint32_t)0x00000000)
    4 X' u( i5 f1 t; Z) l0 w

  65. 4 G* \9 n8 V% {6 \9 s! X
  66. #define  RCC_PLLCFGR_PLLQ                    ((uint32_t)0x0F000000). L& D7 {) [/ Q* H9 }
  67. #define  RCC_PLLCFGR_PLLQ_0                  ((uint32_t)0x01000000)
      `% G. h' C$ _& }2 O) W' K  D
  68. #define  RCC_PLLCFGR_PLLQ_1                  ((uint32_t)0x02000000)
    3 X: v7 L8 N5 w, Y, n
  69. #define  RCC_PLLCFGR_PLLQ_2                  ((uint32_t)0x04000000)
    % J5 P7 D$ M! }! b# ]
  70. #define  RCC_PLLCFGR_PLLQ_3                  ((uint32_t)0x08000000)
    , u4 R4 e4 b% P# {. F" C  |& o
  71. ' w5 g! b' W7 F! y  l: V
  72. #if defined(STM32F412xG) || defined(STM32F413_423xx) || defined(STM32F446xx) || defined(STM32F469_479xx)! s: a" ?8 B$ T! J" u/ B$ _
  73. #define  RCC_PLLCFGR_PLLR                    ((uint32_t)0x70000000)" P6 Q- c+ L9 \& R6 D
  74. #define  RCC_PLLCFGR_PLLR_0                  ((uint32_t)0x10000000). @: j1 k) T# D4 r2 x5 z
  75. #define  RCC_PLLCFGR_PLLR_1                  ((uint32_t)0x20000000)  y9 i# ?8 \: j6 F; p. m
  76. #define  RCC_PLLCFGR_PLLR_2                  ((uint32_t)0x40000000)
    & z1 i  `: v0 ?$ E6 L4 ~* Q
  77. #endif /* STM32F412xG || STM32F413_423xx || STM32F446xx || STM32F469_479xx */
    6 U( z& u$ K: y" P8 c
  78. + w" X+ Z- y5 c4 t. [
  79. /********************  Bit definition for RCC_CFGR register  ******************/  s6 A7 _* K+ V2 M
  80. /*!< SW configuration */
    ) h$ t0 `( w! u4 S; c* C
  81. #define  RCC_CFGR_SW                         ((uint32_t)0x00000003)        /*!< SW[1:0] bits (System clock Switch) */
    7 f& M7 X( d% a' m6 a$ l
  82. #define  RCC_CFGR_SW_0                       ((uint32_t)0x00000001)        /*!< Bit 0 */+ }- h) ]4 z0 b  ^& \, R
  83. #define  RCC_CFGR_SW_1                       ((uint32_t)0x00000002)        /*!< Bit 1 */
    ) X& q+ l) o4 Y" k
  84. ( I( D; H: Z. f7 w9 k2 _
  85. #define  RCC_CFGR_SW_HSI                     ((uint32_t)0x00000000)        /*!< HSI selected as system clock */
    9 N+ ^; s% z5 h2 v9 b
  86. #define  RCC_CFGR_SW_HSE                     ((uint32_t)0x00000001)        /*!< HSE selected as system clock */5 |; E4 Y( i; p  Y% b/ i1 T- A) [
  87. #define  RCC_CFGR_SW_PLL                     ((uint32_t)0x00000002)        /*!< PLL/PLLP selected as system clock */" I/ _7 c) J0 \& l
  88. #if defined(STM32F412xG) || defined(STM32F413_423xx) || defined(STM32F446xx) || defined(STM32F469_479xx)
    4 z; z) D2 J; b# A/ M3 z
  89. #define  RCC_CFGR_SW_PLLR                    ((uint32_t)0x00000003)        /*!< PLL/PLLR selected as system clock */) h+ L$ N3 z" B0 b9 C6 g
  90. #endif /* STM32F412xG || STM32F413_423xx || STM32F446xx || STM32F469_479xx */1 z9 L$ r3 z: s# a2 m

  91. 1 r8 c5 S: X  l; d0 R
  92. /*!< SWS configuration */( |" l$ @& r  x8 b
  93. #define  RCC_CFGR_SWS                        ((uint32_t)0x0000000C)        /*!< SWS[1:0] bits (System Clock Switch Status) */( h+ x9 \2 Y; m2 I( t8 |
  94. #define  RCC_CFGR_SWS_0                      ((uint32_t)0x00000004)        /*!< Bit 0 */
    0 E+ x( T3 Q+ T
  95. #define  RCC_CFGR_SWS_1                      ((uint32_t)0x00000008)        /*!< Bit 1 */0 D" y7 _: {0 f9 q& D* n

  96. / Y7 g; V+ r- t* B6 C7 I  l
  97. #define  RCC_CFGR_SWS_HSI                    ((uint32_t)0x00000000)        /*!< HSI oscillator used as system clock */3 [/ f, n# o7 J$ C: b' w9 S
  98. #define  RCC_CFGR_SWS_HSE                    ((uint32_t)0x00000004)        /*!< HSE oscillator used as system clock */
    ' |7 d2 Y( X4 D8 d8 T) [
  99. #define  RCC_CFGR_SWS_PLL                    ((uint32_t)0x00000008)        /*!< PLL/PLLP used as system clock       */
    3 D8 d& G( L' I; M! I+ e( o$ o
  100. #if defined(STM32F412xG) || defined(STM32F413_423xx) || defined(STM32F469_479xx) || defined(STM32F446xx)  m6 K% ~7 ~6 e- o6 p' \6 h
  101. #define  RCC_CFGR_SWS_PLLR                   ((uint32_t)0x0000000C)        /*!< PLL/PLLR used as system clock       */
    . y6 z% @7 @* {! `. b
  102. #endif /* STM32F412xG || STM32F413_423xx || STM32F446xx || STM32F469_479xx */
    / |9 Y- W$ B2 ?

  103. ; B+ D% `! f" M( j! l; {
  104. /*!< HPRE configuration */
      e" f$ w  d6 o" {) |* f5 @8 D
  105. #define  RCC_CFGR_HPRE                       ((uint32_t)0x000000F0)        /*!< HPRE[3:0] bits (AHB prescaler) */- C* E6 S: {8 j* A
  106. #define  RCC_CFGR_HPRE_0                     ((uint32_t)0x00000010)        /*!< Bit 0 */
    / e. g9 H1 N- O
  107. #define  RCC_CFGR_HPRE_1                     ((uint32_t)0x00000020)        /*!< Bit 1 *// u% h( T, w9 o1 K7 e' a. m; E
  108. #define  RCC_CFGR_HPRE_2                     ((uint32_t)0x00000040)        /*!< Bit 2 */) F3 ?1 W0 Y2 D0 g" M: \! v
  109. #define  RCC_CFGR_HPRE_3                     ((uint32_t)0x00000080)        /*!< Bit 3 *// `4 U  l5 l. j/ n! X' [
  110. ( F- ]+ u6 c3 n, Q  p# X/ A0 {$ B
  111. #define  RCC_CFGR_HPRE_DIV1                  ((uint32_t)0x00000000)        /*!< SYSCLK not divided */7 P/ r, Z! C" F
  112. #define  RCC_CFGR_HPRE_DIV2                  ((uint32_t)0x00000080)        /*!< SYSCLK divided by 2 */
    + _* p2 r- K1 G/ R
  113. #define  RCC_CFGR_HPRE_DIV4                  ((uint32_t)0x00000090)        /*!< SYSCLK divided by 4 */5 ^- T7 @( y( e5 X( j/ c8 x
  114. #define  RCC_CFGR_HPRE_DIV8                  ((uint32_t)0x000000A0)        /*!< SYSCLK divided by 8 */
    " `# B7 V+ S: `3 J$ w2 T! n
  115. #define  RCC_CFGR_HPRE_DIV16                 ((uint32_t)0x000000B0)        /*!< SYSCLK divided by 16 */
    % R- P) l) I- N
  116. #define  RCC_CFGR_HPRE_DIV64                 ((uint32_t)0x000000C0)        /*!< SYSCLK divided by 64 */
    / W0 X/ v4 \6 q& a0 M
  117. #define  RCC_CFGR_HPRE_DIV128                ((uint32_t)0x000000D0)        /*!< SYSCLK divided by 128 */: R0 \" z# s! K" d- I1 u
  118. #define  RCC_CFGR_HPRE_DIV256                ((uint32_t)0x000000E0)        /*!< SYSCLK divided by 256 */( V2 D* N( T+ I% L
  119. #define  RCC_CFGR_HPRE_DIV512                ((uint32_t)0x000000F0)        /*!< SYSCLK divided by 512 */
    ( e( m: _# h4 F! g5 x

  120. " i4 T0 _: e7 \# R! c4 l1 n2 e7 [
  121. #if defined(STM32F410xx)
    $ M' b9 U9 L: S+ d" k: ]; z
  122. /*!< MCO1EN configuration */
    2 C  N+ i3 [9 Q
  123. #define  RCC_CFGR_MCO1EN                     ((uint32_t)0x00000100)        /*!< MCO1EN bit */- V& z# f$ D4 q! A* y% t) r. A+ G% I7 N
  124. /*!< MCO1EN configuration */
    1 @" L3 c6 x+ [3 j5 V7 h9 ~: o' P
  125. #define  RCC_CFGR_MCO2EN                     ((uint32_t)0x00000200)        /*!< MCO2EN bit */
    ) R* ~& _, [0 \# h5 I/ P
  126. #endif /* STM32F410xx */
    6 |* L7 J; d" I) ?! l% `
  127. /*!< PPRE1 configuration */( d: H* _% Z1 h/ `& D2 Y7 ?
  128. #define  RCC_CFGR_PPRE1                      ((uint32_t)0x00001C00)        /*!< PRE1[2:0] bits (APB1 prescaler) */
    8 o! A0 m! v0 C% h: e* \$ p
  129. #define  RCC_CFGR_PPRE1_0                    ((uint32_t)0x00000400)        /*!< Bit 0 */
    + F7 \. M$ v# ]. v+ O& X$ w6 z& `
  130. #define  RCC_CFGR_PPRE1_1                    ((uint32_t)0x00000800)        /*!< Bit 1 */3 F7 S: N7 X! C0 V  v
  131. #define  RCC_CFGR_PPRE1_2                    ((uint32_t)0x00001000)        /*!< Bit 2 *// Y3 {+ K4 V& y/ a9 L4 j! P; f  h

  132. . d  _+ h* w3 I/ V7 d6 S0 e" q& I6 w( u: n
  133. #define  RCC_CFGR_PPRE1_DIV1                 ((uint32_t)0x00000000)        /*!< HCLK not divided */
    + X4 d& z  f: B  s0 ~* c
  134. #define  RCC_CFGR_PPRE1_DIV2                 ((uint32_t)0x00001000)        /*!< HCLK divided by 2 */! J0 ?" f5 g2 l
  135. #define  RCC_CFGR_PPRE1_DIV4                 ((uint32_t)0x00001400)        /*!< HCLK divided by 4 */9 |% O& _& s( M9 H, W
  136. #define  RCC_CFGR_PPRE1_DIV8                 ((uint32_t)0x00001800)        /*!< HCLK divided by 8 */
    9 z. J" i2 i' S) }5 Z" M# h
  137. #define  RCC_CFGR_PPRE1_DIV16                ((uint32_t)0x00001C00)        /*!< HCLK divided by 16 */; b; f+ Y3 Z8 O# h! b/ V% A

  138. & o8 Q0 C& v4 r% V
  139. /*!< PPRE2 configuration */
    0 @! E; @  Q: C
  140. #define  RCC_CFGR_PPRE2                      ((uint32_t)0x0000E000)        /*!< PRE2[2:0] bits (APB2 prescaler) */
    8 o! n- B& Z% T7 J9 r/ S: i
  141. #define  RCC_CFGR_PPRE2_0                    ((uint32_t)0x00002000)        /*!< Bit 0 */
    # T$ }, E1 N# k
  142. #define  RCC_CFGR_PPRE2_1                    ((uint32_t)0x00004000)        /*!< Bit 1 */
    4 G) l7 f2 ]9 S. m
  143. #define  RCC_CFGR_PPRE2_2                    ((uint32_t)0x00008000)        /*!< Bit 2 */0 O: \4 Q# P) e

  144. 7 E# ^: a+ _) X% S; w& R6 P; {. t
  145. #define  RCC_CFGR_PPRE2_DIV1                 ((uint32_t)0x00000000)        /*!< HCLK not divided */
    . |- l% x" k( O* G1 D
  146. #define  RCC_CFGR_PPRE2_DIV2                 ((uint32_t)0x00008000)        /*!< HCLK divided by 2 */# E! t: W' j, @
  147. #define  RCC_CFGR_PPRE2_DIV4                 ((uint32_t)0x0000A000)        /*!< HCLK divided by 4 */) s& y9 e1 w, F# Y1 d$ H
  148. #define  RCC_CFGR_PPRE2_DIV8                 ((uint32_t)0x0000C000)        /*!< HCLK divided by 8 */% l  z7 K- b9 l/ n
  149. #define  RCC_CFGR_PPRE2_DIV16                ((uint32_t)0x0000E000)        /*!< HCLK divided by 16 */% c& W* ?- E. i$ ~

  150. ( l% r' U$ Z/ ?: x% X' J
  151. /*!< RTCPRE configuration */
    ) |' ~7 Y# O: Y
  152. #define  RCC_CFGR_RTCPRE                     ((uint32_t)0x001F0000)
    0 X& f8 ^  z1 B/ A  \) D0 j9 C
  153. #define  RCC_CFGR_RTCPRE_0                   ((uint32_t)0x00010000)
    & b" U; n6 |+ z# b# u
  154. #define  RCC_CFGR_RTCPRE_1                   ((uint32_t)0x00020000), z7 W" L+ t% A5 W
  155. #define  RCC_CFGR_RTCPRE_2                   ((uint32_t)0x00040000)
    , }% V) f1 y& K0 B- G$ I2 D
  156. #define  RCC_CFGR_RTCPRE_3                   ((uint32_t)0x00080000)
    # R( o6 @/ v+ V: A" z1 X$ P8 K
  157. #define  RCC_CFGR_RTCPRE_4                   ((uint32_t)0x00100000)
    1 _, k; f/ C7 v+ l( W6 i2 F* W, N
  158. 6 Y2 y8 ~) m1 d4 ]) y0 R" `
  159. /*!< MCO1 configuration */0 G# \; m- g' F1 u/ e3 ^
  160. #define  RCC_CFGR_MCO1                       ((uint32_t)0x00600000)
    & l( I/ U& x; W$ K( S& ~0 z
  161. #define  RCC_CFGR_MCO1_0                     ((uint32_t)0x00200000)6 ]0 X$ k( b; g" `6 D) G- d
  162. #define  RCC_CFGR_MCO1_1                     ((uint32_t)0x00400000)8 O, N/ D3 G: \8 P/ w# |% B

  163. , G4 K% G1 W, Y
  164. #define  RCC_CFGR_I2SSRC                     ((uint32_t)0x00800000)
    ; M! M0 i+ G+ V; R3 _2 ?7 f8 g

  165. $ s: {/ |/ R, |' D, q/ k
  166. #define  RCC_CFGR_MCO1PRE                    ((uint32_t)0x07000000), O/ H: M+ u) ]1 g, Y
  167. #define  RCC_CFGR_MCO1PRE_0                  ((uint32_t)0x01000000)
    * ^; j" v4 [+ T7 S: s! B
  168. #define  RCC_CFGR_MCO1PRE_1                  ((uint32_t)0x02000000)
    - N+ _. l8 m- h; ~( Q4 z& G
  169. #define  RCC_CFGR_MCO1PRE_2                  ((uint32_t)0x04000000)8 H: U, y- k4 ]( E* k. q4 G

  170. ( }2 {- R. O/ h2 u7 Z" {2 M
  171. #define  RCC_CFGR_MCO2PRE                    ((uint32_t)0x38000000)3 @% v6 @$ y! d% c. S5 O( S
  172. #define  RCC_CFGR_MCO2PRE_0                  ((uint32_t)0x08000000), n; x! w9 y9 M6 T; y
  173. #define  RCC_CFGR_MCO2PRE_1                  ((uint32_t)0x10000000)5 X6 {# l% G4 F& a! K
  174. #define  RCC_CFGR_MCO2PRE_2                  ((uint32_t)0x20000000)
    6 d; l- }# r6 p5 M# R8 `" Y
  175. 4 g/ D/ Y" S, M" a4 ^: R' P* W& S+ N
  176. #define  RCC_CFGR_MCO2                       ((uint32_t)0xC0000000)5 f: A4 j5 o8 a( }
  177. #define  RCC_CFGR_MCO2_0                     ((uint32_t)0x40000000)) W, Y. C6 S% \+ }( E( [% n
  178. #define  RCC_CFGR_MCO2_1                     ((uint32_t)0x80000000)
    ' E& a4 a4 S8 ]3 k, k7 c
  179. 9 e; d) ^; C. k/ @$ L
  180. /********************  Bit definition for RCC_CIR register  *******************/+ Y' {. g( T/ r6 v6 I6 A: G& ^
  181. #define  RCC_CIR_LSIRDYF                     ((uint32_t)0x00000001)
    % v* v9 M/ T5 ~8 k' f3 X8 Q
  182. #define  RCC_CIR_LSERDYF                     ((uint32_t)0x00000002)
    * S# ~, f1 E( S
  183. #define  RCC_CIR_HSIRDYF                     ((uint32_t)0x00000004)# ]/ A% f$ k! i$ Y% |! Z8 X1 w4 H# q
  184. #define  RCC_CIR_HSERDYF                     ((uint32_t)0x00000008)& }4 V+ o( {  A. z: w0 T* Y' a
  185. #define  RCC_CIR_PLLRDYF                     ((uint32_t)0x00000010)& x+ |; ^3 s! R" c0 M6 V; Z- a
  186. #define  RCC_CIR_PLLI2SRDYF                  ((uint32_t)0x00000020), d+ I' S' i( [" r: l1 g+ ~) y; G3 V2 e
  187. #define  RCC_CIR_PLLSAIRDYF                  ((uint32_t)0x00000040); r5 K- Y6 B2 o! g5 p0 i
  188. #define  RCC_CIR_CSSF                        ((uint32_t)0x00000080)" V" r/ g4 S! y
  189. #define  RCC_CIR_LSIRDYIE                    ((uint32_t)0x00000100)( F" D# p: u* _
  190. #define  RCC_CIR_LSERDYIE                    ((uint32_t)0x00000200)
    8 P4 b' K3 F0 }
  191. #define  RCC_CIR_HSIRDYIE                    ((uint32_t)0x00000400)
    8 L- g: l6 ^0 J. I4 j+ D
  192. #define  RCC_CIR_HSERDYIE                    ((uint32_t)0x00000800)
    ! [+ Q1 K& o) k9 V7 M4 |# \3 j
  193. #define  RCC_CIR_PLLRDYIE                    ((uint32_t)0x00001000)& c3 A" x0 N$ p* c2 X0 Z
  194. #define  RCC_CIR_PLLI2SRDYIE                 ((uint32_t)0x00002000)
    5 `( K- ^  A+ j
  195. #define  RCC_CIR_PLLSAIRDYIE                 ((uint32_t)0x00004000)
    6 s4 \3 n# j2 g- c
  196. #define  RCC_CIR_LSIRDYC                     ((uint32_t)0x00010000)
    # t3 y( v- |7 ?  P
  197. #define  RCC_CIR_LSERDYC                     ((uint32_t)0x00020000)
    ) I: b. i8 p$ w
  198. #define  RCC_CIR_HSIRDYC                     ((uint32_t)0x00040000)
    , M$ z" Y, B( p, b, J7 |
  199. #define  RCC_CIR_HSERDYC                     ((uint32_t)0x00080000)5 f% ^) ?0 ~. A: d2 y
  200. #define  RCC_CIR_PLLRDYC                     ((uint32_t)0x00100000); U. I7 L  k: ^
  201. #define  RCC_CIR_PLLI2SRDYC                  ((uint32_t)0x00200000)
    ) F0 O0 X' {2 S
  202. #define  RCC_CIR_PLLSAIRDYC                  ((uint32_t)0x00400000)1 n  t) U- q8 l# c- {- {
  203. #define  RCC_CIR_CSSC                        ((uint32_t)0x00800000): P( v9 j! c$ P) j
  204. 9 M4 r/ J, j& X: J# u# I
  205. /********************  Bit definition for RCC_AHB1RSTR register  **************/
    6 d5 b! V' B- R! C  z) W( f
  206. #define  RCC_AHB1RSTR_GPIOARST               ((uint32_t)0x00000001)
    ' w% B0 d5 v' P  B7 X8 O3 V
  207. #define  RCC_AHB1RSTR_GPIOBRST               ((uint32_t)0x00000002)
    ! P, k% b4 d. t* t9 f1 c+ v; G
  208. #define  RCC_AHB1RSTR_GPIOCRST               ((uint32_t)0x00000004)
    7 s9 \# J0 }4 V. t4 N) O
  209. #define  RCC_AHB1RSTR_GPIODRST               ((uint32_t)0x00000008)
    / t# G, I$ Q9 Q2 b' ^
  210. #define  RCC_AHB1RSTR_GPIOERST               ((uint32_t)0x00000010), ?# s. |" M( V& j
  211. #define  RCC_AHB1RSTR_GPIOFRST               ((uint32_t)0x00000020)
    1 M+ K! p3 c  x) h
  212. #define  RCC_AHB1RSTR_GPIOGRST               ((uint32_t)0x00000040)! e/ |8 t: s( F" i  o" M
  213. #define  RCC_AHB1RSTR_GPIOHRST               ((uint32_t)0x00000080)
    2 D3 V) b) n5 v
  214. #define  RCC_AHB1RSTR_GPIOIRST               ((uint32_t)0x00000100)
    ; j( u" ]! A9 J0 ~& d
  215. #define  RCC_AHB1RSTR_GPIOJRST               ((uint32_t)0x00000200)# e+ X! D/ ~3 E6 U
  216. #define  RCC_AHB1RSTR_GPIOKRST               ((uint32_t)0x00000400)
    8 V# W# ^0 q" b6 S4 ^4 _  ^
  217. #define  RCC_AHB1RSTR_CRCRST                 ((uint32_t)0x00001000)$ S+ g$ v7 j4 |: F) w1 Y/ S; j& [
  218. #define  RCC_AHB1RSTR_DMA1RST                ((uint32_t)0x00200000); W- E* O9 b- y5 D# a8 W6 m: f' K/ o% Q
  219. #define  RCC_AHB1RSTR_DMA2RST                ((uint32_t)0x00400000)
    5 X# P% |; Y$ U; Z- w: r
  220. #define  RCC_AHB1RSTR_DMA2DRST               ((uint32_t)0x00800000)
    # @; \& G3 G9 u$ z" \5 U+ R
  221. #define  RCC_AHB1RSTR_ETHMACRST              ((uint32_t)0x02000000). A. d- K0 J( |3 B
  222. #define  RCC_AHB1RSTR_OTGHRST                ((uint32_t)0x10000000), t8 J+ o/ d0 I; r% L1 X9 J0 U

  223. 2 p  x7 P' T4 ^7 S, U
  224. /********************  Bit definition for RCC_AHB2RSTR register  **************/
    * r" O: u8 U, N$ _( l8 x
  225. #define  RCC_AHB2RSTR_DCMIRST                ((uint32_t)0x00000001)
    ( O# z2 r& `6 c% W% e0 k- j. R
  226. #define  RCC_AHB2RSTR_CRYPRST                ((uint32_t)0x00000010)
    7 I2 Q! i, J- ^- r
  227. #define  RCC_AHB2RSTR_HASHRST                ((uint32_t)0x00000020)- P9 u% Y! a% o5 R; R
  228. /* maintained for legacy purpose */1 ?3 c% n: [9 E8 T% S4 L4 z
  229. #define  RCC_AHB2RSTR_HSAHRST                RCC_AHB2RSTR_HASHRST' `$ L/ k. R0 n. [
  230. #define  RCC_AHB2RSTR_RNGRST                 ((uint32_t)0x00000040)) y# x1 C- h* G$ k* O1 y1 @
  231. #define  RCC_AHB2RSTR_OTGFSRST               ((uint32_t)0x00000080); v0 S  B; p0 W8 s6 n. Y

  232. 7 e/ v, H8 ?0 E) l
  233. /********************  Bit definition for RCC_AHB3RSTR register  **************/" m+ A0 f4 ]6 R2 `3 k2 W: ^) r
  234. #if defined(STM32F40_41xxx) || defined(STM32F412xG) || defined(STM32F413_423xx)' k8 t$ B! V8 r9 d* c; d, Q% E
  235. #define  RCC_AHB3RSTR_FSMCRST                ((uint32_t)0x00000001)
    , I2 O0 m- r, w3 B
  236. #endif /* STM32F40_41xxx || STM32F412xG || STM32F413_423xx */) q) ^2 `4 E8 s. P
  237. ! g2 i5 y* P6 B- [( Y
  238. #if defined(STM32F427_437xx) || defined(STM32F429_439xx) || defined(STM32F446xx) || defined(STM32F469_479xx)
    ; H' ]$ u/ r* B  p% K& R2 _
  239. #define  RCC_AHB3RSTR_FMCRST                ((uint32_t)0x00000001)
    . ]" _0 H0 G6 {+ |1 r7 I
  240. #endif /* STM32F427_437xx ||  STM32F429_439xx || STM32F446xx || STM32F469_479xx */
    - D( W, k+ g$ M) H5 a5 q* t
  241. #if defined(STM32F412xG) || defined(STM32F413_423xx) || defined(STM32F446xx) || defined(STM32F469_479xx)+ t) _, R, _8 Y2 Z1 @# T
  242. #define  RCC_AHB3RSTR_QSPIRST               ((uint32_t)0x00000002)
    $ Z3 J+ t; P3 h  S9 \0 m
  243. #endif /* STM32F412xG || STM32F413_423xx || STM32F446xx || STM32F469_479xx */
    9 u* e0 U6 _* S9 k: Z* h- x4 _( r
  244. + v% d8 D, |+ x
  245. /********************  Bit definition for RCC_APB1RSTR register  **************/2 _/ Y! b2 `$ I( P0 F! X
  246. #define  RCC_APB1RSTR_TIM2RST                ((uint32_t)0x00000001)
    3 A/ ?0 l+ q* u% {: z' g3 Q
  247. #define  RCC_APB1RSTR_TIM3RST                ((uint32_t)0x00000002)
    : k2 {" ]$ R. j
  248. #define  RCC_APB1RSTR_TIM4RST                ((uint32_t)0x00000004)- R% P. k% V6 X' i9 }
  249. #define  RCC_APB1RSTR_TIM5RST                ((uint32_t)0x00000008)1 q* C9 g" [3 X" h9 p
  250. #define  RCC_APB1RSTR_TIM6RST                ((uint32_t)0x00000010)- q/ F/ ^) B/ D2 A
  251. #define  RCC_APB1RSTR_TIM7RST                ((uint32_t)0x00000020)
    + H2 j) E! E! ^% L  A5 P
  252. #define  RCC_APB1RSTR_TIM12RST               ((uint32_t)0x00000040)
    7 G9 \3 Z/ j8 V* L
  253. #define  RCC_APB1RSTR_TIM13RST               ((uint32_t)0x00000080)5 P& |4 v0 Z5 [$ F" J. z3 m7 Q
  254. #define  RCC_APB1RSTR_TIM14RST               ((uint32_t)0x00000100), T, A& K. C: g7 D
  255. #if defined(STM32F410xx) || defined(STM32F413_423xx)
    + c: u& K5 a) M
  256. #define  RCC_APB1RSTR_LPTIM1RST              ((uint32_t)0x00000200)  }! |5 `( {- I: o6 K0 o
  257. #endif /* STM32F410xx || STM32F413_423xx */
    ' N$ T# {5 N) L. c" s* r
  258. #define  RCC_APB1RSTR_WWDGRST                ((uint32_t)0x00000800)
    6 R5 q4 {, m0 e5 b' c  o
  259. #define  RCC_APB1RSTR_SPI2RST                ((uint32_t)0x00004000)' M. B5 y- @. n3 C
  260. #define  RCC_APB1RSTR_SPI3RST                ((uint32_t)0x00008000), n5 ?- O6 X' p9 |% w- [9 N5 a/ u
  261. #if defined(STM32F446xx)7 R4 R! N0 R9 W" ^/ |. z
  262. #define  RCC_APB1RSTR_SPDIFRXRST             ((uint32_t)0x00010000): t2 f  [. x' f
  263. #endif /* STM32F446xx */- H0 a* L" c( X. P5 n( Q/ @" i7 G
  264. #define  RCC_APB1RSTR_USART2RST              ((uint32_t)0x00020000)4 Q7 ]! a0 ~% ^6 `/ b
  265. #define  RCC_APB1RSTR_USART3RST              ((uint32_t)0x00040000)
    # S& F* o1 ]& t  o3 q' s; y
  266. #define  RCC_APB1RSTR_UART4RST               ((uint32_t)0x00080000)7 C- [1 g4 ?" c6 l
  267. #define  RCC_APB1RSTR_UART5RST               ((uint32_t)0x00100000)  K5 g5 `: p+ Y% m" V9 y
  268. #define  RCC_APB1RSTR_I2C1RST                ((uint32_t)0x00200000)+ k# F7 E2 x1 P) Y! p
  269. #define  RCC_APB1RSTR_I2C2RST                ((uint32_t)0x00400000)& m8 _* v8 x  Y$ t. @
  270. #define  RCC_APB1RSTR_I2C3RST                ((uint32_t)0x00800000). @& ]1 _' T1 a
  271. #if defined(STM32F410xx) || defined(STM32F412xG) || defined(STM32F413_423xx) || defined(STM32F446xx)
    3 M4 ]0 r/ T  e/ r' e8 d
  272. #define  RCC_APB1RSTR_FMPI2C1RST             ((uint32_t)0x01000000)9 v. R, Q, N+ {1 L" |
  273. #endif /* STM32F410xx || STM32F412xG || STM32F413_423xx || STM32F446xx */" R2 K) p5 v7 a) f6 i# p% J% `7 W
  274. #define  RCC_APB1RSTR_CAN1RST                ((uint32_t)0x02000000)
    & `2 H* L! n1 ~! U0 f$ O' f# t
  275. #define  RCC_APB1RSTR_CAN2RST                ((uint32_t)0x04000000)
    ! T. Z% Z% L% [$ L$ H
  276. #if defined(STM32F446xx)
    . W+ L% |9 d8 }, h  C% j
  277. #define  RCC_APB1RSTR_CECRST                 ((uint32_t)0x08000000), O0 b# A' S: m) e
  278. #endif /* STM32F446xx */2 c" P) P  w5 A/ v/ D3 k3 _% V
  279. #define  RCC_APB1RSTR_PWRRST                 ((uint32_t)0x10000000)! @* M/ Z3 `; w3 j( r3 k, s9 ]
  280. #define  RCC_APB1RSTR_DACRST                 ((uint32_t)0x20000000)+ n& A) y4 S( |( e1 Z' D2 Y3 a! b
  281. #define  RCC_APB1RSTR_UART7RST               ((uint32_t)0x40000000)5 o3 P! p& H- j
  282. #define  RCC_APB1RSTR_UART8RST               ((uint32_t)0x80000000)
    & w- u3 G$ k% P) J' Z# S& B
  283. , y8 W$ J) Q* F5 a6 B* t
  284. /********************  Bit definition for RCC_APB2RSTR register  **************/
    * h! i5 w6 b  I* {2 n5 G
  285. #define  RCC_APB2RSTR_TIM1RST                ((uint32_t)0x00000001)6 z, ^$ q; t' v) r8 F- f
  286. #define  RCC_APB2RSTR_TIM8RST                ((uint32_t)0x00000002)
    1 C% s" l! H: U5 T5 L  f, L
  287. #define  RCC_APB2RSTR_USART1RST              ((uint32_t)0x00000010)# D. b7 B! P' P: O* i" R
  288. #define  RCC_APB2RSTR_USART6RST              ((uint32_t)0x00000020)
    5 g/ L6 e2 ]% c6 R/ \0 A% C
  289. #define  RCC_APB2RSTR_UART9RST               ((uint32_t)0x00000040)9 S- V0 P  M& N$ u0 w' v9 U
  290. #define  RCC_APB2RSTR_UART10RST              ((uint32_t)0x00000080); m* k; S: Z, \. ?8 \
  291. #define  RCC_APB2RSTR_ADCRST                 ((uint32_t)0x00000100)( k0 u( s( w. k/ l8 ]7 U* D) h
  292. #define  RCC_APB2RSTR_SDIORST                ((uint32_t)0x00000800)
    . J3 i3 Y0 q$ B0 b. Y& y+ ?
  293. #define  RCC_APB2RSTR_SPI1RST                ((uint32_t)0x00001000)! a2 u- X0 V: I# |
  294. #define  RCC_APB2RSTR_SPI4RST                ((uint32_t)0x00002000)/ A7 T7 ~9 M! {4 ~* W9 l
  295. #define  RCC_APB2RSTR_SYSCFGRST              ((uint32_t)0x00004000)2 Z% r5 L. H) D+ @- k
  296. #define  RCC_APB2RSTR_TIM9RST                ((uint32_t)0x00010000)
    ; u+ ^+ a" l! T% s1 V0 C
  297. #define  RCC_APB2RSTR_TIM10RST               ((uint32_t)0x00020000)/ G, b- V& v4 }6 _
  298. #define  RCC_APB2RSTR_TIM11RST               ((uint32_t)0x00040000)! @) J) D; h# k9 o6 k
  299. #define  RCC_APB2RSTR_SPI5RST                ((uint32_t)0x00100000). f. s. i7 T' X5 {6 N
  300. #define  RCC_APB2RSTR_SPI6RST                ((uint32_t)0x00200000)
    " [9 t* g( r$ x1 ~- V9 k
  301. #define  RCC_APB2RSTR_SAI1RST                ((uint32_t)0x00400000)
    $ X2 A% _& z4 Q* d7 u3 t
  302. #if defined(STM32F446xx)- u+ _; l4 u  C9 G# h0 ?% ?
  303. #define  RCC_APB2RSTR_SAI2RST                ((uint32_t)0x00800000)/ G( x3 F( D* ?& j
  304. #endif /* STM32F446xx */
    / Y0 y4 x: ?% D
  305. #define  RCC_APB2RSTR_LTDCRST                ((uint32_t)0x04000000)
    2 @9 G/ O& G, _/ z$ J/ G
  306. #if defined(STM32F469_479xx)
    % @/ v. E) F0 m) |
  307. #define  RCC_APB2RSTR_DSIRST                 ((uint32_t)0x08000000)
    + |, }% n0 o& V$ w
  308. #endif /* STM32F469_479xx */
    ; K) H6 P/ k5 ]6 b
  309. #if defined(STM32F412xG) || defined(STM32F413_423xx)
    9 R2 a3 n' s9 F
  310. #define  RCC_APB2RSTR_DFSDM1RST              ((uint32_t)0x01000000)
    1 ]1 N6 i9 z$ Y1 k5 n8 e
  311. #endif /* STM32F412xG || STM32F413_423xx */
    6 j8 p0 j1 h- o6 ^

  312. 2 t" q9 M- z9 p1 Z( t4 S& D$ \
  313. #if defined(STM32F413_423xx)
    : t' W! n3 b9 \8 V6 Q
  314. #define  RCC_APB2RSTR_DFSDM2RST              ((uint32_t)0x02000000)
    / c  I' w# {  y# \, w
  315. #endif /* STM32F413_423xx */# s, [" B3 ~0 W+ g+ l
  316. /* Old definitions, maintained for legacy purpose */- E+ G; E/ [, o( j8 r1 n4 G7 B
  317. #define  RCC_APB2RSTR_SPI1                   RCC_APB2RSTR_SPI1RST
    4 J, \' Y9 ?8 V6 L% p
  318. #define  RCC_APB2RSTR_DFSDMRST               RCC_APB2RSTR_DFSDM1RST' g3 t6 g% B* w$ ~: I& Q' y

  319. ! a3 p9 }. J! O4 K9 L
  320. /********************  Bit definition for RCC_AHB1ENR register  ***************/8 b) x% Y4 D, q5 K5 n& w7 }
  321. #define  RCC_AHB1ENR_GPIOAEN                 ((uint32_t)0x00000001)
    ! K* M. }' j4 J) W
  322. #define  RCC_AHB1ENR_GPIOBEN                 ((uint32_t)0x00000002)
    , ^4 w$ h" p2 ]" t' F3 f0 c' ]
  323. #define  RCC_AHB1ENR_GPIOCEN                 ((uint32_t)0x00000004)8 K! W  p8 j, }2 s# M! g4 N1 z
  324. #define  RCC_AHB1ENR_GPIODEN                 ((uint32_t)0x00000008)
    8 G1 j$ ]& P. e( x/ |. Z
  325. #define  RCC_AHB1ENR_GPIOEEN                 ((uint32_t)0x00000010)  r$ A" w6 _0 h  L8 c$ N
  326. #define  RCC_AHB1ENR_GPIOFEN                 ((uint32_t)0x00000020)5 g# l) z2 O' r+ U' J- M
  327. #define  RCC_AHB1ENR_GPIOGEN                 ((uint32_t)0x00000040)6 V+ Z) N$ `! Q4 H; ~# G
  328. #define  RCC_AHB1ENR_GPIOHEN                 ((uint32_t)0x00000080)
    2 a9 L6 S& [6 s
  329. #define  RCC_AHB1ENR_GPIOIEN                 ((uint32_t)0x00000100)4 ?/ j4 a9 ~/ ]8 p5 \( X
  330. #define  RCC_AHB1ENR_GPIOJEN                 ((uint32_t)0x00000200)
    1 H0 n. S& q" Y5 t! u
  331. #define  RCC_AHB1ENR_GPIOKEN                 ((uint32_t)0x00000400)
    7 n# x. l: ]1 M- V( I! M" Y
  332. #define  RCC_AHB1ENR_CRCEN                   ((uint32_t)0x00001000)% Q; a( l' A/ C. s( M
  333. #define  RCC_AHB1ENR_BKPSRAMEN               ((uint32_t)0x00040000)
    % T1 H6 |. r" R: ?2 [6 q, [
  334. #define  RCC_AHB1ENR_CCMDATARAMEN            ((uint32_t)0x00100000), [1 H# @6 v. i/ K  |
  335. #define  RCC_AHB1ENR_DMA1EN                  ((uint32_t)0x00200000), i1 m5 k2 ?* X: @- K! ~
  336. #define  RCC_AHB1ENR_DMA2EN                  ((uint32_t)0x00400000); X5 M. v8 H8 [, \! H
  337. #define  RCC_AHB1ENR_DMA2DEN                 ((uint32_t)0x00800000)) C! c! l: G# _1 i
  338. #define  RCC_AHB1ENR_ETHMACEN                ((uint32_t)0x02000000)4 r0 S8 A. H' Z) `  n
  339. #define  RCC_AHB1ENR_ETHMACTXEN              ((uint32_t)0x04000000)' ~/ W) I* V$ C% ]% t1 G% J
  340. #define  RCC_AHB1ENR_ETHMACRXEN              ((uint32_t)0x08000000)
    , T% d. x2 p: C' k1 N5 q
  341. #define  RCC_AHB1ENR_ETHMACPTPEN             ((uint32_t)0x10000000)
      i9 g: D) I7 D& {& C! E% z
  342. #define  RCC_AHB1ENR_OTGHSEN                 ((uint32_t)0x20000000)! ]% L& E" J& e0 W5 ~. t/ r4 W
  343. #define  RCC_AHB1ENR_OTGHSULPIEN             ((uint32_t)0x40000000)$ ^" X% ^3 v6 a6 q3 O# B( O1 S

  344. 5 E. ]2 ~- c- ?9 O! H
  345. /********************  Bit definition for RCC_AHB2ENR register  ***************/
    3 _# W% V3 m* a2 Y' }
  346. #define  RCC_AHB2ENR_DCMIEN                  ((uint32_t)0x00000001): e% X7 V3 c& x6 e8 _
  347. #define  RCC_AHB2ENR_CRYPEN                  ((uint32_t)0x00000010)
    ) m! j6 r/ \+ }+ }) N
  348. #define  RCC_AHB2ENR_HASHEN                  ((uint32_t)0x00000020)
    4 ^& Y% r# Y, t% _
  349. #define  RCC_AHB2ENR_RNGEN                   ((uint32_t)0x00000040)
    & y7 h2 `$ i" U5 i2 Y& I
  350. #define  RCC_AHB2ENR_OTGFSEN                 ((uint32_t)0x00000080)
    ) {( k0 X* J1 P8 g/ ~! a
  351. ' x' f% O1 ?# ^6 v" U
  352. /********************  Bit definition for RCC_AHB3ENR register  ***************/% k" {7 Q( v1 o. K! k% c5 v

  353. : q" H' f* \/ e8 c& M
  354. #if defined(STM32F40_41xxx) || defined(STM32F412xG) || defined(STM32F413_423xx)( m- X& m/ z: h: o, f1 j' W! ~. D
  355. #define  RCC_AHB3ENR_FSMCEN                  ((uint32_t)0x00000001)" b2 f; A. ^3 Z: I( O
  356. #endif /* STM32F40_41xxx || STM32F412xG || STM32F413_423xx */0 E6 Y; D# r1 x

  357. : m) m, o. }: z; i' ~  ^$ A  L6 e
  358. #if defined(STM32F427_437xx) || defined(STM32F429_439xx) || defined(STM32F446xx) || defined(STM32F469_479xx)4 B8 |9 Z" a+ Y; S% c/ C$ H
  359. #define  RCC_AHB3ENR_FMCEN                  ((uint32_t)0x00000001)) Y% i3 N5 C% E! r+ C: u% P4 c8 U
  360. #endif /* STM32F427_437xx ||  STM32F429_439xx || STM32F446xx || STM32F469_479xx */
    - M# u3 o% [- Q- r% H

  361. 6 f; H5 P7 h% B4 b5 ~& ^( i
  362. #if defined(STM32F412xG) || defined(STM32F413_423xx) || defined(STM32F446xx) || defined(STM32F469_479xx)' `3 q6 E6 ^7 E6 {7 d- s% G' I4 B
  363. #define  RCC_AHB3ENR_QSPIEN                 ((uint32_t)0x00000002)
      o$ y- e* g! q
  364. #endif /* STM32F412xG || STM32F413_423xx || STM32F446xx || STM32F469_479xx */
    . m# N- m; y5 G" P+ R' E. F
  365.   m* R: ^& p( ^( D. A
  366. /********************  Bit definition for RCC_APB1ENR register  ***************/
    4 Q; _% v5 d1 S+ V3 h2 O
  367. #define  RCC_APB1ENR_TIM2EN                  ((uint32_t)0x00000001)
    7 T7 f! q! q; F( K, S' I1 B3 T
  368. #define  RCC_APB1ENR_TIM3EN                  ((uint32_t)0x00000002)
    7 b, R5 h2 d, Y
  369. #define  RCC_APB1ENR_TIM4EN                  ((uint32_t)0x00000004)
      U  T: j" t( Y" ?; N
  370. #define  RCC_APB1ENR_TIM5EN                  ((uint32_t)0x00000008)
    ( k% N! W6 `. ^2 d$ w. H1 K+ \
  371. #define  RCC_APB1ENR_TIM6EN                  ((uint32_t)0x00000010)
      M* N6 F4 D  s+ p( ~1 M4 |$ e
  372. #define  RCC_APB1ENR_TIM7EN                  ((uint32_t)0x00000020)
    4 x8 x- T, U7 X5 \( z- q: t2 y
  373. #define  RCC_APB1ENR_TIM12EN                 ((uint32_t)0x00000040)
      {7 c. h& C; [3 }
  374. #define  RCC_APB1ENR_TIM13EN                 ((uint32_t)0x00000080)  ^8 Q7 {- t0 @
  375. #define  RCC_APB1ENR_TIM14EN                 ((uint32_t)0x00000100)
    7 K6 O- k1 \  E' [9 S
  376. #if defined(STM32F410xx) || defined(STM32F413_423xx)
    % S! g' A/ l& P, G* w% P- z  M
  377. #define  RCC_APB1ENR_LPTIM1EN                ((uint32_t)0x00000200)  N- ^! o+ T/ y# [
  378. #endif /* STM32F410xx || STM32F413_423xx */. L; b7 c1 S4 a5 h$ i0 Y0 ?, V
  379. #define  RCC_APB1ENR_WWDGEN                  ((uint32_t)0x00000800)$ g* |% O; i5 G% _8 C
  380. #define  RCC_APB1ENR_SPI2EN                  ((uint32_t)0x00004000): o6 f& w: ]/ S2 S# X2 D' d
  381. #define  RCC_APB1ENR_SPI3EN                  ((uint32_t)0x00008000)
    ( d# t' L# @: W
  382. #if defined(STM32F446xx)3 p/ v0 O  X/ V* n7 b. J
  383. #define  RCC_APB1ENR_SPDIFRXEN               ((uint32_t)0x00010000)
    ( _7 o" b% K+ I3 @( M% |. P6 s; W
  384. #endif /* STM32F446xx */
    + p9 I/ H+ }0 Y% G- m
  385. #define  RCC_APB1ENR_USART2EN                ((uint32_t)0x00020000)
    / R8 a4 n: I) F3 W- A' x
  386. #define  RCC_APB1ENR_USART3EN                ((uint32_t)0x00040000)
    % \. a3 i8 N& r: Z1 [
  387. #define  RCC_APB1ENR_UART4EN                 ((uint32_t)0x00080000)6 j8 C  f0 @0 h
  388. #define  RCC_APB1ENR_UART5EN                 ((uint32_t)0x00100000)
    - W: T9 S6 w" Y1 A4 K$ B# W
  389. #define  RCC_APB1ENR_I2C1EN                  ((uint32_t)0x00200000)
    & W- V) b+ f$ L
  390. #define  RCC_APB1ENR_I2C2EN                  ((uint32_t)0x00400000)' U8 n# v" R; m" Y5 Q4 ]
  391. #define  RCC_APB1ENR_I2C3EN                  ((uint32_t)0x00800000). T: F  x" g" T/ F( D  v* d
  392. #if defined(STM32F410xx) || defined(STM32F412xG) || defined(STM32F413_423xx) || defined(STM32F446xx)
    0 L- E1 x; i7 y6 T6 w) D% `5 p
  393. #define  RCC_APB1ENR_FMPI2C1EN               ((uint32_t)0x01000000)3 W" u3 }: ^7 A2 m6 W! |
  394. #endif /* STM32F410xx || STM32F412xG || STM32F413_423xx || STM32F446xx */# v+ h6 V+ F. I+ D
  395. #define  RCC_APB1ENR_CAN1EN                  ((uint32_t)0x02000000)% S7 Y; ~- R. E. s9 l
  396. #define  RCC_APB1ENR_CAN2EN                  ((uint32_t)0x04000000)
    ' K' e8 s3 J$ h
  397. #if defined(STM32F446xx)
    $ L9 Z0 C* S5 J) v6 e( V2 e/ m
  398. #define  RCC_APB1ENR_CECEN                   ((uint32_t)0x08000000)5 l# b  V! h- Y1 ]7 V: p) w
  399. #endif /* STM32F446xx */
    8 f) [4 w! F4 B5 @( S6 f& O9 y5 I3 o  `
  400. #define  RCC_APB1ENR_PWREN                   ((uint32_t)0x10000000)
    ! k, Y3 p! U. _& B
  401. #define  RCC_APB1ENR_DACEN                   ((uint32_t)0x20000000)) N: T( Z/ M: n5 {
  402. #define  RCC_APB1ENR_UART7EN                 ((uint32_t)0x40000000)/ X7 x- j$ ~- p9 q9 u
  403. #define  RCC_APB1ENR_UART8EN                 ((uint32_t)0x80000000)7 {  {( M( C8 R& d; H( P
  404. . J/ a* U' w* `' R: \
  405. /********************  Bit definition for RCC_APB2ENR register  ***************/6 }" Y0 C" F1 o0 ]' ]
  406. #define  RCC_APB2ENR_TIM1EN                  ((uint32_t)0x00000001)
    ) Y/ G7 v5 T1 B6 \
  407. #define  RCC_APB2ENR_TIM8EN                  ((uint32_t)0x00000002)! b# x$ v: N- r" l& c( s" U( M
  408. #define  RCC_APB2ENR_USART1EN                ((uint32_t)0x00000010)
    & A' ^/ r" v3 H4 L( E8 p
  409. #define  RCC_APB2ENR_USART6EN                ((uint32_t)0x00000020)
    % t+ G, C4 v+ _! x$ n7 W$ Z. p
  410. #define  RCC_APB2ENR_UART9EN                 ((uint32_t)0x00000040). V0 H: B- k2 m! T6 f' a) A
  411. #define  RCC_APB2ENR_UART10EN                ((uint32_t)0x00000080)
    : b9 |9 ^5 h7 r* T
  412. #define  RCC_APB2ENR_ADC1EN                  ((uint32_t)0x00000100)
    5 I( p4 [( l  [8 h9 U. ^. j
  413. #define  RCC_APB2ENR_ADC2EN                  ((uint32_t)0x00000200)
    7 H" z3 W5 X0 }- n9 i( ^( }: J$ y
  414. #define  RCC_APB2ENR_ADC3EN                  ((uint32_t)0x00000400)
    * z9 M) N7 a0 o  G' Z
  415. #define  RCC_APB2ENR_SDIOEN                  ((uint32_t)0x00000800)
    8 d: |3 g3 P2 ~
  416. #define  RCC_APB2ENR_SPI1EN                  ((uint32_t)0x00001000)+ A/ s9 ~9 l- u* F( o
  417. #define  RCC_APB2ENR_SPI4EN                  ((uint32_t)0x00002000)
    $ g5 S$ t+ c6 {# J, e% |! P
  418. #define  RCC_APB2ENR_SYSCFGEN                ((uint32_t)0x00004000)5 P/ x7 S5 n9 Q7 A" j
  419. #define  RCC_APB2ENR_EXTIEN                  ((uint32_t)0x00008000)( |' U! A$ v1 m- T  {
  420. #define  RCC_APB2ENR_TIM9EN                  ((uint32_t)0x00010000)0 ?5 J! b0 M% f& j8 W4 Z
  421. #define  RCC_APB2ENR_TIM10EN                 ((uint32_t)0x00020000)
    / R5 b2 t8 X. z5 P& x  R$ S% L! p7 B8 B
  422. #define  RCC_APB2ENR_TIM11EN                 ((uint32_t)0x00040000)
    0 ^1 \$ a# S8 j9 Q  U3 l
  423. #define  RCC_APB2ENR_SPI5EN                  ((uint32_t)0x00100000)% [. Y4 t( a& E9 ^. r% j
  424. #define  RCC_APB2ENR_SPI6EN                  ((uint32_t)0x00200000)* m2 _0 h# U! ]6 V/ q$ W
  425. #define  RCC_APB2ENR_SAI1EN                  ((uint32_t)0x00400000)9 d2 H: u6 L( N6 f9 V) m% |# \1 ?
  426. #if defined(STM32F446xx)& ]: d* n- m' G, N% L
  427. #define  RCC_APB2ENR_SAI2EN                  ((uint32_t)0x00800000). _2 S0 B# S7 m2 H
  428. #endif /* STM32F446xx */4 V1 |5 F: p( X) h' n
  429. #define  RCC_APB2ENR_LTDCEN                  ((uint32_t)0x04000000)" W1 B/ Q& q: o
  430. #if defined(STM32F469_479xx)' _$ U9 h. i; H2 n/ x! {0 h
  431. #define  RCC_APB2ENR_DSIEN                   ((uint32_t)0x08000000)
      S: ^; s; L9 T8 `/ [+ h
  432. #endif /* STM32F469_479xx */
    & D0 d# ^7 w! i" i
  433. #if defined(STM32F412xG) || defined(STM32F413_423xx)$ B: d6 E0 f" A0 ?; @
  434. #define  RCC_APB2ENR_DFSDM1EN                ((uint32_t)0x01000000)
    # U" |9 ^7 J" I. n3 p
  435. #endif /* STM32F412xG || STM32F413_423xx *// S; m- Z7 m& f' h/ D5 f$ _* S7 z
  436. #if defined(STM32F413_423xx)
    + z! e1 ~; i! S+ ^
  437. #define  RCC_APB2ENR_DFSDM2EN                ((uint32_t)0x02000000)
    ( Z4 ?" A5 D. N# ?/ w
  438. #endif /* STM32F413_423xx */
    0 @8 z" l" j2 O' z: x* c4 k# v- }
  439. /********************  Bit definition for RCC_AHB1LPENR register  *************/
    ( ?# K$ @' U. _( ]$ Y& O2 n
  440. #define  RCC_AHB1LPENR_GPIOALPEN             ((uint32_t)0x00000001)$ _7 f: j2 ^; q5 `0 w; ?7 ^
  441. #define  RCC_AHB1LPENR_GPIOBLPEN             ((uint32_t)0x00000002)6 ^1 `  D  v2 r
  442. #define  RCC_AHB1LPENR_GPIOCLPEN             ((uint32_t)0x00000004)- Z- F* f1 Z: L2 f
  443. #define  RCC_AHB1LPENR_GPIODLPEN             ((uint32_t)0x00000008)- n0 n7 }9 M/ d
  444. #define  RCC_AHB1LPENR_GPIOELPEN             ((uint32_t)0x00000010)* C. E) P- S4 s8 |' ?1 E* r
  445. #define  RCC_AHB1LPENR_GPIOFLPEN             ((uint32_t)0x00000020)
    , C& V+ t1 ~1 K1 Z$ b6 m
  446. #define  RCC_AHB1LPENR_GPIOGLPEN             ((uint32_t)0x00000040)( S4 S: s, \0 o
  447. #define  RCC_AHB1LPENR_GPIOHLPEN             ((uint32_t)0x00000080)
    7 m# f2 c1 [2 \; ^  M
  448. #define  RCC_AHB1LPENR_GPIOILPEN             ((uint32_t)0x00000100)
    7 ~) H: Y/ g  |7 A% B3 ]- ^
  449. #define  RCC_AHB1LPENR_GPIOJLPEN             ((uint32_t)0x00000200)
    " ]+ a. `2 l2 k/ X* {& i5 b3 K, E
  450. #define  RCC_AHB1LPENR_GPIOKLPEN             ((uint32_t)0x00000400)0 O/ I2 r) E9 L0 y5 v( o1 j
  451. #define  RCC_AHB1LPENR_CRCLPEN               ((uint32_t)0x00001000)+ H  G  D4 k; W& b
  452. #define  RCC_AHB1LPENR_FLITFLPEN             ((uint32_t)0x00008000)* o% f. P! ^9 L2 K  B" d) G
  453. #define  RCC_AHB1LPENR_SRAM1LPEN             ((uint32_t)0x00010000)
    . C4 M; K% Y+ x! k7 e# N1 D% C: _
  454. #define  RCC_AHB1LPENR_SRAM2LPEN             ((uint32_t)0x00020000)/ p2 Q% r' D2 U6 ^: b6 |3 n
  455. #define  RCC_AHB1LPENR_BKPSRAMLPEN           ((uint32_t)0x00040000)
    & q2 b$ ^  U# _5 a& @: h
  456. #define  RCC_AHB1LPENR_SRAM3LPEN             ((uint32_t)0x00080000)( ~2 T8 O$ I/ M% D/ [
  457. #define  RCC_AHB1LPENR_DMA1LPEN              ((uint32_t)0x00200000)! y( y  a( F6 D8 L+ C( @
  458. #define  RCC_AHB1LPENR_DMA2LPEN              ((uint32_t)0x00400000)$ i2 ^  M: {' b
  459. #define  RCC_AHB1LPENR_DMA2DLPEN             ((uint32_t)0x00800000)
    5 I, H9 Q% Y6 A( q
  460. #define  RCC_AHB1LPENR_ETHMACLPEN            ((uint32_t)0x02000000)
    6 n4 q( k3 M5 K- @: ~
  461. #define  RCC_AHB1LPENR_ETHMACTXLPEN          ((uint32_t)0x04000000)
    8 e" M* e+ }, P4 W+ ^
  462. #define  RCC_AHB1LPENR_ETHMACRXLPEN          ((uint32_t)0x08000000)
    1 t' X( e  G4 Z
  463. #define  RCC_AHB1LPENR_ETHMACPTPLPEN         ((uint32_t)0x10000000)( L) \" ^- x( z6 [- i  G% o- p4 n! b
  464. #define  RCC_AHB1LPENR_OTGHSLPEN             ((uint32_t)0x20000000)
    * W* w6 t3 `, f* [& R& W: I' `
  465. #define  RCC_AHB1LPENR_OTGHSULPILPEN         ((uint32_t)0x40000000)
    & r$ Z! B/ f+ l0 ~4 v1 f; N( l

  466. 1 O. K* H" I: A- R% r$ `+ Z
  467. /********************  Bit definition for RCC_AHB2LPENR register  *************/
    % m7 M% \) K" v1 y
  468. #define  RCC_AHB2LPENR_DCMILPEN              ((uint32_t)0x00000001)
    4 X. k2 x7 J( B; e+ H* E  O
  469. #define  RCC_AHB2LPENR_CRYPLPEN              ((uint32_t)0x00000010)8 P* [4 y# t7 T1 h: K, b2 }
  470. #define  RCC_AHB2LPENR_HASHLPEN              ((uint32_t)0x00000020)
    $ L6 J9 M. P" w$ V* z3 Q
  471. #define  RCC_AHB2LPENR_RNGLPEN               ((uint32_t)0x00000040)5 E5 T" n6 u4 B. {+ N
  472. #define  RCC_AHB2LPENR_OTGFSLPEN             ((uint32_t)0x00000080)2 A; n) {& G9 @

  473. 9 m# t4 G1 N# }2 v
  474. /********************  Bit definition for RCC_AHB3LPENR register  *************/
    5 i$ l: m9 D5 R$ Q% n
  475. #if defined(STM32F40_41xxx) || defined(STM32F412xG) || defined(STM32F413_423xx)
    % J+ o  M5 n4 W  k. Z! u
  476. #define  RCC_AHB3LPENR_FSMCLPEN              ((uint32_t)0x00000001)
    8 P$ R' n9 O! p0 S3 j$ Y
  477. #endif /* STM32F40_41xxx || STM32F412xG || STM32F413_423xx */4 @* m4 j, V6 Q
  478. 5 }! U: w: l9 W# n' @; Z  \
  479. #if defined(STM32F427_437xx) || defined(STM32F429_439xx) || defined(STM32F446xx) || defined(STM32F469_479xx). z* ^) y# e* k3 s$ I, `; H
  480. #define  RCC_AHB3LPENR_FMCLPEN              ((uint32_t)0x00000001)
    ( j6 x5 t7 W& g- y6 N: x
  481. #endif /* STM32F427_437xx ||  STM32F429_439xx  || STM32F446xx || STM32F469_479xx */9 o" Y8 z, q) q" s1 C
  482. #if defined(STM32F412xG) || defined(STM32F413_423xx) || defined(STM32F446xx) || defined(STM32F469_479xx)
    - y! }* k1 m  ?: F" {# g4 [) [7 `2 [
  483. #define  RCC_AHB3LPENR_QSPILPEN             ((uint32_t)0x00000002)
      b& V( d3 a- m5 n0 X3 d6 \
  484. #endif /* STM32F412xG || STM32F413_423xx || STM32F469_479xx || STM32F446xx */
    ) L4 T( H& Q! l4 W/ A, M

  485. ( b+ `1 P; u' H, S0 ~9 M5 J8 k
  486. /********************  Bit definition for RCC_APB1LPENR register  *************/
    ) X8 [( P6 x' z+ d6 z5 A4 U
  487. #define  RCC_APB1LPENR_TIM2LPEN              ((uint32_t)0x00000001)
    * v- ]  `2 r- S
  488. #define  RCC_APB1LPENR_TIM3LPEN              ((uint32_t)0x00000002)# U. n, {2 p3 s! b
  489. #define  RCC_APB1LPENR_TIM4LPEN              ((uint32_t)0x00000004); L1 R/ i) U0 P6 z7 y; h% O: ~4 f
  490. #define  RCC_APB1LPENR_TIM5LPEN              ((uint32_t)0x00000008)
    0 o9 }  F# N: @0 {  ~5 Q
  491. #define  RCC_APB1LPENR_TIM6LPEN              ((uint32_t)0x00000010): f6 ~5 Y# @; a3 ~3 _
  492. #define  RCC_APB1LPENR_TIM7LPEN              ((uint32_t)0x00000020), D) k2 v- O3 ?7 o2 Y, E# U
  493. #define  RCC_APB1LPENR_TIM12LPEN             ((uint32_t)0x00000040). Y3 s9 Y- d* ~4 C
  494. #define  RCC_APB1LPENR_TIM13LPEN             ((uint32_t)0x00000080)
    ! h5 o+ c( L% {+ ]$ b: j
  495. #define  RCC_APB1LPENR_TIM14LPEN             ((uint32_t)0x00000100)+ F* o' Y0 y  g7 R
  496. #if defined(STM32F410xx) || defined(STM32F413_423xx). O1 V0 ?% N# s2 z# j
  497. #define  RCC_APB1LPENR_LPTIM1LPEN            ((uint32_t)0x00000200)4 X: S3 I3 B* U2 b9 S
  498. #endif /* STM32F410xx || STM32F413_423xx */
    , H8 b; W0 O. f, Y6 C
  499. #define  RCC_APB1LPENR_WWDGLPEN              ((uint32_t)0x00000800). B* d- H6 m( O$ W- d( p
  500. #define  RCC_APB1LPENR_SPI2LPEN              ((uint32_t)0x00004000)
    $ K2 e( j; B7 H: m( [% T* z+ B% n2 `
  501. #define  RCC_APB1LPENR_SPI3LPEN              ((uint32_t)0x00008000)1 e9 ^. F( p3 K7 [* r6 x- B
  502. #if defined(STM32F446xx)
    6 q3 q9 }3 e, @$ E" a; N- P# O2 L
  503. #define  RCC_APB1LPENR_SPDIFRXLPEN           ((uint32_t)0x00010000)
    5 d/ m& a2 [5 S, Z( ]
  504. #endif /* STM32F446xx */
    / a) _8 t, o, c6 k* I' ?
  505. #define  RCC_APB1LPENR_USART2LPEN            ((uint32_t)0x00020000)
      R: ]; P0 ~# \7 M( l! t
  506. #define  RCC_APB1LPENR_USART3LPEN            ((uint32_t)0x00040000)
      g* J1 S* t& G: U4 `
  507. #define  RCC_APB1LPENR_UART4LPEN             ((uint32_t)0x00080000)! p$ Z' V( M: j, C, }# e2 S* J; Z
  508. #define  RCC_APB1LPENR_UART5LPEN             ((uint32_t)0x00100000)/ j# v$ `4 [8 D" e4 q: m% ?
  509. #define  RCC_APB1LPENR_I2C1LPEN              ((uint32_t)0x00200000)# ?) U0 y0 [4 T
  510. #define  RCC_APB1LPENR_I2C2LPEN              ((uint32_t)0x00400000)8 A8 v! ^# t. W4 K, Y; R
  511. #define  RCC_APB1LPENR_I2C3LPEN              ((uint32_t)0x00800000)
    1 ^6 R. X& W! a9 Y! E
  512. #if defined(STM32F410xx) || defined(STM32F412xG) || defined(STM32F413_423xx) || defined(STM32F446xx)
    7 w  P, H+ I+ Y6 L/ j0 {4 q) O# r
  513. #define  RCC_APB1LPENR_FMPI2C1LPEN           ((uint32_t)0x01000000)
    ( S3 q) i3 O1 {
  514. #endif /* STM32F410xx || STM32F412xG || STM32F413_423xx || STM32F446xx */
    8 Y, h! Z2 n& b0 N. J9 |  ?' s1 ^
  515. #define  RCC_APB1LPENR_CAN1LPEN              ((uint32_t)0x02000000)
    - K% E  I( Y. [5 L, \
  516. #define  RCC_APB1LPENR_CAN2LPEN              ((uint32_t)0x04000000)
    & i& g! e1 P& _+ {  |% ]$ D# e
  517. #if defined(STM32F446xx)8 d0 f5 J! r9 F
  518. #define  RCC_APB1LPENR_CECLPEN               ((uint32_t)0x08000000)1 s, x0 t1 c! d
  519. #endif /* STM32F446xx */0 M! a) _& |7 Y3 R9 o" H2 `
  520. #define  RCC_APB1LPENR_PWRLPEN               ((uint32_t)0x10000000)5 _( `( p- B* j1 ?8 C
  521. #define  RCC_APB1LPENR_DACLPEN               ((uint32_t)0x20000000)' `4 }3 ?4 ~6 S" x9 c
  522. #define  RCC_APB1LPENR_UART7LPEN             ((uint32_t)0x40000000)
    " z' s# w  ~$ B( q. @. e
  523. #define  RCC_APB1LPENR_UART8LPEN             ((uint32_t)0x80000000)
    8 g( d1 k7 w& H- G7 @0 r1 k- K

  524. ) L6 b& B1 t$ J
  525. /********************  Bit definition for RCC_APB2LPENR register  *************/8 t1 ^/ H# T* K  f
  526. #define  RCC_APB2LPENR_TIM1LPEN              ((uint32_t)0x00000001)
    ( ~" C' Y7 Z. }  U3 C
  527. #define  RCC_APB2LPENR_TIM8LPEN              ((uint32_t)0x00000002)! G! u' n% U( r* l' f' K% o6 i! F2 o
  528. #define  RCC_APB2LPENR_USART1LPEN            ((uint32_t)0x00000010)# x% M: A5 a/ ^) V0 N3 c5 q
  529. #define  RCC_APB2LPENR_USART6LPEN            ((uint32_t)0x00000020)
    8 P5 ]4 m' o  X2 ~' g1 w' p
  530. #define  RCC_APB2LPENR_UART9LPEN             ((uint32_t)0x00000040), v( A9 Y9 Y1 g6 F5 c/ [% H; x2 ^
  531. #define  RCC_APB2LPENR_UART10LPEN            ((uint32_t)0x00000080)
    9 z" L; \6 n% ]* J+ s6 ?3 \
  532. #define  RCC_APB2LPENR_ADC1LPEN              ((uint32_t)0x00000100)
    * |" Q4 c: C9 Y2 n# s$ D2 g; V$ v
  533. #define  RCC_APB2LPENR_ADC2PEN               ((uint32_t)0x00000200)
    5 q0 _  r  u' N( |6 C
  534. #define  RCC_APB2LPENR_ADC3LPEN              ((uint32_t)0x00000400)
      V) p% t1 H5 ?2 j6 [
  535. #define  RCC_APB2LPENR_SDIOLPEN              ((uint32_t)0x00000800)% S% m: W( [5 Z. _" c# u0 v3 M
  536. #define  RCC_APB2LPENR_SPI1LPEN              ((uint32_t)0x00001000), }4 G3 l2 Y* a+ a; j, c
  537. #define  RCC_APB2LPENR_SPI4LPEN              ((uint32_t)0x00002000)4 _  }: Z" q5 H% l. l% W
  538. #define  RCC_APB2LPENR_SYSCFGLPEN            ((uint32_t)0x00004000)
    ( \" F" u: C, ?& ^3 c) G
  539. #define  RCC_APB2LPENR_TIM9LPEN              ((uint32_t)0x00010000)
    8 G' e& u" C) s  d4 N/ u/ J  Z
  540. #define  RCC_APB2LPENR_TIM10LPEN             ((uint32_t)0x00020000)# V! l4 A/ k6 M3 l  v
  541. #define  RCC_APB2LPENR_TIM11LPEN             ((uint32_t)0x00040000)
    ( y) \% q" j3 F: r( o5 D2 Y& _  }3 q
  542. #define  RCC_APB2LPENR_SPI5LPEN              ((uint32_t)0x00100000)) d% g" {! a/ M4 o; c
  543. #define  RCC_APB2LPENR_SPI6LPEN              ((uint32_t)0x00200000)1 J  ]3 Z0 I" n$ L% B2 O
  544. #define  RCC_APB2LPENR_SAI1LPEN              ((uint32_t)0x00400000)' m4 D% Z  M: {/ }& W* D
  545. #if defined(STM32F446xx)
    ' S4 |: a7 }- F5 A" ]# q/ X; l, z' \
  546. #define  RCC_APB2LPENR_SAI2LPEN              ((uint32_t)0x00800000)7 t7 g. N% F5 ~
  547. #endif /* STM32F446xx */
    $ i- M/ l3 L7 j/ @( n0 b/ I
  548. #define  RCC_APB2LPENR_LTDCLPEN              ((uint32_t)0x04000000)3 N9 K5 q7 P$ p
  549. #if defined(STM32F469_479xx)9 f" _+ l3 p" |& h
  550. #define  RCC_APB2LPENR_DSILPEN               ((uint32_t)0x08000000)+ a( c: g8 n% g- y& m- ^+ K" q
  551. #endif /* STM32F469_479xx */
    : v( C5 C* b, T- P$ ]( K
  552. #if defined(STM32F412xG) || defined(STM32F413_423xx)
    $ ~: D7 r6 D: r0 H& k
  553. #define  RCC_APB2LPENR_DFSDM1LPEN            ((uint32_t)0x01000000)
    5 h0 t& u1 L* C+ q4 z. i  \/ z
  554. #endif /* STM32F412xG || STM32F413_423xx */, u" G8 C. y. E; |" q
  555. #if defined(STM32F413_423xx)# u! x) j1 L* E6 v  x, r5 G
  556. #define  RCC_APB2LPENR_DFSDM2LPEN            ((uint32_t)0x02000000). Z" `( _0 r& `. R
  557. #endif /* STM32F413_423xx */8 I+ r4 T, J- C6 b8 S8 W

  558. 3 ?( Y6 w7 w  i! A* `+ V
  559. /********************  Bit definition for RCC_BDCR register  ******************/
    + G* X8 ^  ?+ _( s6 O
  560. #define  RCC_BDCR_LSEON                      ((uint32_t)0x00000001)
    . |* d5 w6 {$ p/ r* W7 A
  561. #define  RCC_BDCR_LSERDY                     ((uint32_t)0x00000002)2 N: H: @0 ^5 L6 A7 Q7 e
  562. #define  RCC_BDCR_LSEBYP                     ((uint32_t)0x00000004)
    4 K# v- F1 [+ h' F6 I& s" o
  563. #define  RCC_BDCR_LSEMOD                     ((uint32_t)0x00000008)
    - p1 b( S" g0 R4 V/ _0 G7 C
  564. ! Z% M6 M6 h' a% y) `
  565. #define  RCC_BDCR_RTCSEL                    ((uint32_t)0x00000300)
    + h) ^# `  n* T+ m+ p
  566. #define  RCC_BDCR_RTCSEL_0                  ((uint32_t)0x00000100). U' ^" B8 k& f+ ]
  567. #define  RCC_BDCR_RTCSEL_1                  ((uint32_t)0x00000200)$ K+ B3 d$ ~) G1 m" }5 M

  568. 1 {; P/ [* |; C2 f, C2 z8 f
  569. #define  RCC_BDCR_RTCEN                      ((uint32_t)0x00008000)8 x2 B% B( G+ u( J( ?0 P* F" A
  570. #define  RCC_BDCR_BDRST                      ((uint32_t)0x00010000)$ S6 i0 b; z2 c3 @" d5 t6 H5 l+ a
  571. 7 m2 w6 b! x7 ~# a8 N9 W6 ~
  572. /********************  Bit definition for RCC_CSR register  *******************/
    + X+ P3 e& X, k- `/ U9 c8 s
  573. #define  RCC_CSR_LSION                       ((uint32_t)0x00000001)
    ; @1 I# G+ A, |* d
  574. #define  RCC_CSR_LSIRDY                      ((uint32_t)0x00000002): j' t7 |1 U. H, Y( r! S) b
  575. #define  RCC_CSR_RMVF                        ((uint32_t)0x01000000)
    4 v- z& e" q+ t9 p0 m* u1 H0 [
  576. #define  RCC_CSR_BORRSTF                     ((uint32_t)0x02000000)
    7 r- D$ b2 R4 m" K) ]$ ^$ \& y# M; \+ I9 N
  577. #define  RCC_CSR_PADRSTF                     ((uint32_t)0x04000000)
    ) P  C* O2 m/ e9 `/ ]
  578. #define  RCC_CSR_PORRSTF                     ((uint32_t)0x08000000)! j3 M* Y- |; U4 ^: Z5 b" p3 j
  579. #define  RCC_CSR_SFTRSTF                     ((uint32_t)0x10000000)
    % x, K* C! b! u; N2 X1 K& w9 `
  580. #define  RCC_CSR_WDGRSTF                     ((uint32_t)0x20000000)4 D4 ?- v$ x' G
  581. #define  RCC_CSR_WWDGRSTF                    ((uint32_t)0x40000000)7 @/ R' Z  g8 C( H% o6 Y
  582. #define  RCC_CSR_LPWRRSTF                    ((uint32_t)0x80000000)
    & ~1 ], ?6 T( U2 X4 m  n

  583.   W  [' l: W9 L# W+ S& W
  584. /********************  Bit definition for RCC_SSCGR register  *****************/7 Q3 |! v- d& E
  585. #define  RCC_SSCGR_MODPER                    ((uint32_t)0x00001FFF)
    + T8 s7 C- @% k! _( u9 m
  586. #define  RCC_SSCGR_INCSTEP                   ((uint32_t)0x0FFFE000)6 G* a& _2 X$ z' n( W+ [) c: o1 |
  587. #define  RCC_SSCGR_SPREADSEL                 ((uint32_t)0x40000000)
    2 O/ c) L8 [2 y# H
  588. #define  RCC_SSCGR_SSCGEN                    ((uint32_t)0x80000000)
      S/ J9 |! V4 [) g- _3 \. i( U

  589. . M1 ]& b6 E6 f' h% P
  590. /********************  Bit definition for RCC_PLLI2SCFGR register  ************/
    . q! ]' M2 c: T5 E; J
  591. #define  RCC_PLLI2SCFGR_PLLI2SM              ((uint32_t)0x0000003F)
    + V* a' x3 U4 ~/ W; F, D
  592. #define  RCC_PLLI2SCFGR_PLLI2SM_0            ((uint32_t)0x00000001)8 R5 r3 g- |4 P$ @$ l4 ^
  593. #define  RCC_PLLI2SCFGR_PLLI2SM_1            ((uint32_t)0x00000002). Q  b9 e( [0 `+ V
  594. #define  RCC_PLLI2SCFGR_PLLI2SM_2            ((uint32_t)0x00000004)
    8 \  w2 s4 m6 [9 m. X, J
  595. #define  RCC_PLLI2SCFGR_PLLI2SM_3            ((uint32_t)0x00000008)
    8 P3 s, v5 I/ |/ m6 J
  596. #define  RCC_PLLI2SCFGR_PLLI2SM_4            ((uint32_t)0x00000010)
    $ m  `% n1 T0 s& @4 a
  597. #define  RCC_PLLI2SCFGR_PLLI2SM_5            ((uint32_t)0x00000020)
    # `4 _2 q* d& |

  598. , L! t. p2 }- N% U4 l
  599. #define  RCC_PLLI2SCFGR_PLLI2SN              ((uint32_t)0x00007FC0)
    5 z4 d8 t% Z3 F4 c+ J0 C) \
  600. #define  RCC_PLLI2SCFGR_PLLI2SN_0            ((uint32_t)0x00000040)  ~- B8 {: j8 b* j' [5 |
  601. #define  RCC_PLLI2SCFGR_PLLI2SN_1            ((uint32_t)0x00000080). d6 j) r9 f; B, t, f1 V1 ~
  602. #define  RCC_PLLI2SCFGR_PLLI2SN_2            ((uint32_t)0x00000100)& b4 T' `1 q. N
  603. #define  RCC_PLLI2SCFGR_PLLI2SN_3            ((uint32_t)0x00000200)
    : t, Q2 `! ]7 l/ d( j
  604. #define  RCC_PLLI2SCFGR_PLLI2SN_4            ((uint32_t)0x00000400)& X6 b9 G, w3 O
  605. #define  RCC_PLLI2SCFGR_PLLI2SN_5            ((uint32_t)0x00000800)1 u) X3 Z3 e9 q. n
  606. #define  RCC_PLLI2SCFGR_PLLI2SN_6            ((uint32_t)0x00001000)
    6 D* x3 [! {" k; x6 Q
  607. #define  RCC_PLLI2SCFGR_PLLI2SN_7            ((uint32_t)0x00002000)
    8 k) C+ m/ R) ~' e+ z. K7 f
  608. #define  RCC_PLLI2SCFGR_PLLI2SN_8            ((uint32_t)0x00004000)* ~5 \  W# a" q8 ]" M! D' Z9 a
  609. + G% h) n7 ^# o! P, t# {
  610. #if defined(STM32F412xG) || defined(STM32F413_423xx)
    3 k8 J. u% I; k
  611. #define  RCC_PLLI2SCFGR_PLLI2SSRC            ((uint32_t)0x00400000)
    3 `' p% o, Z- U6 W0 j) h+ o
  612. #endif /* STM32F412xG || STM32F413_423xx */
      V% G; Y6 D+ b1 l; [: F
  613. ! P; O9 j% y# n* Z5 S; @
  614. #if defined(STM32F446xx)
    % Y6 h  g5 H, N4 V- F* x: R% C+ _
  615. #define  RCC_PLLI2SCFGR_PLLI2SP              ((uint32_t)0x00030000)
    ; o$ i! f9 f3 |8 [# H: V) O
  616. #define  RCC_PLLI2SCFGR_PLLI2SP_0            ((uint32_t)0x00010000)
    0 n  |5 m3 o) ?3 x5 W) M
  617. #define  RCC_PLLI2SCFGR_PLLI2SP_1            ((uint32_t)0x00020000)1 H# w- i8 T2 ]. f/ M0 m/ Z
  618. #endif /* STM32F446xx */
    ; w1 C- y" Y9 D  x: n5 G" h% ^- d0 Z

  619. ) [7 t- J! ^3 w$ o' Y& b
  620. #define  RCC_PLLI2SCFGR_PLLI2SQ              ((uint32_t)0x0F000000)
    9 t/ q/ b: Y3 c) j
  621. #define  RCC_PLLI2SCFGR_PLLI2SQ_0            ((uint32_t)0x01000000)2 D4 m  V' d" ]
  622. #define  RCC_PLLI2SCFGR_PLLI2SQ_1            ((uint32_t)0x02000000)* B% F( @8 V% ^- G
  623. #define  RCC_PLLI2SCFGR_PLLI2SQ_2            ((uint32_t)0x04000000)5 @' \. n0 I) C" K7 z- L6 n
  624. #define  RCC_PLLI2SCFGR_PLLI2SQ_3            ((uint32_t)0x08000000)
    " x( p5 P- ^5 W2 u/ P9 ~  h

  625. . P3 T1 L( ~+ f1 B# g$ i- k' C, u
  626. #define  RCC_PLLI2SCFGR_PLLI2SR              ((uint32_t)0x70000000)
    5 w- K# n9 f7 |
  627. #define  RCC_PLLI2SCFGR_PLLI2SR_0            ((uint32_t)0x10000000)
    # w0 t0 H" G3 W3 X* U' F7 {9 b9 y
  628. #define  RCC_PLLI2SCFGR_PLLI2SR_1            ((uint32_t)0x20000000)6 k! O# i% K% ?3 Z6 J0 l+ S
  629. #define  RCC_PLLI2SCFGR_PLLI2SR_2            ((uint32_t)0x40000000). i' M5 ~$ ^- x% K2 K6 l
  630. ) J8 D+ t  l3 }
  631. /********************  Bit definition for RCC_PLLSAICFGR register  ************/
    $ B% T9 n$ N0 |  j
  632. #if defined(STM32F446xx)  H' \: A6 _; y9 B# T% E9 q
  633. #define  RCC_PLLSAICFGR_PLLSAIM              ((uint32_t)0x0000003F)( @" Y$ x/ I7 m6 ~+ M2 a
  634. #define  RCC_PLLSAICFGR_PLLSAIM_0            ((uint32_t)0x00000001)5 b- l8 I" b- q8 n2 U' M0 C
  635. #define  RCC_PLLSAICFGR_PLLSAIM_1            ((uint32_t)0x00000002)
      |+ F; X& g' @& O  H3 D: ^
  636. #define  RCC_PLLSAICFGR_PLLSAIM_2            ((uint32_t)0x00000004)
    , l. t8 P! X# _& B
  637. #define  RCC_PLLSAICFGR_PLLSAIM_3            ((uint32_t)0x00000008)
    * q; t2 s* z) z0 A, U) e2 Q+ N  @
  638. #define  RCC_PLLSAICFGR_PLLSAIM_4            ((uint32_t)0x00000010)
    3 L- w1 f' F' w) f1 Y- \
  639. #define  RCC_PLLSAICFGR_PLLSAIM_5            ((uint32_t)0x00000020)
    7 `7 ^- {9 T, H
  640. #endif /* STM32F446xx */
    9 u. z" D5 ?4 K5 M$ o% z! u) D
  641. 1 ~) c/ p: G5 |1 G' V! N
  642. #define  RCC_PLLSAICFGR_PLLSAIN              ((uint32_t)0x00007FC0)0 I& u. R+ f  Y% F3 [7 h
  643. #define  RCC_PLLSAICFGR_PLLSAIN_0            ((uint32_t)0x00000040)8 X- T2 _$ i) e6 I2 M- y" V$ H
  644. #define  RCC_PLLSAICFGR_PLLSAIN_1            ((uint32_t)0x00000080)
    5 E! a/ j: I8 l# L$ ]
  645. #define  RCC_PLLSAICFGR_PLLSAIN_2            ((uint32_t)0x00000100)
      Z3 |7 ?0 Q: s2 R; {$ w2 U, B# j
  646. #define  RCC_PLLSAICFGR_PLLSAIN_3            ((uint32_t)0x00000200)
    ; M8 W9 c& H& R! E, h
  647. #define  RCC_PLLSAICFGR_PLLSAIN_4            ((uint32_t)0x00000400), c& i  C0 c. U& l+ }
  648. #define  RCC_PLLSAICFGR_PLLSAIN_5            ((uint32_t)0x00000800)
    * Q2 {, Q2 Z  A3 ]' S0 k' W
  649. #define  RCC_PLLSAICFGR_PLLSAIN_6            ((uint32_t)0x00001000)
    5 H/ C( J9 o) D% y9 C
  650. #define  RCC_PLLSAICFGR_PLLSAIN_7            ((uint32_t)0x00002000)
    , O, J* V2 |# h' L
  651. #define  RCC_PLLSAICFGR_PLLSAIN_8            ((uint32_t)0x00004000)4 e" C* i" C5 u

  652. 0 f8 D/ P3 f& i( L- W, Y: Q# R$ y
  653. #if defined(STM32F446xx) || defined(STM32F469_479xx)  
    9 U6 D4 m; |$ |5 {. O6 }
  654. #define  RCC_PLLSAICFGR_PLLSAIP              ((uint32_t)0x00030000)" r1 j, q: V( O# ~( n  }
  655. #define  RCC_PLLSAICFGR_PLLSAIP_0            ((uint32_t)0x00010000)
    % A( V* Y7 G; P" f1 Y! T( Z
  656. #define  RCC_PLLSAICFGR_PLLSAIP_1            ((uint32_t)0x00020000)9 s9 |. o8 S2 v& e9 d0 p
  657. #endif /* STM32F446xx || STM32F469_479xx */
    1 ^( q: k$ {, ?
  658. 9 X! U/ p% Q# i7 `2 q2 y
  659. #define  RCC_PLLSAICFGR_PLLSAIQ              ((uint32_t)0x0F000000)
    5 S! |: p! |" ?+ b
  660. #define  RCC_PLLSAICFGR_PLLSAIQ_0            ((uint32_t)0x01000000)
    $ H; V; N' U8 ]3 b
  661. #define  RCC_PLLSAICFGR_PLLSAIQ_1            ((uint32_t)0x02000000)# j. q: k: m' j$ W; Z; k) c0 c( D
  662. #define  RCC_PLLSAICFGR_PLLSAIQ_2            ((uint32_t)0x04000000)5 n: A" P! H$ a+ O, ^5 y
  663. #define  RCC_PLLSAICFGR_PLLSAIQ_3            ((uint32_t)0x08000000)
    2 }9 A9 G0 D- [" q
  664. " Q9 Y3 {, ~# \$ V
  665. #define  RCC_PLLSAICFGR_PLLSAIR              ((uint32_t)0x70000000)2 t2 x. C) M4 z/ \8 a) W
  666. #define  RCC_PLLSAICFGR_PLLSAIR_0            ((uint32_t)0x10000000)
    7 B$ e% r" {3 Y
  667. #define  RCC_PLLSAICFGR_PLLSAIR_1            ((uint32_t)0x20000000)
    5 |. P6 x; s9 _
  668. #define  RCC_PLLSAICFGR_PLLSAIR_2            ((uint32_t)0x40000000)
    . m( {; }% }% S. n
  669. * d& S+ s- L& O' P
  670. /********************  Bit definition for RCC_DCKCFGR register  ***************/
    & c' U$ `- c" @+ `9 L2 _5 M
  671. #define  RCC_DCKCFGR_PLLI2SDIVQ              ((uint32_t)0x0000001F)
    6 K9 o5 j. ?; b5 T* |
  672. #define  RCC_DCKCFGR_PLLSAIDIVQ              ((uint32_t)0x00001F00)0 o# H. F) L2 v* }- v7 p& ]1 q
  673. #define  RCC_DCKCFGR_PLLSAIDIVR              ((uint32_t)0x00030000)
    $ d/ _, ?8 G' W8 v- r6 }8 w0 q

  674. ( V, M, {: x9 f& ?, {, y1 d7 O
  675. #if defined(STM32F412xG) || defined(STM32F413_423xx)
    0 V9 w1 T+ V0 t  d; i4 `# F
  676. #define  RCC_DCKCFGR_CKDFSDM1SEL             ((uint32_t)0x80000000)
    6 k+ |5 ^7 v% B3 {
  677. #define  RCC_DCKCFGR_CKDFSDM1ASEL            ((uint32_t)0x00008000)* ~. Q" G4 e4 y) S
  678. #endif /* STM32F412xG || STM32F413_423xx */& g/ J1 ?. {1 N% q8 g) T

  679. # o  X& r8 o8 V- f0 X
  680. #if defined(STM32F413_423xx)
    5 E% i$ u9 L4 C0 s: q
  681. #define  RCC_DCKCFGR_PLLI2SDIVR              ((uint32_t)0x0000001F)
    ' L2 C* Q; V6 k, G" a
  682. #define  RCC_DCKCFGR_PLLI2SDIVR_0            ((uint32_t)0x00000001)6 D( J  v$ C# {% h" v% M4 f3 k' \
  683. #define  RCC_DCKCFGR_PLLI2SDIVR_1            ((uint32_t)0x00000002)' w9 Z1 Z& N" ~+ B  b
  684. #define  RCC_DCKCFGR_PLLI2SDIVR_2            ((uint32_t)0x00000004)
      H+ H3 |# }! M& L. j+ z+ |
  685. #define  RCC_DCKCFGR_PLLI2SDIVR_3            ((uint32_t)0x00000008)6 I/ _& P3 [/ g; Q" {6 Q
  686. #define  RCC_DCKCFGR_PLLI2SDIVR_4            ((uint32_t)0x00000010)
      \1 K% A. P$ s  R. |

  687. 2 f( n- L3 P8 V3 p% y4 E6 c9 v
  688. #define  RCC_DCKCFGR_PLLDIVR                 ((uint32_t)0x00001F00)6 n9 ^0 r+ C0 N+ G3 T; o
  689. #define  RCC_DCKCFGR_PLLDIVR_0               ((uint32_t)0x00000100)$ {1 B. Q" }+ \2 w
  690. #define  RCC_DCKCFGR_PLLDIVR_1               ((uint32_t)0x00000200)2 z4 T5 {1 v/ ]9 O. q, ]+ x3 J
  691. #define  RCC_DCKCFGR_PLLDIVR_2               ((uint32_t)0x00000400)
    $ G% D8 G. ~8 z) v: D7 ~
  692. #define  RCC_DCKCFGR_PLLDIVR_3               ((uint32_t)0x00000800)- j9 P( R, g& d7 P
  693. #define  RCC_DCKCFGR_PLLDIVR_4               ((uint32_t)0x00001000)+ K8 D& ?5 M0 P
  694. #define  RCC_DCKCFGR_CKDFSDM2ASEL            ((uint32_t)0x00004000)
    : G: [. G, u6 P8 n) X/ V
  695. #endif /* STM32F413_423xx */( Z0 p1 O# f  F- ~, }

  696. 2 B- q  P, T* }0 O1 b
  697. #define  RCC_DCKCFGR_SAI1ASRC                ((uint32_t)0x00300000)& j) v3 y+ p$ I; Q% @5 R! E1 `# p
  698. #define  RCC_DCKCFGR_SAI1ASRC_0              ((uint32_t)0x00100000)
    ) t$ h$ i) e5 ^+ C# `: T, x
  699. #define  RCC_DCKCFGR_SAI1ASRC_1              ((uint32_t)0x00200000)
    3 a3 u; G% `& Y/ d( J# u* N
  700. #if defined(STM32F446xx)
    5 q: p' f+ x. ~* K
  701. #define  RCC_DCKCFGR_SAI1SRC                 ((uint32_t)0x00300000)
    ' q5 i$ ~% o/ F/ U
  702. #define  RCC_DCKCFGR_SAI1SRC_0               ((uint32_t)0x00100000)
    " M$ U) `7 ?2 d$ ^& ^
  703. #define  RCC_DCKCFGR_SAI1SRC_1               ((uint32_t)0x00200000)/ N' @6 r$ r5 M
  704. #endif /* STM32F446xx */' G9 }& Q3 I* c: x0 h/ T: R
  705. . e$ h% B1 R" s* C% |
  706. #define  RCC_DCKCFGR_SAI1BSRC                ((uint32_t)0x00C00000)" S5 O  m& G1 B
  707. #define  RCC_DCKCFGR_SAI1BSRC_0              ((uint32_t)0x00400000)
    ) N9 z. B- a: q- k+ H6 b; u8 i2 K
  708. #define  RCC_DCKCFGR_SAI1BSRC_1              ((uint32_t)0x00800000)
    . L( X& Y: i( L, E, R9 C
  709. #if defined(STM32F446xx)) o+ \; N. ?5 A& I( w' d
  710. #define  RCC_DCKCFGR_SAI2SRC                 ((uint32_t)0x00C00000)5 _- h% |" q0 s1 g) A
  711. #define  RCC_DCKCFGR_SAI2SRC_0               ((uint32_t)0x00400000)
    $ R- z# P/ w; B0 C
  712. #define  RCC_DCKCFGR_SAI2SRC_1               ((uint32_t)0x00800000)+ i" }. Z: S" B6 a
  713. #endif /* STM32F446xx */' ~  y* y2 {7 t' c  q  i
  714. 7 A% L6 A/ U7 k+ z
  715. #define  RCC_DCKCFGR_TIMPRE                  ((uint32_t)0x01000000)
    & C8 F; I' A# ^) F- a5 r3 t
  716. #if defined(STM32F469_479xx)
    ! h7 A$ D6 D  v+ z4 H8 x. S
  717. #define  RCC_DCKCFGR_CK48MSEL                ((uint32_t)0x08000000)
    ' l* ?& V7 y# V
  718. #define  RCC_DCKCFGR_SDIOSEL                 ((uint32_t)0x10000000)- T7 G& B, l+ y8 F+ |
  719. #define  RCC_DCKCFGR_DSISEL                  ((uint32_t)0x20000000)' S6 f  I) h( }4 o) z
  720. #endif /* STM32F469_479xx */
    : l' d, ~% E+ N3 R) v2 C. f! i" J
  721. ) N" }/ Y- N- z, J2 X) J
  722. #if defined(STM32F412xG) || defined(STM32F413_423xx) || defined(STM32F446xx)
    4 U2 D5 q# |9 t  F3 E5 u' l$ U
  723. #define  RCC_DCKCFGR_I2S1SRC                 ((uint32_t)0x06000000)
    ( |( a; R" R/ Y# y5 A
  724. #define  RCC_DCKCFGR_I2S1SRC_0               ((uint32_t)0x02000000)4 o' @& ]. T9 Y3 q- e
  725. #define  RCC_DCKCFGR_I2S1SRC_1               ((uint32_t)0x04000000), Y& ^( O' ?" U. Y
  726. #define  RCC_DCKCFGR_I2S2SRC                 ((uint32_t)0x18000000); @! V$ e; W( \4 a3 g6 V
  727. #define  RCC_DCKCFGR_I2S2SRC_0               ((uint32_t)0x08000000)
    5 E( |5 J9 N  ]+ H' |4 q  O) U
  728. #define  RCC_DCKCFGR_I2S2SRC_1               ((uint32_t)0x10000000)
    ' M0 s# b' x: {, z6 k$ @# M

  729.   {) K, q4 O* N. w! H- A
  730. /********************  Bit definition for RCC_CKGATENR register  ***************/3 |( C1 |1 @  X# r+ o
  731. #define  RCC_CKGATENR_AHB2APB1_CKEN          ((uint32_t)0x00000001)
    + I% V' e& {6 h4 s! p
  732. #define  RCC_CKGATENR_AHB2APB2_CKEN          ((uint32_t)0x00000002)
    6 B8 A& _! Z. M5 I8 N) w! N
  733. #define  RCC_CKGATENR_CM4DBG_CKEN            ((uint32_t)0x00000004)
    * x6 P" s1 s% X% I6 u! c
  734. #define  RCC_CKGATENR_SPARE_CKEN             ((uint32_t)0x00000008)
    " w7 y/ x! w3 T2 z: ?! P% j$ O
  735. #define  RCC_CKGATENR_SRAM_CKEN              ((uint32_t)0x00000010)
    / ]7 c, _8 G9 |, \1 i
  736. #define  RCC_CKGATENR_FLITF_CKEN             ((uint32_t)0x00000020)! \5 Q  I3 C9 L7 t; W' V) H
  737. #define  RCC_CKGATENR_RCC_CKEN               ((uint32_t)0x00000040)3 \3 Q" I' J# f0 e% }5 @: m5 T6 u
  738. #if defined(STM32F412xG) || defined(STM32F413_423xx)
    , Q% b5 O1 S6 {, [
  739. #define  RCC_CKGATENR_RCC_EVTCTL             ((uint32_t)0x00000080)
    + ~! b  \( |! y. ]) x1 T5 x- r
  740. #endif /* STM32F412xG || STM32F413_423xx */
    7 x3 R0 j3 s0 J+ V/ ~! R7 l. R
  741. 1 `- j4 o! h! {5 x( X
  742. /********************  Bit definition for RCC_DCKCFGR2 register  ***************/- t. s# H! W8 W
  743. #define  RCC_DCKCFGR2_FMPI2C1SEL             ((uint32_t)0x00C00000)
    " r8 p7 m) D+ G: T1 @5 b- A4 ^
  744. #define  RCC_DCKCFGR2_FMPI2C1SEL_0           ((uint32_t)0x00400000)! `. G5 V, g/ X, r) U
  745. #define  RCC_DCKCFGR2_FMPI2C1SEL_1           ((uint32_t)0x00800000)% ~! L2 V! j+ j
  746. #define  RCC_DCKCFGR2_CECSEL                 ((uint32_t)0x04000000)
    ! t# @5 v+ L7 \1 q2 l
  747. #define  RCC_DCKCFGR2_CK48MSEL               ((uint32_t)0x08000000)( [& G- t; L% V/ Q) L9 q
  748. #define  RCC_DCKCFGR2_SDIOSEL                ((uint32_t)0x10000000)
    / k9 |9 I0 v8 y$ O# d
  749. #if defined(STM32F446xx); W" D) ~& [' Q4 e' F6 F0 M, Q- P
  750. #define  RCC_DCKCFGR2_SPDIFRXSEL             ((uint32_t)0x20000000)
    4 E0 V8 n1 ?+ C% m* D! i5 U
  751. #endif /* STM32F446xx */
    3 y4 }, q5 ^  o" A. m9 d
  752. #if defined(STM32F413_423xx)
    4 B3 f! N2 D- i
  753. #define  RCC_DCKCFGR2_LPTIM1SEL              ((uint32_t)0xC0000000): p) G# M( I2 I" Q
  754. #define  RCC_DCKCFGR2_LPTIM1SEL_0            ((uint32_t)0x40000000)
    & G$ v3 t5 d. e/ z
  755. #define  RCC_DCKCFGR2_LPTIM1SEL_1            ((uint32_t)0x80000000)
    # R' |" j, J" d. s; D; @
  756. #endif /* STM32F413_423xx */5 Y6 p0 ]. ?( N- Y0 v! L( o
  757. #endif /* STM32F412xG || STM32F413_423xx || STM32F446xx */
      z# R( W% i% M3 [; L% ^
  758. 8 W$ }# V" @, R
  759. #if defined(STM32F410xx)$ K2 O: a# I4 z; M. d) j
  760. #define  RCC_DCKCFGR_I2SSRC                  ((uint32_t)0x06000000)/ L# f- T$ a  J- ]$ ?) H
  761. #define  RCC_DCKCFGR_I2SSRC_0                ((uint32_t)0x02000000): f5 n0 e# b. s4 n" g# J5 L
  762. #define  RCC_DCKCFGR_I2SSRC_1                ((uint32_t)0x04000000)( W) l; O/ e; A, }
  763. #endif /* STM32F410xx */
    6 A$ L1 y# P5 [7 |) O

  764. $ n# |7 P" b, i% X  S! J
  765. #if defined(STM32F410xx)1 {% ]  g3 Z( o& s" g! Z4 I
  766. /********************  Bit definition for RCC_DCKCFGR2 register  **************/
    * Q2 e/ p- ]5 c9 m6 R7 d
  767. #define  RCC_DCKCFGR2_FMPI2C1SEL             ((uint32_t)0x00C00000)
    + o, A* c6 y& A- c+ ]
  768. #define  RCC_DCKCFGR2_FMPI2C1SEL_0           ((uint32_t)0x00400000)
    9 a2 u/ ~" X/ R) _: i
  769. #define  RCC_DCKCFGR2_FMPI2C1SEL_1           ((uint32_t)0x00800000)
    / X2 w' V* c1 q, x3 g! W  k
  770. #define  RCC_DCKCFGR2_LPTIM1SEL              ((uint32_t)0xC0000000)
    " }' P% I- O5 ]' E7 y6 g$ Y/ C, k, Y
  771. #define  RCC_DCKCFGR2_LPTIM1SEL_0            ((uint32_t)0x40000000)
    6 j, F, X6 V4 h5 P* e
  772. #define  RCC_DCKCFGR2_LPTIM1SEL_1            ((uint32_t)0x80000000): Z$ E4 G+ u8 I  P" p
  773. #endif /* STM32F410xx */# e) q+ s0 x6 Q  X
复制代码

0 S0 L2 Z+ B! P6 g% w3 `
* e# B( @" o7 _& a. h% h  c
赞 收藏 评论0 发布时间:2022-6-10 20:14

举报

0个回答

所属标签

相似技术帖

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