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

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

[复制链接]
STMCU小助手 发布时间:2022-4-3 15:00
01. GPIO固件库概述
3 G0 s: b! h: q1 U+ @stm32f4xx_gpio.h GPIO相关函数和类型的声明: P$ F! i0 x6 m+ h+ ]! c! q  u

1 u# h3 A$ j, \stm32f4xx_gpio.c GPIO相关函数具体实现。
! G2 L. }" z: i' o& v" l
' @( x3 _. f) |6 T+ R02. GPIO相关类型
/ }# }% e9 r. bGPIO相关的类型几乎都在stm32f4xx_gpio.h文件中。
1 R% c- H7 Q0 T7 X& N* ~- s5 \
, R; K  Z% n3 XGPIO的模式
0 n  D) @& [6 F, ?6 R( [, L/ V/ {" U# y% C
  1. /**
    . j1 b% R' A  ?4 G2 v0 I' }
  2.   * @brief  GPIO Configuration Mode enumeration * v) f* ?4 ~8 W. {! X% f' T$ P
  3.   */   
    $ z3 l. H: |5 t
  4. typedef enum8 ~+ R7 u& H4 `2 t2 H9 y! _
  5. {
    * o+ F9 I, j' {5 A: v  M- o
  6.   GPIO_Mode_IN   = 0x00, /*!< GPIO Input Mode */
    5 F0 H1 U' x1 b
  7.   GPIO_Mode_OUT  = 0x01, /*!< GPIO Output Mode */9 v( ], z3 k7 P  o- ~- t+ y, p
  8.   GPIO_Mode_AF   = 0x02, /*!< GPIO Alternate function Mode */
    ; E* ~1 @9 N; B. y
  9.   GPIO_Mode_AN   = 0x03  /*!< GPIO Analog Mode */  f1 B; m/ @- Y6 k
  10. }GPIOMode_TypeDef;
    9 K9 K$ ]& N- b2 F' n% l5 b* Y2 c
  11. #define IS_GPIO_MODE(MODE) (((MODE) == GPIO_Mode_IN)  || ((MODE) == GPIO_Mode_OUT) || \
    4 z5 W( P0 d6 \: Z1 u# x" X2 R
  12.                             ((MODE) == GPIO_Mode_AF)|| ((MODE) == GPIO_Mode_AN))
复制代码

6 S3 E$ [3 e: I4 DGPIO输出类型
2 Q. x9 Q4 l  h# v2 }9 O2 [- q7 s: B% D# |- S1 R* q) w5 o: ]
  1. /**
    - i5 r8 \% K# O' E( f9 x
  2.   * @brief  GPIO Output type enumeration - [6 E' N/ Q! M: q8 [
  3.   */  
    / E3 ~3 f4 g- L4 A. [3 y0 ]7 U
  4. typedef enum
    " u  ?' y9 \" L4 C$ Q* _* ?' h+ E
  5. { , p% P& ^1 x& ?
  6.   GPIO_OType_PP = 0x00,; \: A1 s$ O) z, Q! m; P
  7.   GPIO_OType_OD = 0x01- v8 [; l% R8 l7 ^3 A! |9 O; Q
  8. }GPIOOType_TypeDef;- C# R( i5 T2 \$ u- Y6 E
  9. #define IS_GPIO_OTYPE(OTYPE) (((OTYPE) == GPIO_OType_PP) || ((OTYPE) == GPIO_OType_OD))
    - B6 h- T8 }0 N& [- _' F, S4 S
复制代码

, L+ h8 c: T. r1 [GPIO输出速度
$ W: n! l4 t' s6 j5 Q7 y- F* t/ u5 p2 ~
  1. /** . g/ b4 V; [3 [- _
  2.   * @brief  GPIO Output Maximum frequency enumeration 1 z/ M2 t3 ]8 ~! D
  3.   */  
    4 h1 i$ a" k6 T% k' g' A% @
  4. typedef enum: G  ]- O) Q+ f
  5. { ) M  {7 U, A1 ~2 A3 g
  6.   GPIO_Low_Speed     = 0x00, /*!< Low speed    */
    ( U% k- g0 H8 M; A5 T5 a7 `6 T/ ?" X
  7.   GPIO_Medium_Speed  = 0x01, /*!< Medium speed */; Q9 t' A: w8 n0 d  y1 S) v
  8.   GPIO_Fast_Speed    = 0x02, /*!< Fast speed   */
    ) l' S5 t$ A0 `1 D4 p
  9.   GPIO_High_Speed    = 0x03  /*!< High speed   */3 C3 A0 |$ x1 u: `( ~( Y& B
  10. }GPIOSpeed_TypeDef;
    4 a8 k9 g- C/ l2 J/ E0 y, Z
  11. / c5 W, z% w7 a. o, `
  12. /* Add legacy definition */
    5 N0 A7 {! S* b! t$ E9 t' I
  13. #define  GPIO_Speed_2MHz    GPIO_Low_Speed   
    ) o) z# C% l9 }9 m: l! y4 k+ I) X
  14. #define  GPIO_Speed_25MHz   GPIO_Medium_Speed ( A6 X2 O4 N$ O# _1 A& L
  15. #define  GPIO_Speed_50MHz   GPIO_Fast_Speed
    : }+ o1 s. |& ?  Z7 @' `
  16. #define  GPIO_Speed_100MHz  GPIO_High_Speed  3 t1 g( D0 _$ m8 K# S& {' i

  17.   C" ?; ?0 I) z+ Z( L
  18. #define IS_GPIO_SPEED(SPEED) (((SPEED) == GPIO_Low_Speed) || ((SPEED) == GPIO_Medium_Speed) || \7 g' Z6 v0 B/ `' r  |. D
  19.                               ((SPEED) == GPIO_Fast_Speed)||  ((SPEED) == GPIO_High_Speed))
复制代码

. k0 S! p5 P* {GPIO上下拉3 |$ F) W/ w6 q9 G& m& P, o0 U

( V- B+ ]/ Y  u5 Q" @" t
  1. /**
    5 z- m- o9 ^% m6 L3 n
  2.   * @brief  GPIO Configuration PullUp PullDown enumeration
    ; h% u) r7 g: h* N1 ~9 h. X0 p
  3.   */   \' I: C2 r6 J0 q3 N# _
  4. typedef enum
    : p3 F5 E$ R# }, Z$ \! |! B( O3 ^
  5. {
    ) F6 ?5 \! C4 [) F( u; P
  6.   GPIO_PuPd_NOPULL = 0x00,
    5 P5 k) z2 V% |3 f3 K  v
  7.   GPIO_PuPd_UP     = 0x01,2 ~7 U2 i) a( ]/ x
  8.   GPIO_PuPd_DOWN   = 0x02
    $ G, N9 A- L7 z  }7 M  E' J
  9. }GPIOPuPd_TypeDef;/ i$ t$ G# n0 p2 ^8 v$ ?7 v
  10. #define IS_GPIO_PUPD(PUPD) (((PUPD) == GPIO_PuPd_NOPULL) || ((PUPD) == GPIO_PuPd_UP) || \8 z4 S8 p9 R' [/ C% s) O0 Y
  11.                             ((PUPD) == GPIO_PuPd_DOWN))
复制代码
/ Q  R# K# H. a) P/ u  P
GPIO置位和复位
% I) V' t, ?' ]7 {2 J; m) M4 p) k( Z9 D* I
  1. /**
    5 p4 @) j; b6 v! G
  2.   * @brief  GPIO Bit SET and Bit RESET enumeration
    - e( G! T( g: U4 @3 K4 e" T" B# R0 i
  3.   */ , C) P6 R+ @4 _/ t3 D5 {4 j3 D
  4. typedef enum
    + a3 ]% |) g& U  h
  5. {
    8 }; m3 O: D6 D* W
  6.   Bit_RESET = 0,
    0 p9 r  m7 i2 F$ k/ _
  7.   Bit_SET
    1 D, f1 L1 H7 U
  8. }BitAction;) N0 Q9 h. H5 {- A- {0 F) ~
  9. #define IS_GPIO_BIT_ACTION(ACTION) (((ACTION) == Bit_RESET) || ((ACTION) == Bit_SET))
复制代码

1 r- {/ ]! J" L2 F5 pGPIO初始化结构体类型声明
' J( @/ w& E. Z
# n. }* _( V* m3 x9 M$ f# p
  1. /** + b  S+ J& h* Q, A
  2.   * @brief   GPIO Init structure definition  
    # h$ V3 @' b- [1 T6 k
  3.   */ ( ~; X1 g& }0 c# L& v
  4. typedef struct0 D' c( ]% U, Q4 F6 C: T
  5. {
    + E& z* [% E0 F  E- l7 W( O
  6.   uint32_t GPIO_Pin;              /*!< Specifies the GPIO pins to be configured.6 W0 @2 y4 G( I1 z0 M7 f
  7.                                        This parameter can be any value of @ref GPIO_pins_define */0 V5 |# U7 N+ s+ S# ~

  8. # G" Z. N$ Q5 j, R0 Y
  9.   GPIOMode_TypeDef GPIO_Mode;     /*!< Specifies the operating mode for the selected pins.9 r, a4 S  s6 @! t# v, V) p6 ?
  10.                                        This parameter can be a value of @ref GPIOMode_TypeDef */1 h6 H- z% j6 n) c: h0 J0 G% q

  11. 1 L9 b" b& h) x8 c" g( T2 @  v
  12.   GPIOSpeed_TypeDef GPIO_Speed;   /*!< Specifies the speed for the selected pins.( r7 V5 K$ E' L6 [- ]
  13.                                        This parameter can be a value of @ref GPIOSpeed_TypeDef */2 F0 G) {0 d/ _3 K' W& ^/ K
  14. $ Z8 W" M$ j, f& p; K4 O
  15.   GPIOOType_TypeDef GPIO_OType;   /*!< Specifies the operating output type for the selected pins., p1 L' Q% h8 Z4 S4 J" Z
  16.                                        This parameter can be a value of @ref GPIOOType_TypeDef */
    8 |' V) p% P) U  o) f$ l; K) u
  17. : ]; o7 w: |7 f
  18.   GPIOPuPd_TypeDef GPIO_PuPd;     /*!< Specifies the operating Pull-up/Pull down for the selected pins.
    & V6 g6 _- ]" b9 I
  19.                                        This parameter can be a value of @ref GPIOPuPd_TypeDef */
    % i6 d) U* {4 k/ g: F4 L
  20. }GPIO_InitTypeDef;$ n1 x/ d9 P0 c
复制代码

" x2 l) L1 H: H+ t7 ~03. GPIO相关宏
/ g2 ~: a/ h2 h! u  ?4 U+ f判断是否为合法的GPIO外设
; k* U2 e# i! c5 ]1 K6 u& x; k, _( G
  1. #define IS_GPIO_ALL_PERIPH(PERIPH) (((PERIPH) == GPIOA) || \: j3 S0 [: a/ [8 b
  2.                                     ((PERIPH) == GPIOB) || \
    . l& x$ a  @& s0 }  h) c
  3.                                     ((PERIPH) == GPIOC) || \4 w) K' E# p* a& Z( h( r5 s" E
  4.                                     ((PERIPH) == GPIOD) || \% p, B/ P$ T: s& ^+ K$ u. Q
  5.                                     ((PERIPH) == GPIOE) || \$ ~* a$ p2 r: S. q' c
  6.                                     ((PERIPH) == GPIOF) || \
    " ^: O; ^5 z5 k, C& ~
  7.                                     ((PERIPH) == GPIOG) || \
    ! l1 B; ~" n$ m8 w
  8.                                     ((PERIPH) == GPIOH) || \' A3 j0 m  S/ r" {2 _' S2 @8 Y
  9.                                     ((PERIPH) == GPIOI) || \4 P5 G2 \) C+ B4 T& H1 k' b
  10.                                     ((PERIPH) == GPIOJ) || \5 R8 ?8 x2 w# k4 j3 |  @6 j
  11.                                     ((PERIPH) == GPIOK))
复制代码
+ Q) @" l. [6 P- |+ o5 z+ S6 x
GPIO合法的引脚% O1 _( K% m8 g) m. Y" x

' ?" Z5 `) t, O9 T7 `- f; @
  1. /** @defgroup GPIO_pins_define , g$ U" G& S1 u  l1 m$ T
  2.   * @{8 S) G- }; R% l- W% k
  3.   */ + R+ L: h" v+ Y% D$ o3 b# e
  4. #define GPIO_Pin_0                 ((uint16_t)0x0001)  /* Pin 0 selected */
    ! a( I2 U/ A( C) P( l3 i( b
  5. #define GPIO_Pin_1                 ((uint16_t)0x0002)  /* Pin 1 selected */
    ) B+ f" h8 k5 n8 f5 c/ [, P& Y5 W
  6. #define GPIO_Pin_2                 ((uint16_t)0x0004)  /* Pin 2 selected */. G" J$ }8 z4 {, s% p' L
  7. #define GPIO_Pin_3                 ((uint16_t)0x0008)  /* Pin 3 selected */, N  Q$ [. k+ U9 o8 v. w/ R
  8. #define GPIO_Pin_4                 ((uint16_t)0x0010)  /* Pin 4 selected */
    4 F+ C  o6 d4 M
  9. #define GPIO_Pin_5                 ((uint16_t)0x0020)  /* Pin 5 selected */
    ; a* [+ ]) {  S# A
  10. #define GPIO_Pin_6                 ((uint16_t)0x0040)  /* Pin 6 selected */5 @$ N7 A& ~$ ?, M) K
  11. #define GPIO_Pin_7                 ((uint16_t)0x0080)  /* Pin 7 selected */8 [( f# X& T5 M  |2 l  a( i: O
  12. #define GPIO_Pin_8                 ((uint16_t)0x0100)  /* Pin 8 selected */# \. Y% D5 {" x1 ]: }- }7 D
  13. #define GPIO_Pin_9                 ((uint16_t)0x0200)  /* Pin 9 selected */
    & E) s6 ^/ i2 N6 x6 T
  14. #define GPIO_Pin_10                ((uint16_t)0x0400)  /* Pin 10 selected */
    9 l) I: p! x$ s% A4 g6 u: D3 N
  15. #define GPIO_Pin_11                ((uint16_t)0x0800)  /* Pin 11 selected */& |0 `: k. m6 g+ [$ U
  16. #define GPIO_Pin_12                ((uint16_t)0x1000)  /* Pin 12 selected */  q4 M0 a8 d! m+ u3 }0 l+ v
  17. #define GPIO_Pin_13                ((uint16_t)0x2000)  /* Pin 13 selected */
    $ A" u/ e9 @, f3 M8 }6 @5 U
  18. #define GPIO_Pin_14                ((uint16_t)0x4000)  /* Pin 14 selected */# H$ V3 z9 C$ I1 M2 x
  19. #define GPIO_Pin_15                ((uint16_t)0x8000)  /* Pin 15 selected */( N# T" W2 J% K: t
  20. #define GPIO_Pin_All               ((uint16_t)0xFFFF)  /* All pins selected */
    7 V! U, m7 r7 [4 Q' Q
  21. 9 b$ H7 r- G1 B, Z
  22. #define GPIO_PIN_MASK              ((uint32_t)0x0000FFFF) /* PIN mask for assert test */7 v- R! p" T. l: K2 y- C/ r/ E* D
  23. #define IS_GPIO_PIN(PIN)           (((PIN) & GPIO_PIN_MASK ) != (uint32_t)0x00)
    1 k! D$ e) B) i- s7 y
  24. #define IS_GET_GPIO_PIN(PIN) (((PIN) == GPIO_Pin_0) || \
    8 j6 j4 l; K) i
  25.                               ((PIN) == GPIO_Pin_1) || \
    $ h) Z: m( z; m, }; A# U# ]
  26.                               ((PIN) == GPIO_Pin_2) || \: r$ G1 ]9 L) l6 P0 m2 ]* x2 z
  27.                               ((PIN) == GPIO_Pin_3) || \. U& Q  x  S: D" y" ?, W4 X$ u1 M
  28.                               ((PIN) == GPIO_Pin_4) || \
    ! W5 \8 i* p/ a1 H
  29.                               ((PIN) == GPIO_Pin_5) || \+ }% W: ?$ O4 |2 ]. S
  30.                               ((PIN) == GPIO_Pin_6) || \
    6 f/ P- ?( o2 F; I# u2 y& X( k
  31.                               ((PIN) == GPIO_Pin_7) || \7 O5 g8 l. f8 z( k' N  j
  32.                               ((PIN) == GPIO_Pin_8) || \- f/ I8 f) o) P% V$ q, Q
  33.                               ((PIN) == GPIO_Pin_9) || \$ O0 q% N1 \  t" }) q( U3 U$ ^+ {
  34.                               ((PIN) == GPIO_Pin_10) || \
    * [- j$ n1 g& l4 [6 F' @
  35.                               ((PIN) == GPIO_Pin_11) || \
    ( s! z, W5 x3 @
  36.                               ((PIN) == GPIO_Pin_12) || \
    , I7 s; p7 ~# y/ v
  37.                               ((PIN) == GPIO_Pin_13) || \4 |6 t4 g' Y" `1 b! r) d
  38.                               ((PIN) == GPIO_Pin_14) || \
    1 b6 `; v. {6 v/ u& Q9 |
  39.                               ((PIN) == GPIO_Pin_15))
复制代码

4 H  ]: Q4 M+ u5 EGPIO合法的引脚源. k' x4 x3 d$ p( f, ?- m( m+ ^

5 S, L8 ?6 G- @6 M
  1. ( j$ K' y' D/ S8 d
  2. /** @defgroup GPIO_Pin_sources
    ; T6 b) I2 w/ K6 t
  3.   * @{5 a9 W9 _- X7 w9 t% {$ `2 X1 f$ r
  4.   */
    ( ~6 k4 j4 \: P& G! N7 S
  5. #define GPIO_PinSource0            ((uint8_t)0x00)1 Y$ o$ g3 Z; D" |8 q% R2 M: P( ~
  6. #define GPIO_PinSource1            ((uint8_t)0x01)# m  V% c" f5 }( i1 n
  7. #define GPIO_PinSource2            ((uint8_t)0x02)
    ( h( j/ `4 o, m' f$ u, {4 Z; l
  8. #define GPIO_PinSource3            ((uint8_t)0x03)
      m% r7 l, d$ a2 b
  9. #define GPIO_PinSource4            ((uint8_t)0x04)4 B: w8 H- O( b* {. ~
  10. #define GPIO_PinSource5            ((uint8_t)0x05)" [9 |+ @$ U2 A1 u, K2 E
  11. #define GPIO_PinSource6            ((uint8_t)0x06)
    7 T8 f2 ~  g8 m6 I( ^
  12. #define GPIO_PinSource7            ((uint8_t)0x07)
    ( L8 P7 T& D; S5 Z8 V' ^: U2 T2 Q
  13. #define GPIO_PinSource8            ((uint8_t)0x08)+ k/ d0 ~- m1 ?9 I; S' F: b7 c
  14. #define GPIO_PinSource9            ((uint8_t)0x09)
    5 }7 o# G, R) v* W( q
  15. #define GPIO_PinSource10           ((uint8_t)0x0A)& y/ V* E8 X# M, O/ E
  16. #define GPIO_PinSource11           ((uint8_t)0x0B)
    " c! Q% y( q$ d. w; U5 |1 u
  17. #define GPIO_PinSource12           ((uint8_t)0x0C)/ j+ v  C% G1 J
  18. #define GPIO_PinSource13           ((uint8_t)0x0D)0 O2 [, _4 O; M* f" N
  19. #define GPIO_PinSource14           ((uint8_t)0x0E)( q* \% L4 ?* x; K; C# @% x
  20. #define GPIO_PinSource15           ((uint8_t)0x0F)
    ' Q# Q. F# g4 q2 f: {; T
  21. ) X5 Z# Q  k* G
  22. #define IS_GPIO_PIN_SOURCE(PINSOURCE) (((PINSOURCE) == GPIO_PinSource0) || \
    + x! V5 j. f5 T- F% Z: f; a
  23.                                        ((PINSOURCE) == GPIO_PinSource1) || \8 q6 a0 O; h9 N+ W
  24.                                        ((PINSOURCE) == GPIO_PinSource2) || \" v! H; S2 @% s% t' d
  25.                                        ((PINSOURCE) == GPIO_PinSource3) || \
    " X; f' Z- C2 o( T( \" l
  26.                                        ((PINSOURCE) == GPIO_PinSource4) || \6 a6 a& s. R# `4 }1 p5 P
  27.                                        ((PINSOURCE) == GPIO_PinSource5) || \
    ( c0 M6 K/ u5 G! t& V
  28.                                        ((PINSOURCE) == GPIO_PinSource6) || \3 j5 t+ w7 C8 W. z/ Z2 {
  29.                                        ((PINSOURCE) == GPIO_PinSource7) || \
    5 u( f# O7 X5 J7 X, [; _! ?$ _
  30.                                        ((PINSOURCE) == GPIO_PinSource8) || \
      i" B- d9 r* S4 R! H! J0 X
  31.                                        ((PINSOURCE) == GPIO_PinSource9) || \' E7 O: v, B8 n
  32.                                        ((PINSOURCE) == GPIO_PinSource10) || \
    # D6 q* d4 E( X
  33.                                        ((PINSOURCE) == GPIO_PinSource11) || \% W( Y, @' y6 t  x
  34.                                        ((PINSOURCE) == GPIO_PinSource12) || \' k. ?% V! |9 e9 X1 A& k
  35.                                        ((PINSOURCE) == GPIO_PinSource13) || \) ^/ i. U7 `  _* z
  36.                                        ((PINSOURCE) == GPIO_PinSource14) || \
    : S* X  }& E8 B% P% ^) D2 g
  37.                                        ((PINSOURCE) == GPIO_PinSource15))
复制代码

6 c. B$ z( f  S, |' `4 P6 z8 ]04. GPIO相关函数
$ D6 _% ~9 ^4 V; i/ x
  1. /*  Function used to set the GPIO configuration to the default reset state ****/1 D3 P9 c2 B/ {& \" t
  2. //配置GPIO为默认状态+ J- a) z' K/ P$ v
  3. void GPIO_DeInit(GPIO_TypeDef* GPIOx);+ Z% ^# \, m, K, B/ R
  4. 0 P& t+ [/ k, `% p9 C7 @6 N
  5. /* Initialization and Configuration functions *********************************/
    % g5 e0 }% }6 s. c7 a& {
  6. //GPIO初始化. V8 F, x- B8 o) y6 |
  7. void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);3 d, w7 b2 W; r5 Y: ^0 v
  8. //GPIO结构体初始化7 q; C# x& |8 O/ e/ l0 l
  9. void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);( H5 ^* F9 e; `0 z, y  o; l
  10. //GPIO锁配置
    ( M. k% ~$ O5 H! N0 X9 d
  11. void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    8 w& O+ |: Z2 d$ U" e6 n: h
  12. & b' N) V& \9 ]
  13. /* GPIO Read and Write functions **********************************************/
    ' V( Y7 |, }6 k9 c+ o
  14. //GPIO读写函数' G% a1 n- A% A5 n$ q
  15. uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    0 y8 q1 ~, [7 o3 U
  16. uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
    4 H. u4 k$ f7 ?  u% l) J: m
  17. uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);( i( h  \& I  j0 _7 z+ f
  18. uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
    5 O+ C" x! F$ _' {! n
  19. void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    ' U% U1 e- {8 d8 r3 v$ m
  20. void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);  C" E+ S2 I! q7 m, i4 _
  21. void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
    4 k& t8 M& ~3 X0 J( x
  22. void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);  v' _  I% @6 r# Y3 W1 B* I
  23. void GPIO_ToggleBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);/ E5 A7 {. j  o& ]* s) ~

  24. : o2 Q. J' L3 a! M# A# y4 {/ q6 R+ R
  25. /* GPIO Alternate functions configuration function ****************************/; q  a3 D% Z- R$ }3 g+ P7 a
  26. void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF);
复制代码

- Y/ F9 Z# x0 I: _6 e7 y5 P05. GPIO其它相关; u5 ~) [5 z4 ^! h8 ~! |9 t/ |
stm32f4xx.h文件中
2 t8 S  G0 b/ F! b- X) R
+ Q3 Z6 |1 R, c' ~" ~( T" Y通用GPIO结构体封装$ N) `) S6 r; l3 ]1 `4 q, C
! S3 K- Z% \1 L7 k% Y1 b
  1. typedef struct9 O9 w! k( W  Q9 \) c3 L8 r
  2. {
    $ V" X* A) T! t+ {/ c- j
  3.   __IO uint32_t MODER;    /*!< GPIO port mode register,               Address offset: 0x00      */
    8 T4 V' S1 N2 C8 |" @
  4.   __IO uint32_t OTYPER;   /*!< GPIO port output type register,        Address offset: 0x04      */
      I1 ^' }9 `5 @3 Y4 u2 D
  5.   __IO uint32_t OSPEEDR;  /*!< GPIO port output speed register,       Address offset: 0x08      */8 {5 @+ |8 W& B5 K# j# h9 n1 m* U0 Q, y
  6.   __IO uint32_t PUPDR;    /*!< GPIO port pull-up/pull-down register,  Address offset: 0x0C      */: Q. e$ ^1 p  l7 Y
  7.   __IO uint32_t IDR;      /*!< GPIO port input data register,         Address offset: 0x10      */
    6 W% z) @, }- o$ S  g8 ?2 _  K( _
  8.   __IO uint32_t ODR;      /*!< GPIO port output data register,        Address offset: 0x14      */% _6 @' a# ]( s) Q2 [2 }/ i
  9.   __IO uint16_t BSRRL;    /*!< GPIO port bit set/reset low register,  Address offset: 0x18      */4 \- u6 |( T# O
  10.   __IO uint16_t BSRRH;    /*!< GPIO port bit set/reset high register, Address offset: 0x1A      */3 Y6 u: `4 G5 j4 @
  11.   __IO uint32_t LCKR;     /*!< GPIO port configuration lock register, Address offset: 0x1C      */# z: }9 a: {' l4 @
  12.   __IO uint32_t AFR[2];   /*!< GPIO alternate function registers,     Address offset: 0x20-0x24 */6 F  k9 c5 R  S: Z
  13. } GPIO_TypeDef;
复制代码

- y" [  {  K4 a7 dGPIO基地址/ _5 b$ ?( r6 z. d
) _2 j/ P/ b- W! M6 X- q8 P  O
  1. /*!< AHB1 peripherals */
    ! b, \# G, O: y* g9 K
  2. #define GPIOA_BASE            (AHB1PERIPH_BASE + 0x0000)5 t( y2 Q8 z( F5 N2 U
  3. #define GPIOB_BASE            (AHB1PERIPH_BASE + 0x0400)
    2 a" g& c0 w8 |  U/ l
  4. #define GPIOC_BASE            (AHB1PERIPH_BASE + 0x0800)
    . R! ?7 |5 d4 s1 O
  5. #define GPIOD_BASE            (AHB1PERIPH_BASE + 0x0C00)1 J  l! |) P- \* G3 C  ?+ Y
  6. #define GPIOE_BASE            (AHB1PERIPH_BASE + 0x1000)* L' u& P' p+ F5 ~/ w1 S
  7. #define GPIOF_BASE            (AHB1PERIPH_BASE + 0x1400)
    + w  r  o6 W% m5 h, }9 P  g
  8. #define GPIOG_BASE            (AHB1PERIPH_BASE + 0x1800)
    2 K) |; s% x' G% a) b: A
  9. #define GPIOH_BASE            (AHB1PERIPH_BASE + 0x1C00)) a4 s' w9 ~1 C4 r. R4 u# ]
  10. #define GPIOI_BASE            (AHB1PERIPH_BASE + 0x2000)
    : q, N* R" a. [3 d6 T  m5 |
  11. #define GPIOJ_BASE            (AHB1PERIPH_BASE + 0x2400)
    4 k  U% r" A  P! c1 n4 x
  12. #define GPIOK_BASE            (AHB1PERIPH_BASE + 0x2800)# O9 c6 B1 H) |) l$ E
复制代码

" f, d" R" G0 ^7 m3 R7 OGPIO起始地址
; V  q8 s# F# ~! t/ K$ a" f, @0 x5 |
  1. #define GPIOA               ((GPIO_TypeDef *) GPIOA_BASE)4 ?& `7 E6 @" s0 J' d- t
  2. #define GPIOB               ((GPIO_TypeDef *) GPIOB_BASE)
    + p" n7 k' g# s2 o& u
  3. #define GPIOC               ((GPIO_TypeDef *) GPIOC_BASE)8 z0 F! a5 x9 S0 q0 M  W
  4. #define GPIOD               ((GPIO_TypeDef *) GPIOD_BASE)
    " j% S' `, y4 k  R
  5. #define GPIOE               ((GPIO_TypeDef *) GPIOE_BASE)) u9 D- I' i! |- B1 l  m8 z  n" B
  6. #define GPIOF               ((GPIO_TypeDef *) GPIOF_BASE): R7 X3 w. u0 v# K$ r2 N: o
  7. #define GPIOG               ((GPIO_TypeDef *) GPIOG_BASE)
    ! q+ b# e3 h: n
  8. #define GPIOH               ((GPIO_TypeDef *) GPIOH_BASE)* y) U; d+ K: v1 M  @6 {
  9. #define GPIOI               ((GPIO_TypeDef *) GPIOI_BASE)
    % \8 i5 z8 Q4 ?8 e/ \# z
  10. #define GPIOJ               ((GPIO_TypeDef *) GPIOJ_BASE)% E2 t, Q3 o8 q& a
  11. #define GPIOK               ((GPIO_TypeDef *) GPIOK_BASE)
复制代码

  M9 ~. u. D6 S3 I- d  OGPIO寄存器相关位% E# Q3 c+ Q) c6 V7 S! `' P, K: H, T
# ?3 C9 e! n/ A2 J  x9 @
  1. /******************************************************************************/' V2 g0 c; A3 h0 q! P7 l% w2 a2 {3 }  |
  2. /*                                                                            */
    1 i7 y/ O' E5 |0 }
  3. /*                            General Purpose I/O                             */: h6 y* t6 ~; d' i) c
  4. /*                                                                            */  b4 g  M/ I$ S7 p
  5. /******************************************************************************/
    3 l. v& R% l5 N* T+ ]
  6. /******************  Bits definition for GPIO_MODER register  *****************/1 v" }1 j1 `3 D1 w
  7. #define GPIO_MODER_MODER0                    ((uint32_t)0x00000003)
    ! r% v3 p" P! N1 ?* @) U0 H
  8. #define GPIO_MODER_MODER0_0                  ((uint32_t)0x00000001)
      }4 x' p( z5 l- {
  9. #define GPIO_MODER_MODER0_1                  ((uint32_t)0x00000002)
    0 r1 W* R* b1 S5 C

  10. $ E! F1 j9 Q" G6 o& Z
  11. #define GPIO_MODER_MODER1                    ((uint32_t)0x0000000C)1 Y$ @) B) a. C+ _
  12. #define GPIO_MODER_MODER1_0                  ((uint32_t)0x00000004)
    3 D* Q# F" r% m) l0 g! V
  13. #define GPIO_MODER_MODER1_1                  ((uint32_t)0x00000008); d" v- a- o! Y9 }4 s4 U

  14. ' Q5 o" [) J9 A3 [
  15. #define GPIO_MODER_MODER2                    ((uint32_t)0x00000030)
    7 m: K8 [5 G; A; U/ Q
  16. #define GPIO_MODER_MODER2_0                  ((uint32_t)0x00000010)4 h) i, f7 \2 U" O" M" M
  17. #define GPIO_MODER_MODER2_1                  ((uint32_t)0x00000020)
    / v" b; {! f- M! h2 s2 n/ R
  18. 0 ?8 |: N$ `8 u/ s4 \. {
  19. #define GPIO_MODER_MODER3                    ((uint32_t)0x000000C0)
    ! o. c: Y+ S  S! J7 c
  20. #define GPIO_MODER_MODER3_0                  ((uint32_t)0x00000040)
    ! m" m0 c1 u% Y+ d" p4 \
  21. #define GPIO_MODER_MODER3_1                  ((uint32_t)0x00000080)
    8 e5 B; x2 o4 g. o  d, v6 H9 Z6 h
  22. / k& E* J% q+ ~+ V" e8 N8 k
  23. #define GPIO_MODER_MODER4                    ((uint32_t)0x00000300)/ j4 X- M0 x5 q) H  S% X! x
  24. #define GPIO_MODER_MODER4_0                  ((uint32_t)0x00000100)+ G" v6 M  G: q7 H; N
  25. #define GPIO_MODER_MODER4_1                  ((uint32_t)0x00000200)
      h2 F  K6 J6 a- l/ M* j* d

  26. 8 X- A3 n) e/ P# x8 j- U$ I5 Y
  27. #define GPIO_MODER_MODER5                    ((uint32_t)0x00000C00)8 e8 O$ t; O* V9 R
  28. #define GPIO_MODER_MODER5_0                  ((uint32_t)0x00000400)$ _. U9 X" m" w( i4 y( y' w
  29. #define GPIO_MODER_MODER5_1                  ((uint32_t)0x00000800)
    # K7 z5 K+ d; w, T! g( [( E" T3 |
  30. + ^2 M; N0 j" F3 W% v
  31. #define GPIO_MODER_MODER6                    ((uint32_t)0x00003000)$ f1 q4 ]# D" c- f8 B
  32. #define GPIO_MODER_MODER6_0                  ((uint32_t)0x00001000)' e% ]/ J* T4 x" h
  33. #define GPIO_MODER_MODER6_1                  ((uint32_t)0x00002000)" ]# h& o+ L! Z( Z! v" F* h

  34. 8 _- Y. I! t/ o! C- I5 {0 b
  35. #define GPIO_MODER_MODER7                    ((uint32_t)0x0000C000)
    2 D. s( C8 W  E! O; K& Q2 W' G
  36. #define GPIO_MODER_MODER7_0                  ((uint32_t)0x00004000)
    4 n, m, F# @, Z% ~
  37. #define GPIO_MODER_MODER7_1                  ((uint32_t)0x00008000)
    ( p9 A: H6 c* |2 y3 D6 p" d! `2 T' U

  38. / b' U: q* M8 a0 s' [3 m% t
  39. #define GPIO_MODER_MODER8                    ((uint32_t)0x00030000). k, ?; e  D! j* c" X5 X' ]# y5 n
  40. #define GPIO_MODER_MODER8_0                  ((uint32_t)0x00010000)1 P! A: x% D3 d* l, v
  41. #define GPIO_MODER_MODER8_1                  ((uint32_t)0x00020000)) }& @1 d( [6 k  w

  42. 9 _8 q9 Y2 A: R2 L+ J3 k" f
  43. #define GPIO_MODER_MODER9                    ((uint32_t)0x000C0000): x  M% g: k1 l" y
  44. #define GPIO_MODER_MODER9_0                  ((uint32_t)0x00040000)
    2 @/ J3 B; n# [; @6 y
  45. #define GPIO_MODER_MODER9_1                  ((uint32_t)0x00080000)8 q7 {- N* F, A1 o: A! I

  46. . ^% x5 D! n. F8 Z( Z2 [9 b
  47. #define GPIO_MODER_MODER10                   ((uint32_t)0x00300000)) m- O& V/ ~( I( v5 q; x/ X
  48. #define GPIO_MODER_MODER10_0                 ((uint32_t)0x00100000)
    3 H% K+ b8 F. ]/ V
  49. #define GPIO_MODER_MODER10_1                 ((uint32_t)0x00200000)9 H8 c9 n$ {; Y/ j; Y4 [
  50. ' U+ V5 a- f! T' n) }- }4 Y
  51. #define GPIO_MODER_MODER11                   ((uint32_t)0x00C00000)
    $ u1 J. q: M# z6 w; y
  52. #define GPIO_MODER_MODER11_0                 ((uint32_t)0x00400000), z$ @6 ?3 F7 X5 K% n
  53. #define GPIO_MODER_MODER11_1                 ((uint32_t)0x00800000)
    : Z4 S: a- O* K+ `0 N

  54. % D% r+ c+ |2 J' v3 G
  55. #define GPIO_MODER_MODER12                   ((uint32_t)0x03000000)7 c* N0 h, m8 _) K1 |9 m+ _& W8 s
  56. #define GPIO_MODER_MODER12_0                 ((uint32_t)0x01000000)
    $ H( `' o2 Z8 _3 E: T5 N* P, p3 S+ ~
  57. #define GPIO_MODER_MODER12_1                 ((uint32_t)0x02000000)
    / S% ~) ^" B4 Z0 W+ r( ]* ]

  58. # D! P3 s9 I; u* J
  59. #define GPIO_MODER_MODER13                   ((uint32_t)0x0C000000)% }! G/ D/ V& i: E* g, n
  60. #define GPIO_MODER_MODER13_0                 ((uint32_t)0x04000000)3 \. q/ w$ X+ z3 ~: k! N0 Q
  61. #define GPIO_MODER_MODER13_1                 ((uint32_t)0x08000000)
    2 b; J: A' {5 [7 R& e

  62. & W+ `+ M2 g& s1 ~/ G5 w
  63. #define GPIO_MODER_MODER14                   ((uint32_t)0x30000000)! X' P' r  O9 j4 d) s9 {% s
  64. #define GPIO_MODER_MODER14_0                 ((uint32_t)0x10000000)
    2 o# ~! w2 H: c% ^5 @" d' v
  65. #define GPIO_MODER_MODER14_1                 ((uint32_t)0x20000000)" {1 R4 }& E/ ^. w9 i- A
  66. - g7 i6 G7 n- z0 D
  67. #define GPIO_MODER_MODER15                   ((uint32_t)0xC0000000)' Y2 l  }8 K! |
  68. #define GPIO_MODER_MODER15_0                 ((uint32_t)0x40000000)8 E- |) D; p& r6 s5 H' G
  69. #define GPIO_MODER_MODER15_1                 ((uint32_t)0x80000000): ~) ?. p5 Q. q, {* p, }7 ^& `# S

  70. : A$ r  Z3 v6 \' I
  71. /******************  Bits definition for GPIO_OTYPER register  ****************/+ O3 Q5 O. F$ [6 @/ b4 o! u: [
  72. #define GPIO_OTYPER_OT_0                     ((uint32_t)0x00000001)& D1 O* d! `! n1 E* d/ N, R  J
  73. #define GPIO_OTYPER_OT_1                     ((uint32_t)0x00000002)
    ' l/ t  R0 h$ c
  74. #define GPIO_OTYPER_OT_2                     ((uint32_t)0x00000004)
    / m# l2 E" M2 i: a, h
  75. #define GPIO_OTYPER_OT_3                     ((uint32_t)0x00000008)
    ' p& G. _+ a5 d& c- ^  E0 e
  76. #define GPIO_OTYPER_OT_4                     ((uint32_t)0x00000010)4 w) B& p/ J4 p% h5 D. k3 ]
  77. #define GPIO_OTYPER_OT_5                     ((uint32_t)0x00000020)" W( ?$ |) e4 J; e" F
  78. #define GPIO_OTYPER_OT_6                     ((uint32_t)0x00000040)# V( T0 j& F2 K
  79. #define GPIO_OTYPER_OT_7                     ((uint32_t)0x00000080)
    * o+ m# |8 e3 @4 h$ M
  80. #define GPIO_OTYPER_OT_8                     ((uint32_t)0x00000100)& c, Q$ K  R$ j
  81. #define GPIO_OTYPER_OT_9                     ((uint32_t)0x00000200)* Q5 ^( d2 ?2 [6 e% `
  82. #define GPIO_OTYPER_OT_10                    ((uint32_t)0x00000400)5 E* Y+ C+ R% ]8 U" `0 W3 f
  83. #define GPIO_OTYPER_OT_11                    ((uint32_t)0x00000800)
    & Y1 C; r' T6 C) @2 u, v; {2 f/ p
  84. #define GPIO_OTYPER_OT_12                    ((uint32_t)0x00001000)
    % p# y; c  z  f5 T
  85. #define GPIO_OTYPER_OT_13                    ((uint32_t)0x00002000)
    & i" W4 B$ \+ w' c/ H- R) m1 B
  86. #define GPIO_OTYPER_OT_14                    ((uint32_t)0x00004000)- u9 w/ E* G) c
  87. #define GPIO_OTYPER_OT_15                    ((uint32_t)0x00008000)
    : F. g# }5 [( t, t! K
  88. ! D$ v# n( I  E0 m. F2 ~, N
  89. /******************  Bits definition for GPIO_OSPEEDR register  ***************/
    , [! O/ Q) S8 E6 b
  90. #define GPIO_OSPEEDER_OSPEEDR0               ((uint32_t)0x00000003)% G) u# B7 n% L9 s  A: s( {
  91. #define GPIO_OSPEEDER_OSPEEDR0_0             ((uint32_t)0x00000001)
    4 @1 E' T$ |* O! X9 V
  92. #define GPIO_OSPEEDER_OSPEEDR0_1             ((uint32_t)0x00000002)
    9 T7 r5 C! Z/ G/ H
  93. 6 u/ x; J8 ?) U8 k4 R, p
  94. #define GPIO_OSPEEDER_OSPEEDR1               ((uint32_t)0x0000000C)6 P' V9 y% P' i9 i7 D
  95. #define GPIO_OSPEEDER_OSPEEDR1_0             ((uint32_t)0x00000004)/ A" l6 d4 `" g. C% G  U
  96. #define GPIO_OSPEEDER_OSPEEDR1_1             ((uint32_t)0x00000008)
    ) F9 W2 D- t  }' P+ y3 `2 j) W9 B# u9 r
  97. , B/ H  ^/ B* q# G' j
  98. #define GPIO_OSPEEDER_OSPEEDR2               ((uint32_t)0x00000030)
    1 U3 D% R3 q( G' X! @* S+ \5 V
  99. #define GPIO_OSPEEDER_OSPEEDR2_0             ((uint32_t)0x00000010)3 K4 O0 K, b% I7 u
  100. #define GPIO_OSPEEDER_OSPEEDR2_1             ((uint32_t)0x00000020); V3 U3 b0 `1 }0 }: i+ h
  101. : F2 X# R; W* ?6 ]5 J/ R
  102. #define GPIO_OSPEEDER_OSPEEDR3               ((uint32_t)0x000000C0)* D  f+ `+ E+ R2 y$ a
  103. #define GPIO_OSPEEDER_OSPEEDR3_0             ((uint32_t)0x00000040)
    0 `+ J; m1 X9 C; c% V
  104. #define GPIO_OSPEEDER_OSPEEDR3_1             ((uint32_t)0x00000080)
    8 B) A: v! e; J! l) n+ N2 H
  105. 9 H6 n7 u2 A8 u" _2 K. z  _4 f
  106. #define GPIO_OSPEEDER_OSPEEDR4               ((uint32_t)0x00000300)
    0 a8 a5 M; Q0 B3 c/ f0 u- v: {
  107. #define GPIO_OSPEEDER_OSPEEDR4_0             ((uint32_t)0x00000100)
    1 j% q( e& V0 }; t! u5 j. C
  108. #define GPIO_OSPEEDER_OSPEEDR4_1             ((uint32_t)0x00000200)5 G6 h; F8 F# P9 K) i
  109.   {* B6 I% M0 x3 [6 a! O% X. D
  110. #define GPIO_OSPEEDER_OSPEEDR5               ((uint32_t)0x00000C00)
    + n% E* f: `+ u. B3 ]
  111. #define GPIO_OSPEEDER_OSPEEDR5_0             ((uint32_t)0x00000400)
    9 N. j5 u6 @( i; K  n4 C& B
  112. #define GPIO_OSPEEDER_OSPEEDR5_1             ((uint32_t)0x00000800)
    7 j, n+ |/ a9 j# A& c

  113. / G6 Z1 L6 q3 k, F: m
  114. #define GPIO_OSPEEDER_OSPEEDR6               ((uint32_t)0x00003000)
    ) Y3 |% W2 X( D6 N, A
  115. #define GPIO_OSPEEDER_OSPEEDR6_0             ((uint32_t)0x00001000)1 a+ O3 v5 _5 f' k' y
  116. #define GPIO_OSPEEDER_OSPEEDR6_1             ((uint32_t)0x00002000)$ N- C! R+ ^5 D$ _7 K
  117. , L; \1 Q0 b  b) z, Q) ]
  118. #define GPIO_OSPEEDER_OSPEEDR7               ((uint32_t)0x0000C000)7 s+ [/ |: W. h. ?: l! B
  119. #define GPIO_OSPEEDER_OSPEEDR7_0             ((uint32_t)0x00004000)
    : a3 J; T- d, v$ m. O% x
  120. #define GPIO_OSPEEDER_OSPEEDR7_1             ((uint32_t)0x00008000)/ ^' B: Q5 ?. |8 Y' X5 Z1 D) y
  121. * q8 i0 @- H9 W; s; {% B# a
  122. #define GPIO_OSPEEDER_OSPEEDR8               ((uint32_t)0x00030000); _, G; U+ F. {5 u
  123. #define GPIO_OSPEEDER_OSPEEDR8_0             ((uint32_t)0x00010000)' y! q) C3 c4 K& e. p# ^  N) O
  124. #define GPIO_OSPEEDER_OSPEEDR8_1             ((uint32_t)0x00020000)
    5 Z% @) t4 k3 R

  125. - \  P9 ~$ X) _  \' b0 X' k
  126. #define GPIO_OSPEEDER_OSPEEDR9               ((uint32_t)0x000C0000)
    2 V/ A* ?( c4 Z# @1 N5 z# z
  127. #define GPIO_OSPEEDER_OSPEEDR9_0             ((uint32_t)0x00040000)
    / K# A% y$ z4 [0 j3 }
  128. #define GPIO_OSPEEDER_OSPEEDR9_1             ((uint32_t)0x00080000)
    4 S/ i# T8 ^+ Z4 |, R6 h

  129. % a' o# B7 K' P  ~+ `& v, |
  130. #define GPIO_OSPEEDER_OSPEEDR10              ((uint32_t)0x00300000)8 u, a6 X" @1 |7 N) C
  131. #define GPIO_OSPEEDER_OSPEEDR10_0            ((uint32_t)0x00100000)
    # C2 u( P5 [6 s6 Y, V9 ^
  132. #define GPIO_OSPEEDER_OSPEEDR10_1            ((uint32_t)0x00200000)4 N  S6 x0 `( A" g' l
  133. + k0 c& C$ R  I) W9 w, R/ b4 O# R
  134. #define GPIO_OSPEEDER_OSPEEDR11              ((uint32_t)0x00C00000)9 v, c7 `% g$ k4 @; m. j
  135. #define GPIO_OSPEEDER_OSPEEDR11_0            ((uint32_t)0x00400000)  N3 [! m5 g2 m% i) o$ z; X6 H8 K& C
  136. #define GPIO_OSPEEDER_OSPEEDR11_1            ((uint32_t)0x00800000)2 a& s% ]/ @& c4 E/ ]

  137. - x9 G5 M- [: n6 }) ]7 o
  138. #define GPIO_OSPEEDER_OSPEEDR12              ((uint32_t)0x03000000)0 P2 H, Z* v9 U9 z9 v- i
  139. #define GPIO_OSPEEDER_OSPEEDR12_0            ((uint32_t)0x01000000)' {( @# u4 \' p5 o; j$ A
  140. #define GPIO_OSPEEDER_OSPEEDR12_1            ((uint32_t)0x02000000)% P, h/ h$ S( _6 s5 D) i- g( |) s

  141.   a2 R, a1 g4 B) O2 M3 s# J1 d# E9 @
  142. #define GPIO_OSPEEDER_OSPEEDR13              ((uint32_t)0x0C000000)$ Z: \  q5 z1 `6 s9 r
  143. #define GPIO_OSPEEDER_OSPEEDR13_0            ((uint32_t)0x04000000)8 h6 D; j2 ^/ J) z7 d7 V5 U+ }3 z' Q
  144. #define GPIO_OSPEEDER_OSPEEDR13_1            ((uint32_t)0x08000000)
    / c  a9 L6 N" H" l
  145. 1 Q9 T% c! `: j
  146. #define GPIO_OSPEEDER_OSPEEDR14              ((uint32_t)0x30000000)
    5 }; A# f& Q. `, A" j* c. N+ w
  147. #define GPIO_OSPEEDER_OSPEEDR14_0            ((uint32_t)0x10000000)  O* r' N$ Q* S* k  I' G
  148. #define GPIO_OSPEEDER_OSPEEDR14_1            ((uint32_t)0x20000000)3 x0 \  _6 H* J, ^2 V( G* r
  149. * \: \. h& K* }- |* G. w2 l- d/ Y
  150. #define GPIO_OSPEEDER_OSPEEDR15              ((uint32_t)0xC0000000), E; j, T9 |" [- M' }
  151. #define GPIO_OSPEEDER_OSPEEDR15_0            ((uint32_t)0x40000000)
    : ^" I0 h' {' u+ @% Y
  152. #define GPIO_OSPEEDER_OSPEEDR15_1            ((uint32_t)0x80000000)
    1 ]( f% o. S2 }
  153. $ E9 @% E2 V  }  \- ]3 W0 j# {2 X/ e
  154. /******************  Bits definition for GPIO_PUPDR register  *****************/: z: _, d/ X6 I* I3 i' S& t. g
  155. #define GPIO_PUPDR_PUPDR0                    ((uint32_t)0x00000003)
    4 S  w% O/ W5 {/ {& ~. @+ P
  156. #define GPIO_PUPDR_PUPDR0_0                  ((uint32_t)0x00000001)
    $ l; _/ o+ b( y' E6 T# n
  157. #define GPIO_PUPDR_PUPDR0_1                  ((uint32_t)0x00000002)
    / u1 X' Q) S/ Z  M6 X2 E

  158. + R& e6 J4 G" x5 q
  159. #define GPIO_PUPDR_PUPDR1                    ((uint32_t)0x0000000C)
    - Y" b% M2 @* f# d7 Q
  160. #define GPIO_PUPDR_PUPDR1_0                  ((uint32_t)0x00000004)* G* L. q# ~+ M! G% g- Q
  161. #define GPIO_PUPDR_PUPDR1_1                  ((uint32_t)0x00000008)
    # r: S. Y3 V9 }! T' E, f

  162. * v% I8 W9 [# x3 d
  163. #define GPIO_PUPDR_PUPDR2                    ((uint32_t)0x00000030)# |- u! w6 b. |. t  H  K; B, d/ F
  164. #define GPIO_PUPDR_PUPDR2_0                  ((uint32_t)0x00000010)
    6 [7 V% y0 E# }4 P1 I% P
  165. #define GPIO_PUPDR_PUPDR2_1                  ((uint32_t)0x00000020)( l2 A1 N  E  E2 A
  166. ! m& f; L9 J" g' O  q! r
  167. #define GPIO_PUPDR_PUPDR3                    ((uint32_t)0x000000C0)3 c+ ?9 R5 E0 @. K
  168. #define GPIO_PUPDR_PUPDR3_0                  ((uint32_t)0x00000040)5 K5 E( \7 W7 f4 J
  169. #define GPIO_PUPDR_PUPDR3_1                  ((uint32_t)0x00000080)" L  b. p& [9 A9 t# M/ p" z1 A

  170. " p$ B5 g  U* o  `& r4 ^0 x% E+ m
  171. #define GPIO_PUPDR_PUPDR4                    ((uint32_t)0x00000300)
    0 z/ {) s' m- T( L& d% b9 x
  172. #define GPIO_PUPDR_PUPDR4_0                  ((uint32_t)0x00000100)
    " K7 P! v% A) V6 E, E8 x
  173. #define GPIO_PUPDR_PUPDR4_1                  ((uint32_t)0x00000200)" c) h, N  R+ g+ U" P6 d

  174. 4 S$ _& U7 U1 n; a4 g
  175. #define GPIO_PUPDR_PUPDR5                    ((uint32_t)0x00000C00)
      B' }/ f- R# s5 x: W% H. w! `
  176. #define GPIO_PUPDR_PUPDR5_0                  ((uint32_t)0x00000400)# W+ a, K4 ^' y+ B( g! D1 p
  177. #define GPIO_PUPDR_PUPDR5_1                  ((uint32_t)0x00000800)
    , `' X0 e. [$ y8 p& t; a+ q3 S

  178. . p. B/ b% U+ s# U8 i- p
  179. #define GPIO_PUPDR_PUPDR6                    ((uint32_t)0x00003000)
    6 j5 Y" r8 i4 g% X/ P; ]* J
  180. #define GPIO_PUPDR_PUPDR6_0                  ((uint32_t)0x00001000)! F3 I9 F: i; G# d
  181. #define GPIO_PUPDR_PUPDR6_1                  ((uint32_t)0x00002000)5 Z) J  m( a1 u* b9 n; D

  182. ( h/ ~) r# I. c5 O0 O
  183. #define GPIO_PUPDR_PUPDR7                    ((uint32_t)0x0000C000)
    $ ~. G2 S% k3 |7 [0 P! U: n
  184. #define GPIO_PUPDR_PUPDR7_0                  ((uint32_t)0x00004000)
    9 o6 Z( a0 k4 U/ E
  185. #define GPIO_PUPDR_PUPDR7_1                  ((uint32_t)0x00008000)
    . r/ R! `9 D( x$ c1 r

  186. . t# n  }3 X; s* I
  187. #define GPIO_PUPDR_PUPDR8                    ((uint32_t)0x00030000)( ^: P' G4 N0 G6 \6 q( w
  188. #define GPIO_PUPDR_PUPDR8_0                  ((uint32_t)0x00010000)
    ( x. R% V9 k- e4 X+ @9 a3 \8 k; D
  189. #define GPIO_PUPDR_PUPDR8_1                  ((uint32_t)0x00020000)6 N# c/ {( @2 O: {9 a0 t6 V

  190. ( E7 s( W- d4 w: f) N
  191. #define GPIO_PUPDR_PUPDR9                    ((uint32_t)0x000C0000)+ W' ]1 d' x; S" L
  192. #define GPIO_PUPDR_PUPDR9_0                  ((uint32_t)0x00040000)
      A2 t" `5 ~. ?) i
  193. #define GPIO_PUPDR_PUPDR9_1                  ((uint32_t)0x00080000)9 h. T7 B5 A' G% x4 g' I& A
  194. 4 N6 N1 L, m1 Y+ m$ B
  195. #define GPIO_PUPDR_PUPDR10                   ((uint32_t)0x00300000)9 N$ a% M8 q) m" E% Y, |. ^# \
  196. #define GPIO_PUPDR_PUPDR10_0                 ((uint32_t)0x00100000)
    ! P! n4 K: q0 U" i# y+ j: u
  197. #define GPIO_PUPDR_PUPDR10_1                 ((uint32_t)0x00200000)
      U( o6 b0 @7 ]2 m$ d/ }9 `) ?

  198. % q7 C% W' M# ]: B/ ^$ D) f
  199. #define GPIO_PUPDR_PUPDR11                   ((uint32_t)0x00C00000)
    , F( v5 H% J6 m# K
  200. #define GPIO_PUPDR_PUPDR11_0                 ((uint32_t)0x00400000), ~4 F& B' c4 q. F1 v$ j
  201. #define GPIO_PUPDR_PUPDR11_1                 ((uint32_t)0x00800000)0 D0 l, o# I; |5 M

  202. 6 q, v3 X" K, h2 d8 s5 t. K* l4 _
  203. #define GPIO_PUPDR_PUPDR12                   ((uint32_t)0x03000000)& s( X6 [4 o4 |+ D3 J8 T. ^0 Z
  204. #define GPIO_PUPDR_PUPDR12_0                 ((uint32_t)0x01000000)
    " ?1 d, V0 S4 _- s9 l0 m8 N
  205. #define GPIO_PUPDR_PUPDR12_1                 ((uint32_t)0x02000000)
    ) m) L& q# e6 A. E7 j
  206. 5 y* L/ F/ X8 ?( M# [
  207. #define GPIO_PUPDR_PUPDR13                   ((uint32_t)0x0C000000)
    ) x7 `! B. S8 a2 Y; a1 o* x
  208. #define GPIO_PUPDR_PUPDR13_0                 ((uint32_t)0x04000000)& `; A% Y; I# c7 A
  209. #define GPIO_PUPDR_PUPDR13_1                 ((uint32_t)0x08000000)
    2 G+ x& h) v9 P5 b: s

  210. 2 Y+ Q  ^1 {! d3 n" I
  211. #define GPIO_PUPDR_PUPDR14                   ((uint32_t)0x30000000)
    : P; s; ^+ q$ }7 B7 U7 r
  212. #define GPIO_PUPDR_PUPDR14_0                 ((uint32_t)0x10000000)
    + _/ J& ?( R/ W8 k3 n: S
  213. #define GPIO_PUPDR_PUPDR14_1                 ((uint32_t)0x20000000)" }9 c/ b( V4 H3 @! X" n8 P
  214. 2 T2 D/ D9 x  t/ a9 v
  215. #define GPIO_PUPDR_PUPDR15                   ((uint32_t)0xC0000000)# ?5 t  D9 `- s6 @( U$ c/ h. `* m
  216. #define GPIO_PUPDR_PUPDR15_0                 ((uint32_t)0x40000000)1 ^+ T7 c1 I  ~% l) Y' c- l" M
  217. #define GPIO_PUPDR_PUPDR15_1                 ((uint32_t)0x80000000)
    ! j3 L; ?8 U# ?' \" v6 M1 c
  218. . q' A# j. U* u! b
  219. /******************  Bits definition for GPIO_IDR register  *******************/
    : t8 E: l5 \0 p. I' i* f# C* ]
  220. #define GPIO_IDR_IDR_0                       ((uint32_t)0x00000001). c9 ]- y+ s: G
  221. #define GPIO_IDR_IDR_1                       ((uint32_t)0x00000002)
    3 H) E* S) {& S; [9 S
  222. #define GPIO_IDR_IDR_2                       ((uint32_t)0x00000004)
    ) ?# k- _% t, A6 {- k5 c( P% f
  223. #define GPIO_IDR_IDR_3                       ((uint32_t)0x00000008)
    ' p! v, Q( s0 X+ J5 t
  224. #define GPIO_IDR_IDR_4                       ((uint32_t)0x00000010)
      K( H: n2 N% ?& F7 e8 K# O9 u* M
  225. #define GPIO_IDR_IDR_5                       ((uint32_t)0x00000020)
    1 y" @; T& p/ S! B' i5 v7 w9 Z
  226. #define GPIO_IDR_IDR_6                       ((uint32_t)0x00000040)
    8 r( \# L& D9 z% y# P- j& }
  227. #define GPIO_IDR_IDR_7                       ((uint32_t)0x00000080)  C. c6 F3 Q* |. W& Z
  228. #define GPIO_IDR_IDR_8                       ((uint32_t)0x00000100). H3 ^$ E% F) a9 Y" H
  229. #define GPIO_IDR_IDR_9                       ((uint32_t)0x00000200)
    % `" b) R8 F3 w! f9 ]: k# i4 T! O
  230. #define GPIO_IDR_IDR_10                      ((uint32_t)0x00000400). r8 x) M( d2 o; w  H
  231. #define GPIO_IDR_IDR_11                      ((uint32_t)0x00000800)2 V1 u, w' _. d! [: n  j  K
  232. #define GPIO_IDR_IDR_12                      ((uint32_t)0x00001000)
    ! U' e5 D% {  T2 [5 p  e9 N( i7 v
  233. #define GPIO_IDR_IDR_13                      ((uint32_t)0x00002000)0 V8 g& s( m( |4 [& ]1 a' d
  234. #define GPIO_IDR_IDR_14                      ((uint32_t)0x00004000)8 c2 o" I# ?2 O4 ~! F3 X; L$ |
  235. #define GPIO_IDR_IDR_15                      ((uint32_t)0x00008000)1 y. ]: C  W5 N" q
  236. /* Old GPIO_IDR register bits definition, maintained for legacy purpose */8 `) M( n' X, p2 w) t; \
  237. #define GPIO_OTYPER_IDR_0                    GPIO_IDR_IDR_0
    . y) g& k& |: K$ ]% Q+ ]
  238. #define GPIO_OTYPER_IDR_1                    GPIO_IDR_IDR_1' F  J9 S6 E% ^! ^  w( x- q' v
  239. #define GPIO_OTYPER_IDR_2                    GPIO_IDR_IDR_2
    - }- t) k+ I  e. ?5 [; P( e& X
  240. #define GPIO_OTYPER_IDR_3                    GPIO_IDR_IDR_33 S" G9 |; y5 K/ a' f
  241. #define GPIO_OTYPER_IDR_4                    GPIO_IDR_IDR_4
    7 N. n- T: R" i# f! b- F
  242. #define GPIO_OTYPER_IDR_5                    GPIO_IDR_IDR_59 Q+ g7 I2 O/ L3 y5 E$ k
  243. #define GPIO_OTYPER_IDR_6                    GPIO_IDR_IDR_6
    2 ^& q& U$ p8 V- {* D: v
  244. #define GPIO_OTYPER_IDR_7                    GPIO_IDR_IDR_79 [& D6 |) u, U
  245. #define GPIO_OTYPER_IDR_8                    GPIO_IDR_IDR_8
    7 o$ x) ]. ~  Q9 U" E
  246. #define GPIO_OTYPER_IDR_9                    GPIO_IDR_IDR_9% |& Y0 t- h8 I( O: s
  247. #define GPIO_OTYPER_IDR_10                   GPIO_IDR_IDR_10' g4 s) `, Q2 i% T  ~) Z0 s
  248. #define GPIO_OTYPER_IDR_11                   GPIO_IDR_IDR_11
    4 b+ F+ [% {3 r
  249. #define GPIO_OTYPER_IDR_12                   GPIO_IDR_IDR_12
    5 z6 A/ l* Z2 q8 ]( [
  250. #define GPIO_OTYPER_IDR_13                   GPIO_IDR_IDR_13* O# D' V/ v7 K0 j& p0 x
  251. #define GPIO_OTYPER_IDR_14                   GPIO_IDR_IDR_14
    + l' T$ o& [$ R3 H
  252. #define GPIO_OTYPER_IDR_15                   GPIO_IDR_IDR_15
    & p! }" a# K. p/ B# [  v
  253. 8 P8 T+ d# ]1 s$ `1 U1 q* d
  254. /******************  Bits definition for GPIO_ODR register  *******************/" V# W; C7 Z' ^' F  ]  U
  255. #define GPIO_ODR_ODR_0                       ((uint32_t)0x00000001)' [9 z8 G& r' K/ |! S7 ^1 R* s
  256. #define GPIO_ODR_ODR_1                       ((uint32_t)0x00000002)& M& q1 x9 u% u$ X
  257. #define GPIO_ODR_ODR_2                       ((uint32_t)0x00000004)7 H  `) q$ L/ l; Y' H
  258. #define GPIO_ODR_ODR_3                       ((uint32_t)0x00000008)6 V- Y6 j  p* W# s. O) _+ Z3 H
  259. #define GPIO_ODR_ODR_4                       ((uint32_t)0x00000010)
    - X' I) g0 T; u% p
  260. #define GPIO_ODR_ODR_5                       ((uint32_t)0x00000020)
    1 [) N$ m7 y7 ?' j" W' F0 d. Y
  261. #define GPIO_ODR_ODR_6                       ((uint32_t)0x00000040)
    4 y* U  e# H  Y
  262. #define GPIO_ODR_ODR_7                       ((uint32_t)0x00000080)
    ! n. b5 K6 w5 y2 u: Q; @8 T
  263. #define GPIO_ODR_ODR_8                       ((uint32_t)0x00000100)3 K' n7 N3 n9 r1 y( R1 O
  264. #define GPIO_ODR_ODR_9                       ((uint32_t)0x00000200)
    / G2 w  m4 _# F# }- g
  265. #define GPIO_ODR_ODR_10                      ((uint32_t)0x00000400)3 V; Z# e. f7 u+ U7 b; C  }
  266. #define GPIO_ODR_ODR_11                      ((uint32_t)0x00000800)" ~5 H( c, `9 o' C# ~% _
  267. #define GPIO_ODR_ODR_12                      ((uint32_t)0x00001000)
    % u8 N: E, X$ Q0 I
  268. #define GPIO_ODR_ODR_13                      ((uint32_t)0x00002000)
    8 E) P/ I1 |8 l0 ^7 N0 ]
  269. #define GPIO_ODR_ODR_14                      ((uint32_t)0x00004000)+ a$ b5 X# w, B( O+ L
  270. #define GPIO_ODR_ODR_15                      ((uint32_t)0x00008000)
    5 V: O6 g" w  v- `* _# P# L
  271. /* Old GPIO_ODR register bits definition, maintained for legacy purpose */
    ) t  i0 ], D& U9 Z7 m6 Q. ]
  272. #define GPIO_OTYPER_ODR_0                    GPIO_ODR_ODR_0
    1 Q8 F( f  a; r2 r
  273. #define GPIO_OTYPER_ODR_1                    GPIO_ODR_ODR_1
    2 K/ P6 h- H# n3 v8 J7 K
  274. #define GPIO_OTYPER_ODR_2                    GPIO_ODR_ODR_2
    . h' A+ f$ T2 ^( C# [2 ^
  275. #define GPIO_OTYPER_ODR_3                    GPIO_ODR_ODR_3
    8 F2 g5 h! Y$ p7 v' @: H& t# ^! E
  276. #define GPIO_OTYPER_ODR_4                    GPIO_ODR_ODR_4! Z  ^. S/ c$ ~4 e
  277. #define GPIO_OTYPER_ODR_5                    GPIO_ODR_ODR_5, b4 i0 Y, y+ @% F& ~! F4 }
  278. #define GPIO_OTYPER_ODR_6                    GPIO_ODR_ODR_6
    ! \9 ]4 k5 k1 P5 c- O$ g9 Y
  279. #define GPIO_OTYPER_ODR_7                    GPIO_ODR_ODR_7
    ( k) h7 O) }' q% H& x, H9 j9 B6 [
  280. #define GPIO_OTYPER_ODR_8                    GPIO_ODR_ODR_82 V% x* f& Y! U
  281. #define GPIO_OTYPER_ODR_9                    GPIO_ODR_ODR_92 S! Z# J& G, x! J6 F
  282. #define GPIO_OTYPER_ODR_10                   GPIO_ODR_ODR_10
    ; S) E) ~/ X6 q: f& K8 c4 Q
  283. #define GPIO_OTYPER_ODR_11                   GPIO_ODR_ODR_11
    4 ?9 E7 n2 E  D/ [$ X& p8 I
  284. #define GPIO_OTYPER_ODR_12                   GPIO_ODR_ODR_12
    7 r3 r" O5 e# [. ]1 R. A2 D
  285. #define GPIO_OTYPER_ODR_13                   GPIO_ODR_ODR_137 [" U1 \0 v4 S. d( m; m9 U' W
  286. #define GPIO_OTYPER_ODR_14                   GPIO_ODR_ODR_14- @, Y0 g, r; d! u
  287. #define GPIO_OTYPER_ODR_15                   GPIO_ODR_ODR_15
    / h7 q: u) S9 p+ p9 ^4 s$ I

  288. ! D* B- N0 [$ ^! ]! ^
  289. /******************  Bits definition for GPIO_BSRR register  ******************/( o" n" d1 ?0 \
  290. #define GPIO_BSRR_BS_0                       ((uint32_t)0x00000001)
    / S9 ]4 ]4 `' _0 j) i
  291. #define GPIO_BSRR_BS_1                       ((uint32_t)0x00000002)
    ) ?$ `" `1 u8 Q; M
  292. #define GPIO_BSRR_BS_2                       ((uint32_t)0x00000004)" r, C/ P& L  C$ C3 q8 K
  293. #define GPIO_BSRR_BS_3                       ((uint32_t)0x00000008)% `- W6 H2 W1 ~5 [
  294. #define GPIO_BSRR_BS_4                       ((uint32_t)0x00000010)
    2 j* \- ~( y! e) }8 w  e7 k* H
  295. #define GPIO_BSRR_BS_5                       ((uint32_t)0x00000020)
    * H9 G* g0 u( w  R* Z
  296. #define GPIO_BSRR_BS_6                       ((uint32_t)0x00000040)
    " x# v: t9 t( d( @" U% }
  297. #define GPIO_BSRR_BS_7                       ((uint32_t)0x00000080)
    , ~& ^; F0 e. j3 F2 J9 W( V* O# ]1 g3 |
  298. #define GPIO_BSRR_BS_8                       ((uint32_t)0x00000100)- Q( y+ {7 A& b
  299. #define GPIO_BSRR_BS_9                       ((uint32_t)0x00000200)# N; t8 \5 z  }& Y
  300. #define GPIO_BSRR_BS_10                      ((uint32_t)0x00000400)
    6 e' O, \8 p0 v6 ?) V  h
  301. #define GPIO_BSRR_BS_11                      ((uint32_t)0x00000800)
      W5 C( Y' J2 _) u! x
  302. #define GPIO_BSRR_BS_12                      ((uint32_t)0x00001000). D1 b7 u& Y% w, ~1 v' z$ n& g- J
  303. #define GPIO_BSRR_BS_13                      ((uint32_t)0x00002000)
    . i8 ~' u4 j& A  c
  304. #define GPIO_BSRR_BS_14                      ((uint32_t)0x00004000)/ N& E  W# A# _2 x6 r/ x
  305. #define GPIO_BSRR_BS_15                      ((uint32_t)0x00008000)4 o( k  g2 ]( z' _7 r' Y) s1 v( a/ G
  306. #define GPIO_BSRR_BR_0                       ((uint32_t)0x00010000)
    / X- o/ w2 y) a  S4 ?
  307. #define GPIO_BSRR_BR_1                       ((uint32_t)0x00020000)
    & R5 U( ]4 [/ O& M% E3 t! ]
  308. #define GPIO_BSRR_BR_2                       ((uint32_t)0x00040000)5 ^- [# ]3 F; `9 W% F
  309. #define GPIO_BSRR_BR_3                       ((uint32_t)0x00080000)8 T" w! Y. w" Z1 r# c
  310. #define GPIO_BSRR_BR_4                       ((uint32_t)0x00100000)
    ( h7 n& y  e- _: Z* N" R7 \8 M6 P, j. c& _
  311. #define GPIO_BSRR_BR_5                       ((uint32_t)0x00200000)
    ( ?( Q" m* d# a# g( u2 B1 p
  312. #define GPIO_BSRR_BR_6                       ((uint32_t)0x00400000)
    + X" W' c- r1 M
  313. #define GPIO_BSRR_BR_7                       ((uint32_t)0x00800000)
    : o1 R7 H7 [" u7 Z" k
  314. #define GPIO_BSRR_BR_8                       ((uint32_t)0x01000000)
    9 ^- I# g6 |2 A: o3 a3 ]
  315. #define GPIO_BSRR_BR_9                       ((uint32_t)0x02000000)7 b# Q5 z* d2 H7 d8 A9 u+ [
  316. #define GPIO_BSRR_BR_10                      ((uint32_t)0x04000000)6 J4 g6 x7 |3 `3 x: e
  317. #define GPIO_BSRR_BR_11                      ((uint32_t)0x08000000)$ P6 ^0 I0 q0 F2 ^
  318. #define GPIO_BSRR_BR_12                      ((uint32_t)0x10000000)
    / Q+ H3 a$ U5 R' s4 B5 B3 j+ B
  319. #define GPIO_BSRR_BR_13                      ((uint32_t)0x20000000)& }- q* n" J+ \. z
  320. #define GPIO_BSRR_BR_14                      ((uint32_t)0x40000000)) j& e1 M. w+ n( L7 F
  321. #define GPIO_BSRR_BR_15                      ((uint32_t)0x80000000)
复制代码

4 f0 ^' s! Z1 G3 ~% KGPIO全部挂载AHB1总线上

) u/ b- D4 |  w) q8 O& |% q: D  ?% R- i4 l% w0 u4 e

  1. 8 ^/ _) I. s9 Z  s& _  l! ~
  2. /********************  Bit definition for RCC_AHB1ENR register  ***************/6 D. N4 ~. s! q& _
  3. #define  RCC_AHB1ENR_GPIOAEN                 ((uint32_t)0x00000001)0 Y) F/ B2 B0 n' \- ?
  4. #define  RCC_AHB1ENR_GPIOBEN                 ((uint32_t)0x00000002)' ]8 z+ h# O7 {+ h) F4 V2 x
  5. #define  RCC_AHB1ENR_GPIOCEN                 ((uint32_t)0x00000004)
    $ o0 \& R; y1 W  _- `$ B7 N4 s
  6. #define  RCC_AHB1ENR_GPIODEN                 ((uint32_t)0x00000008)
    , t3 R0 @' c% z/ h& N. H1 B
  7. #define  RCC_AHB1ENR_GPIOEEN                 ((uint32_t)0x00000010)
    " ~. }! o7 o; z% ?
  8. #define  RCC_AHB1ENR_GPIOFEN                 ((uint32_t)0x00000020)
    - v* @( [2 q; v1 W! f+ y
  9. #define  RCC_AHB1ENR_GPIOGEN                 ((uint32_t)0x00000040)
    8 f  u3 w/ [* t1 z8 T, t
  10. #define  RCC_AHB1ENR_GPIOHEN                 ((uint32_t)0x00000080)8 {& K3 q4 ^' V+ E( X- @
  11. #define  RCC_AHB1ENR_GPIOIEN                 ((uint32_t)0x00000100). E2 s1 z' g/ l7 x# q
  12. #define  RCC_AHB1ENR_GPIOJEN                 ((uint32_t)0x00000200); l( S+ C- N! r9 T0 \4 Q
  13. #define  RCC_AHB1ENR_GPIOKEN                 ((uint32_t)0x00000400)
复制代码
+ |% Z  ]* O+ n
赞 收藏 评论0 发布时间:2022-4-3 15:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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