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

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

[复制链接]
STMCU小助手 发布时间:2022-4-3 15:00
01. GPIO固件库概述
, I; ?1 i+ d. n" p$ A( J; i  w) o) h5 C' vstm32f4xx_gpio.h GPIO相关函数和类型的声明
9 _. p7 ?7 W" _. I
* j5 T3 H, y2 D- Q) N5 ^2 Mstm32f4xx_gpio.c GPIO相关函数具体实现。
/ k6 u) [  H3 g4 G1 z9 s+ q/ z8 ~1 s5 F* u
02. GPIO相关类型% [; T9 |& }9 x* J% H0 h) ^9 n1 f7 W" \
GPIO相关的类型几乎都在stm32f4xx_gpio.h文件中。
" f2 b+ P  a9 H% z) q  j8 v8 d$ l4 j2 B
GPIO的模式# l) l- `7 V+ ^9 r2 D' |; Y

+ t, U7 Q: B/ ]9 j: V5 D
  1. /** % P+ h9 |) I/ ^* v( r: t2 u
  2.   * @brief  GPIO Configuration Mode enumeration 7 n; \" d4 l# X3 M- K
  3.   */   
    ! Q( K9 r! {9 i+ @7 |$ Q) J' m# Z
  4. typedef enum
    4 A5 y3 m+ l4 V, {  [
  5. { ) z+ g0 H3 D) i- Q9 |4 @' f
  6.   GPIO_Mode_IN   = 0x00, /*!< GPIO Input Mode */5 ]1 g) Q: U, [6 T8 b/ X
  7.   GPIO_Mode_OUT  = 0x01, /*!< GPIO Output Mode */
    $ W0 C: r( s0 c$ U
  8.   GPIO_Mode_AF   = 0x02, /*!< GPIO Alternate function Mode */. F) M1 c  s4 x  p: L# e/ A
  9.   GPIO_Mode_AN   = 0x03  /*!< GPIO Analog Mode */
    5 {! u8 M+ F0 Z- K5 d. j
  10. }GPIOMode_TypeDef;
    - r4 H+ X) x" q& ?
  11. #define IS_GPIO_MODE(MODE) (((MODE) == GPIO_Mode_IN)  || ((MODE) == GPIO_Mode_OUT) || \! K% n+ s9 I- \5 I" o
  12.                             ((MODE) == GPIO_Mode_AF)|| ((MODE) == GPIO_Mode_AN))
复制代码
5 q% u/ B" c, a2 _' N- e$ C
GPIO输出类型  m+ _- s" N$ }" w: Z6 K* T

; ?; c0 a2 B7 m5 e. w- n% o
  1. /**
      X" L5 i( Y: b4 Z2 H8 d- S
  2.   * @brief  GPIO Output type enumeration 5 P: z, l+ e6 X6 j2 u2 z
  3.   */  ! m, g" n2 v1 ~+ }! E, G9 ~
  4. typedef enum1 E& [: Y( m5 D1 R) S
  5. {
    : \3 o) o5 b& c" C7 h' a0 C
  6.   GPIO_OType_PP = 0x00,
    7 Q; `9 A1 X' p. h$ h2 Z/ i! a
  7.   GPIO_OType_OD = 0x01! K- z3 A: e  e  S" K% Q; O, ?
  8. }GPIOOType_TypeDef;
    ! G& e, |' z- {$ m
  9. #define IS_GPIO_OTYPE(OTYPE) (((OTYPE) == GPIO_OType_PP) || ((OTYPE) == GPIO_OType_OD))
    ( C+ Q# Z: r! s' |6 t: P7 n
复制代码

2 o9 d1 L( h; [/ ?7 LGPIO输出速度
1 {$ [( O3 [! ~3 W5 |+ D
- w- r' r$ r8 ]- f9 \9 A& i
  1. /** / E/ b  c- w  |: g* q; @
  2.   * @brief  GPIO Output Maximum frequency enumeration $ ~7 i* s" Y& g( d7 o# i
  3.   */  
      N" a: D# M5 C2 l' r$ ]
  4. typedef enum* R- I8 G8 m, I7 z' e) Z5 L2 w
  5. { + w' p% w( D! ]! o$ G2 u2 z/ P
  6.   GPIO_Low_Speed     = 0x00, /*!< Low speed    */
    7 a2 C( p5 @( D& ^1 B* V$ I$ r9 w
  7.   GPIO_Medium_Speed  = 0x01, /*!< Medium speed */
    ! _* n/ V$ ?0 X, w% Q
  8.   GPIO_Fast_Speed    = 0x02, /*!< Fast speed   */0 N; i" f8 v' ~% w, W0 n
  9.   GPIO_High_Speed    = 0x03  /*!< High speed   */
    5 `4 n/ m; z- Y' {4 e+ e
  10. }GPIOSpeed_TypeDef;
    / |" S0 F) K& p+ X$ _3 _
  11. 0 u' x7 b7 U& {( K# M: x5 B1 A
  12. /* Add legacy definition */
    - j3 `, J* O3 N
  13. #define  GPIO_Speed_2MHz    GPIO_Low_Speed   
    ! r' }. r; \" ^4 P6 e. u
  14. #define  GPIO_Speed_25MHz   GPIO_Medium_Speed ( `/ j) E& S% R) ]) U. S
  15. #define  GPIO_Speed_50MHz   GPIO_Fast_Speed
    4 e6 p0 W& x% s' O& F2 e
  16. #define  GPIO_Speed_100MHz  GPIO_High_Speed  
    - V  a2 Q& d$ L

  17. / l  }1 y( M& t7 J) |- s; v7 |
  18. #define IS_GPIO_SPEED(SPEED) (((SPEED) == GPIO_Low_Speed) || ((SPEED) == GPIO_Medium_Speed) || \1 r" M2 ?3 B& I' k# H" B; `9 k. {/ \
  19.                               ((SPEED) == GPIO_Fast_Speed)||  ((SPEED) == GPIO_High_Speed))
复制代码

3 A) `4 e4 U/ q) L6 ]4 |GPIO上下拉2 v& V  N9 B, J7 e( D

- b" r4 K4 J) D" L/ z6 G1 l& I
  1. /** 0 R+ r+ Y3 S* F
  2.   * @brief  GPIO Configuration PullUp PullDown enumeration $ p# a4 N2 G9 Y8 Y% v
  3.   */
      A+ r5 z! z7 s  P
  4. typedef enum
    & U2 X3 ?# c0 c' ^, t
  5. { - ]( o# B$ `. g1 |4 c+ g, s
  6.   GPIO_PuPd_NOPULL = 0x00,  O, f' R- z( D1 h
  7.   GPIO_PuPd_UP     = 0x01,! t/ X& a% J; i! j( E% @4 ^
  8.   GPIO_PuPd_DOWN   = 0x023 M+ J' B9 J* T. F1 E2 p
  9. }GPIOPuPd_TypeDef;
    $ u* T  o5 n2 O! }
  10. #define IS_GPIO_PUPD(PUPD) (((PUPD) == GPIO_PuPd_NOPULL) || ((PUPD) == GPIO_PuPd_UP) || \
    8 n2 j# @. w: C
  11.                             ((PUPD) == GPIO_PuPd_DOWN))
复制代码
7 U$ o7 I0 d# l5 H+ A( W
GPIO置位和复位
' Q# O: b9 k" k% L! X: o& S1 s" W' ~( ?; ]
  1. /** 2 [) o' \9 x5 e5 q& q
  2.   * @brief  GPIO Bit SET and Bit RESET enumeration ' @' Q- @* p: o1 Y! _
  3.   */
    8 z, q6 N* P. s) E: T
  4. typedef enum5 N" c! J8 H7 R$ U8 i6 w6 R8 ?' v
  5. { * L# I) D% j  d2 I$ q$ ?8 M
  6.   Bit_RESET = 0,
    " F! Z8 k7 \9 X  T" S# B
  7.   Bit_SET
    5 J4 T5 |+ ?/ w' R& n
  8. }BitAction;+ Z+ i& B+ R0 I" n' J. @
  9. #define IS_GPIO_BIT_ACTION(ACTION) (((ACTION) == Bit_RESET) || ((ACTION) == Bit_SET))
复制代码

3 p+ ~# w. v: p* v8 h8 s( hGPIO初始化结构体类型声明2 Z% N  r/ A5 W3 E
- F( b; ?. t# P* _' p2 s9 i
  1. /** 5 i# ~' K0 J; {/ O( d4 C4 F2 y3 D
  2.   * @brief   GPIO Init structure definition  6 |4 u# _. \* X- h
  3.   */
    - T' d$ B4 T4 z1 o0 u
  4. typedef struct2 O% \9 c  q! M8 a7 V3 N
  5. {
    ! u* M* |% [4 S2 c2 ?8 a
  6.   uint32_t GPIO_Pin;              /*!< Specifies the GPIO pins to be configured.
      _6 O, b5 G, E5 e& o3 H' Y+ Y
  7.                                        This parameter can be any value of @ref GPIO_pins_define */  V+ G9 f2 C) a! ?. t
  8. " z. m, f! {  Y1 _+ |1 g+ R4 g
  9.   GPIOMode_TypeDef GPIO_Mode;     /*!< Specifies the operating mode for the selected pins.' T/ h- T4 k3 t6 w, v2 G$ T. X
  10.                                        This parameter can be a value of @ref GPIOMode_TypeDef */
    2 Y) X9 ^& k* x; p- O3 \
  11. 2 R8 u3 o' `0 x4 r1 ]6 c
  12.   GPIOSpeed_TypeDef GPIO_Speed;   /*!< Specifies the speed for the selected pins.7 B, X2 i. E7 O% X6 a# \
  13.                                        This parameter can be a value of @ref GPIOSpeed_TypeDef */% j* t2 Y3 Z) s; S3 G4 X0 |: o  x
  14. 5 K, r8 _3 ]7 z, ^: N
  15.   GPIOOType_TypeDef GPIO_OType;   /*!< Specifies the operating output type for the selected pins.5 W* k/ g/ Q8 L2 Y; c
  16.                                        This parameter can be a value of @ref GPIOOType_TypeDef */
    ( T+ [) k1 f1 G7 E/ A" X0 w9 J- q

  17. ) s5 O3 h  R$ _/ n, v7 N0 E
  18.   GPIOPuPd_TypeDef GPIO_PuPd;     /*!< Specifies the operating Pull-up/Pull down for the selected pins.& z7 ?7 l$ |- E/ f
  19.                                        This parameter can be a value of @ref GPIOPuPd_TypeDef */
      z, E/ k5 R/ m, q  r& _
  20. }GPIO_InitTypeDef;
    2 _( Z2 T; S; O# G1 G
复制代码
) }9 W/ O7 b% M* w7 w) A1 f
03. GPIO相关宏; P7 x; m( p- q! f
判断是否为合法的GPIO外设) w/ K, I/ ]4 ~0 D7 B# Z
. h' n! N4 Y& a  J- q5 i
  1. #define IS_GPIO_ALL_PERIPH(PERIPH) (((PERIPH) == GPIOA) || \& V3 A  h$ ~* @1 Z1 j! ?& v: x! @( m) l
  2.                                     ((PERIPH) == GPIOB) || \5 v5 C( G  [" ?' E
  3.                                     ((PERIPH) == GPIOC) || \4 ~) j8 D9 W( `: Z; J4 u6 B
  4.                                     ((PERIPH) == GPIOD) || \
    6 S# E/ o% u" ]6 ]% W, c; v
  5.                                     ((PERIPH) == GPIOE) || \# h* h- J3 T7 f8 ]. J9 o- ^
  6.                                     ((PERIPH) == GPIOF) || \0 v" H1 Q) j) g1 N+ Q4 V
  7.                                     ((PERIPH) == GPIOG) || \4 J* q. ^  K! _& t+ a# R
  8.                                     ((PERIPH) == GPIOH) || \/ q" v+ p2 c6 ~1 G
  9.                                     ((PERIPH) == GPIOI) || \$ a+ e. P2 Q, l9 D  w$ I' C8 o/ [7 ]
  10.                                     ((PERIPH) == GPIOJ) || \! U& _7 H/ h2 i  L( D* G
  11.                                     ((PERIPH) == GPIOK))
复制代码

+ [- P, s+ ]4 h( L* qGPIO合法的引脚
; r7 F9 X, q8 ^* F: x
9 Y" a. i8 l& t  B
  1. /** @defgroup GPIO_pins_define
    * B3 Y4 `! U5 r9 S! a6 ]$ ]' p+ F
  2.   * @{
    4 Z9 @& Q. Y6 }( l$ y
  3.   */ / k& j* G9 u, i4 e7 [
  4. #define GPIO_Pin_0                 ((uint16_t)0x0001)  /* Pin 0 selected */
    ; T! P# u- ^% |! q
  5. #define GPIO_Pin_1                 ((uint16_t)0x0002)  /* Pin 1 selected */9 D2 N- D5 g. p$ h6 \9 N
  6. #define GPIO_Pin_2                 ((uint16_t)0x0004)  /* Pin 2 selected */) q9 g$ S; L4 o+ P* P
  7. #define GPIO_Pin_3                 ((uint16_t)0x0008)  /* Pin 3 selected */3 O8 B9 l8 `8 B" v9 V% N! q
  8. #define GPIO_Pin_4                 ((uint16_t)0x0010)  /* Pin 4 selected */
    & |/ F4 O. P& Y/ B
  9. #define GPIO_Pin_5                 ((uint16_t)0x0020)  /* Pin 5 selected */
    " l/ a. O. `+ d! q3 \
  10. #define GPIO_Pin_6                 ((uint16_t)0x0040)  /* Pin 6 selected *// H/ Q6 s) Q! y8 j
  11. #define GPIO_Pin_7                 ((uint16_t)0x0080)  /* Pin 7 selected */
    2 L7 O5 v0 x- i
  12. #define GPIO_Pin_8                 ((uint16_t)0x0100)  /* Pin 8 selected */
    : @$ T2 M  k% y# W' T
  13. #define GPIO_Pin_9                 ((uint16_t)0x0200)  /* Pin 9 selected */
    3 [& Q8 b: p) g- }/ S2 N& c
  14. #define GPIO_Pin_10                ((uint16_t)0x0400)  /* Pin 10 selected */+ W2 S0 m) _6 Q/ I& S
  15. #define GPIO_Pin_11                ((uint16_t)0x0800)  /* Pin 11 selected */
    8 y( h3 v6 T% ]  R
  16. #define GPIO_Pin_12                ((uint16_t)0x1000)  /* Pin 12 selected */
    3 y+ O! ~9 d' T
  17. #define GPIO_Pin_13                ((uint16_t)0x2000)  /* Pin 13 selected */
    5 ]7 e- }% I# K0 |8 F  X
  18. #define GPIO_Pin_14                ((uint16_t)0x4000)  /* Pin 14 selected */
    # `& j4 w. w* N, B5 w
  19. #define GPIO_Pin_15                ((uint16_t)0x8000)  /* Pin 15 selected */1 a1 K/ W3 ^; }  E
  20. #define GPIO_Pin_All               ((uint16_t)0xFFFF)  /* All pins selected */2 u' y% ]$ l. n/ d* x9 `
  21. " @8 P; V# z! w% l+ P$ a2 N& l
  22. #define GPIO_PIN_MASK              ((uint32_t)0x0000FFFF) /* PIN mask for assert test */" p4 d- ?6 Y# O& t- u/ d: @
  23. #define IS_GPIO_PIN(PIN)           (((PIN) & GPIO_PIN_MASK ) != (uint32_t)0x00)+ H" Z) l  S1 g; m- ^
  24. #define IS_GET_GPIO_PIN(PIN) (((PIN) == GPIO_Pin_0) || \, q; R" d: S/ ~5 V2 b
  25.                               ((PIN) == GPIO_Pin_1) || \, H4 q: s! ?# Y% }0 A" d
  26.                               ((PIN) == GPIO_Pin_2) || \
    / A, E. O. L: s: ]' ~* E( Q; V0 w+ x
  27.                               ((PIN) == GPIO_Pin_3) || \$ V+ j2 t/ ?0 j" t" c, s
  28.                               ((PIN) == GPIO_Pin_4) || \
    " a3 e# p! K7 w; v  O
  29.                               ((PIN) == GPIO_Pin_5) || \$ v1 Y$ e  n% b# k
  30.                               ((PIN) == GPIO_Pin_6) || \: l( t) v# I7 I$ O3 P. t3 L) T
  31.                               ((PIN) == GPIO_Pin_7) || \: U4 K$ f2 S& u, y  f, T* q5 ~, F3 h
  32.                               ((PIN) == GPIO_Pin_8) || \
    ; w( W7 q* J9 B, x- D5 D1 o
  33.                               ((PIN) == GPIO_Pin_9) || \9 Q; u* m, Q( S, H& n6 Q: [
  34.                               ((PIN) == GPIO_Pin_10) || \
    : l/ h) d' ^% s3 W
  35.                               ((PIN) == GPIO_Pin_11) || \$ N' Q% q; {9 O* J4 A
  36.                               ((PIN) == GPIO_Pin_12) || \* h& X* w/ h- F! F! D8 e
  37.                               ((PIN) == GPIO_Pin_13) || \! D# ?1 ~+ s  A' Y! }/ U
  38.                               ((PIN) == GPIO_Pin_14) || \
    & z' U0 \2 C0 u& N8 L: D
  39.                               ((PIN) == GPIO_Pin_15))
复制代码
" n& Y% a$ A- @
GPIO合法的引脚源. l$ X+ u/ \; G9 m, [
) ]& i/ f! A! J. }$ }# d" `! f( d
  1. $ p2 b0 ?( T, ]8 g  l, G
  2. /** @defgroup GPIO_Pin_sources
    1 ^/ w6 J+ E6 `1 B" F! g
  3.   * @{) Z  H; l. {) ^6 W" P! c, N* r% ~" J
  4.   */
    4 l) h' {/ [* h; b0 ^: w
  5. #define GPIO_PinSource0            ((uint8_t)0x00)
    , D, D- q% k; I3 d3 D. l& e6 z
  6. #define GPIO_PinSource1            ((uint8_t)0x01)
    # f* X  |, @+ N+ P% Y% l8 E% O
  7. #define GPIO_PinSource2            ((uint8_t)0x02)
    ! B! I9 C' f" N2 p
  8. #define GPIO_PinSource3            ((uint8_t)0x03)8 O( m8 G1 W2 l% ~8 r3 P
  9. #define GPIO_PinSource4            ((uint8_t)0x04)
    + V% ~; U2 c  N, [% S3 e& F
  10. #define GPIO_PinSource5            ((uint8_t)0x05)
    ) y0 M+ h6 u6 l) A  d' ~- v* v
  11. #define GPIO_PinSource6            ((uint8_t)0x06)
    # s9 }. B3 f& T/ L) I( s
  12. #define GPIO_PinSource7            ((uint8_t)0x07)! P; E$ y3 S- ^7 S0 o. _
  13. #define GPIO_PinSource8            ((uint8_t)0x08)
    . K5 z) C* D1 s9 v" a5 d
  14. #define GPIO_PinSource9            ((uint8_t)0x09)4 T- y  [# ?; z( C; X, z. N1 I
  15. #define GPIO_PinSource10           ((uint8_t)0x0A)
    # n: \/ V/ P5 b$ s& ?
  16. #define GPIO_PinSource11           ((uint8_t)0x0B)
    3 z  ]. Z, k  G% l" d7 S
  17. #define GPIO_PinSource12           ((uint8_t)0x0C)
    5 r* ~: T+ K6 E7 @! \
  18. #define GPIO_PinSource13           ((uint8_t)0x0D)
    - e! d- l7 \$ \: R
  19. #define GPIO_PinSource14           ((uint8_t)0x0E)
    2 T1 M7 H3 W9 d+ q; ^% `- o) ~
  20. #define GPIO_PinSource15           ((uint8_t)0x0F)
    6 J" n' I, y1 x

  21. 1 C4 J/ p6 ~4 c/ q; R# A
  22. #define IS_GPIO_PIN_SOURCE(PINSOURCE) (((PINSOURCE) == GPIO_PinSource0) || \$ ~8 G: I8 q! d6 N0 B+ q* |
  23.                                        ((PINSOURCE) == GPIO_PinSource1) || \: m' |3 Y$ y" l6 S7 e% p/ l
  24.                                        ((PINSOURCE) == GPIO_PinSource2) || \5 p5 Y- f3 u& j. V, M
  25.                                        ((PINSOURCE) == GPIO_PinSource3) || \. Y! k& ?1 F5 f" K8 |2 e
  26.                                        ((PINSOURCE) == GPIO_PinSource4) || \
    8 s' n9 a4 ^2 `" r2 V
  27.                                        ((PINSOURCE) == GPIO_PinSource5) || \; u. ^3 F( b4 ^( }& M
  28.                                        ((PINSOURCE) == GPIO_PinSource6) || \( E' N* q  w$ h: V0 k4 s
  29.                                        ((PINSOURCE) == GPIO_PinSource7) || \8 Q9 O3 e7 v: A" m% j8 y
  30.                                        ((PINSOURCE) == GPIO_PinSource8) || \
    % X' V+ Z0 V, C. t+ K$ u
  31.                                        ((PINSOURCE) == GPIO_PinSource9) || \
    0 y1 H, f# ]- k; B9 o8 }/ \
  32.                                        ((PINSOURCE) == GPIO_PinSource10) || \  w, T1 L0 x* @
  33.                                        ((PINSOURCE) == GPIO_PinSource11) || \
    , O$ }) s; d7 u+ a5 h* ~  w
  34.                                        ((PINSOURCE) == GPIO_PinSource12) || \& R1 t% Y5 D& ?" n8 [
  35.                                        ((PINSOURCE) == GPIO_PinSource13) || \
    ' L8 V$ B, e( M4 H% m/ P
  36.                                        ((PINSOURCE) == GPIO_PinSource14) || \4 j7 t; g5 g- |! ?' W" n
  37.                                        ((PINSOURCE) == GPIO_PinSource15))
复制代码

( L/ o; ^, Q9 ~! J04. GPIO相关函数
3 e9 L/ j% s# t2 c" U
  1. /*  Function used to set the GPIO configuration to the default reset state ****/) M$ @. I2 O. `" B; P$ L. D+ U  A
  2. //配置GPIO为默认状态
    ' _$ Y) `0 I# n) o: r
  3. void GPIO_DeInit(GPIO_TypeDef* GPIOx);
    ) h1 Z* V! [- B$ k/ D

  4. ; ~* v7 y: k5 h
  5. /* Initialization and Configuration functions *********************************/
    ; q4 M5 X* S1 q1 k4 v7 }( A  K
  6. //GPIO初始化
    6 {# Y) c' G7 k$ d6 _
  7. void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
    $ o5 i' y  A% v* O' d: m, [  B- W( \
  8. //GPIO结构体初始化& r! z& b2 B, i( {: S2 g+ O
  9. void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);
    3 }& K+ V! Y6 g3 n& ~6 v4 w
  10. //GPIO锁配置
    ) O" H1 F" X. O8 {' g/ ]
  11. void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);9 p/ {" R8 t# s2 @2 v+ s

  12. 7 r1 x1 ], H2 l% q
  13. /* GPIO Read and Write functions **********************************************/
    " ?' z8 Y' V5 k7 f4 d2 X
  14. //GPIO读写函数
    # W4 u$ p1 W9 H) H
  15. uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    . l7 X4 [* ?# u3 b* k5 K
  16. uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
    2 u' o8 k# P/ d0 p0 E4 C
  17. uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    1 U2 ^3 t6 p9 C& f/ V. m1 V
  18. uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
    ; l9 i3 u: ?0 z4 X
  19. void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);8 X0 i- t: u* o8 w: [7 B
  20. void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    ; f2 V1 E7 @7 \
  21. void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
    3 B0 ~) q1 S+ M* K
  22. void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);2 x& E  M) Y$ E7 i9 X# W1 X6 T0 S
  23. void GPIO_ToggleBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);$ I8 j2 B, N; d
  24. ) s! k% R. }1 a7 n1 x. h/ {; {
  25. /* GPIO Alternate functions configuration function ****************************/
    8 U+ X* ]# _. e( X- ?6 T$ z
  26. void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF);
复制代码

) E& w" a. I* K$ E; m05. GPIO其它相关
0 O) K! y4 d& X: kstm32f4xx.h文件中
8 `, D% S+ G: A
0 K/ U$ t9 |3 ^通用GPIO结构体封装
1 U) b# c4 V; V; {8 X. `% v
+ _0 |+ S; ?; Z* N" H
  1. typedef struct
    7 x' N0 B7 _  c; c- F8 Y
  2. {
    2 X2 G; Z8 S7 w3 `2 t" c
  3.   __IO uint32_t MODER;    /*!< GPIO port mode register,               Address offset: 0x00      */! p/ k5 x- f8 T/ X" t
  4.   __IO uint32_t OTYPER;   /*!< GPIO port output type register,        Address offset: 0x04      */4 y4 ]* ?6 [- p' ?' k
  5.   __IO uint32_t OSPEEDR;  /*!< GPIO port output speed register,       Address offset: 0x08      */2 o7 J4 v+ q6 X& p( ?+ \
  6.   __IO uint32_t PUPDR;    /*!< GPIO port pull-up/pull-down register,  Address offset: 0x0C      */9 i" ~$ D6 C6 B
  7.   __IO uint32_t IDR;      /*!< GPIO port input data register,         Address offset: 0x10      */
    + d, G& _( C. N4 v9 I% ~
  8.   __IO uint32_t ODR;      /*!< GPIO port output data register,        Address offset: 0x14      */
    ( |. C$ w7 f- {2 |" V0 l
  9.   __IO uint16_t BSRRL;    /*!< GPIO port bit set/reset low register,  Address offset: 0x18      */  M/ r# R" p5 F; n
  10.   __IO uint16_t BSRRH;    /*!< GPIO port bit set/reset high register, Address offset: 0x1A      */6 y7 D1 |( C: O1 I4 n* M- [5 [2 ~
  11.   __IO uint32_t LCKR;     /*!< GPIO port configuration lock register, Address offset: 0x1C      */% R: o2 f& o  N" r, a; b
  12.   __IO uint32_t AFR[2];   /*!< GPIO alternate function registers,     Address offset: 0x20-0x24 */" v: x$ H% l8 R2 H: L
  13. } GPIO_TypeDef;
复制代码
) _" E1 x$ h7 R. o' D$ u4 L5 R: O
GPIO基地址
/ `- k7 X0 J9 ]5 C) o0 n- f6 P& ?3 O( F
  1. /*!< AHB1 peripherals */% v9 ?  d; }/ m" c" s
  2. #define GPIOA_BASE            (AHB1PERIPH_BASE + 0x0000)
    $ N! k6 u' i5 E6 J3 _1 }
  3. #define GPIOB_BASE            (AHB1PERIPH_BASE + 0x0400)9 y9 a) n- N# f% Y$ ^
  4. #define GPIOC_BASE            (AHB1PERIPH_BASE + 0x0800)! a' x' h: U. ]! Q8 t( I
  5. #define GPIOD_BASE            (AHB1PERIPH_BASE + 0x0C00)
    7 D: B$ a0 |1 o
  6. #define GPIOE_BASE            (AHB1PERIPH_BASE + 0x1000)2 C' `9 c( `5 D9 R3 m% ~
  7. #define GPIOF_BASE            (AHB1PERIPH_BASE + 0x1400)
    ( a" U1 v2 |( h; j
  8. #define GPIOG_BASE            (AHB1PERIPH_BASE + 0x1800)( G+ [+ @$ w' r$ x1 R9 D
  9. #define GPIOH_BASE            (AHB1PERIPH_BASE + 0x1C00)
    ( F- k  N. o. Y" R" c( ]% Y6 V+ V* `5 R
  10. #define GPIOI_BASE            (AHB1PERIPH_BASE + 0x2000)
    5 v& y- n' p! P* p$ u5 U. n
  11. #define GPIOJ_BASE            (AHB1PERIPH_BASE + 0x2400)$ w' G# [' I0 W* C) Z9 F
  12. #define GPIOK_BASE            (AHB1PERIPH_BASE + 0x2800)0 \; T% s1 `" [+ L5 q, b
复制代码
: g1 `5 c+ U' r# Z: w) P+ _
GPIO起始地址: B1 d. B. D2 \( e( ~% {

( X. }* G8 R7 t+ \6 ?# i" c
  1. #define GPIOA               ((GPIO_TypeDef *) GPIOA_BASE)
    ! {# b# E$ N% H! c  z0 f
  2. #define GPIOB               ((GPIO_TypeDef *) GPIOB_BASE)6 l4 p8 K8 g; j  z/ t* Y5 Y" O/ C
  3. #define GPIOC               ((GPIO_TypeDef *) GPIOC_BASE)
    $ `% g6 a, S; j( E
  4. #define GPIOD               ((GPIO_TypeDef *) GPIOD_BASE)" ^) m0 Z4 H9 w
  5. #define GPIOE               ((GPIO_TypeDef *) GPIOE_BASE)
    7 c! y$ {$ h' S) H7 |9 S3 ?
  6. #define GPIOF               ((GPIO_TypeDef *) GPIOF_BASE)
    - W: m' b+ x2 e1 T
  7. #define GPIOG               ((GPIO_TypeDef *) GPIOG_BASE)
    8 O9 H; H) T( O. e3 c$ ~
  8. #define GPIOH               ((GPIO_TypeDef *) GPIOH_BASE)
    * C4 V, h9 T. ]: _
  9. #define GPIOI               ((GPIO_TypeDef *) GPIOI_BASE)
    ! j" E0 O" E. v$ T& M+ s3 C5 ?7 I
  10. #define GPIOJ               ((GPIO_TypeDef *) GPIOJ_BASE)
    $ v* k- G  S8 F. p
  11. #define GPIOK               ((GPIO_TypeDef *) GPIOK_BASE)
复制代码
5 D3 k7 P. M% R* z; J' ~7 D7 Z9 N0 Q
GPIO寄存器相关位
0 g# P0 d3 e! `# W" Q  r
) Z6 Y  U: [6 @- d5 D* t
  1. /******************************************************************************/$ H8 z% g* ^. X6 W; I" a, k6 k
  2. /*                                                                            */, _8 t: b0 q* K* h" K5 V
  3. /*                            General Purpose I/O                             */4 S3 d+ u, p/ {8 Z3 `* b2 `# z+ Q
  4. /*                                                                            */9 y' Q7 }8 d9 ^/ B# K' G% A2 l9 b" Y4 L
  5. /******************************************************************************/
    7 ?. E% ^4 J5 X! Z/ |
  6. /******************  Bits definition for GPIO_MODER register  *****************/
    & Z! i$ m& ]& b  @/ d5 V) R
  7. #define GPIO_MODER_MODER0                    ((uint32_t)0x00000003)% ~  Y/ i# K+ H/ ^9 Y+ p5 `: A
  8. #define GPIO_MODER_MODER0_0                  ((uint32_t)0x00000001)0 j$ f! }1 e# R! ]8 e/ w4 @
  9. #define GPIO_MODER_MODER0_1                  ((uint32_t)0x00000002)
    . @8 D5 y8 v% d1 w& ^

  10. # A% I% z( l) \. T/ l* M7 U3 h0 v3 e
  11. #define GPIO_MODER_MODER1                    ((uint32_t)0x0000000C)7 O5 r9 W  T$ k' O3 R2 I
  12. #define GPIO_MODER_MODER1_0                  ((uint32_t)0x00000004)' h* ?7 r% t  M0 b
  13. #define GPIO_MODER_MODER1_1                  ((uint32_t)0x00000008)
    1 f1 l4 K/ G7 R" u2 \( D+ _

  14. % O& E! y2 h) S9 T' \' M( e
  15. #define GPIO_MODER_MODER2                    ((uint32_t)0x00000030)
    7 R1 ~3 P/ ?4 D& E  [0 L% B
  16. #define GPIO_MODER_MODER2_0                  ((uint32_t)0x00000010)
    , Y! F0 L7 O* Q- t) ]
  17. #define GPIO_MODER_MODER2_1                  ((uint32_t)0x00000020)0 `3 O: j  j3 G! E# [
  18. ! J, c- ]3 Q# a1 O
  19. #define GPIO_MODER_MODER3                    ((uint32_t)0x000000C0)6 ~5 f  K* ^7 Q7 v+ ?5 o% T, E8 Z# y
  20. #define GPIO_MODER_MODER3_0                  ((uint32_t)0x00000040)
    $ }) i0 O% a- |. @5 ?
  21. #define GPIO_MODER_MODER3_1                  ((uint32_t)0x00000080)
    : k& G0 V" }" ~
  22. " U% ]7 Q/ v$ [# h1 J' h9 |% c0 g# z  `
  23. #define GPIO_MODER_MODER4                    ((uint32_t)0x00000300)
    0 n# e8 z& A: ^! e) R2 b9 |! s+ X
  24. #define GPIO_MODER_MODER4_0                  ((uint32_t)0x00000100)5 ~" I5 I& {8 l" \9 c5 z
  25. #define GPIO_MODER_MODER4_1                  ((uint32_t)0x00000200)0 s# g$ q) G8 F
  26. 2 b( J0 q. F/ ?0 \5 {$ I: c
  27. #define GPIO_MODER_MODER5                    ((uint32_t)0x00000C00)) Y+ Q/ i/ W# U* m0 ~3 J. ^
  28. #define GPIO_MODER_MODER5_0                  ((uint32_t)0x00000400), R$ D" B; S( ^$ M
  29. #define GPIO_MODER_MODER5_1                  ((uint32_t)0x00000800)* `8 h& f3 b1 ~. r- w

  30. % R% ?# v3 |; S+ A* d* v6 D% @
  31. #define GPIO_MODER_MODER6                    ((uint32_t)0x00003000)
    7 Q5 j  `& J' d: w" T
  32. #define GPIO_MODER_MODER6_0                  ((uint32_t)0x00001000)0 h1 @% z% r1 j3 ]0 z' D% h8 r/ x
  33. #define GPIO_MODER_MODER6_1                  ((uint32_t)0x00002000)
    " Q9 R/ }4 D3 _/ x( t
  34. " I9 a. }+ T% Y0 x7 j
  35. #define GPIO_MODER_MODER7                    ((uint32_t)0x0000C000)
    % v; @6 Z  ^# U' k9 C6 O
  36. #define GPIO_MODER_MODER7_0                  ((uint32_t)0x00004000)
    . Y6 A. X$ P+ v2 o. T3 k
  37. #define GPIO_MODER_MODER7_1                  ((uint32_t)0x00008000)$ q3 P6 W# q2 B# W1 Q; W

  38. 6 B; t1 [, H, c5 s8 {( i
  39. #define GPIO_MODER_MODER8                    ((uint32_t)0x00030000)  K  ~5 {) e+ ?- ^
  40. #define GPIO_MODER_MODER8_0                  ((uint32_t)0x00010000)
    - @& `1 ?' y* I/ C0 r
  41. #define GPIO_MODER_MODER8_1                  ((uint32_t)0x00020000)
    , ~- D+ w1 S0 B. M% }+ E3 q( K# i
  42. 2 ~( Q$ S$ o9 y8 d; N* X# a
  43. #define GPIO_MODER_MODER9                    ((uint32_t)0x000C0000)
    : ?0 U" ?$ e3 f" ^' S
  44. #define GPIO_MODER_MODER9_0                  ((uint32_t)0x00040000)
    ! `. a) y8 G$ j* t# r5 @, {
  45. #define GPIO_MODER_MODER9_1                  ((uint32_t)0x00080000)! y  C0 h* h4 n! C- \

  46. / i4 W" z) [& r6 A
  47. #define GPIO_MODER_MODER10                   ((uint32_t)0x00300000)/ B7 O# G% Y7 E5 Z; C1 V& ]
  48. #define GPIO_MODER_MODER10_0                 ((uint32_t)0x00100000)
    , x! x/ N( }, D: v1 `9 v! @! X# \
  49. #define GPIO_MODER_MODER10_1                 ((uint32_t)0x00200000), ?( i+ {; F& S7 J0 N# V
  50. 4 l2 y4 z7 Z4 b( d6 o5 C/ Z# B( G! R
  51. #define GPIO_MODER_MODER11                   ((uint32_t)0x00C00000)
    5 L) t+ O. a8 t/ g' o$ Z
  52. #define GPIO_MODER_MODER11_0                 ((uint32_t)0x00400000)
    # p7 D, W! I; b( r: Q& V
  53. #define GPIO_MODER_MODER11_1                 ((uint32_t)0x00800000)9 M+ i- [9 g" [4 A
  54. ' T- N$ A) b1 b' T$ S- X% X4 P
  55. #define GPIO_MODER_MODER12                   ((uint32_t)0x03000000)
    5 |5 u$ I% E" d9 ~# H% J  w- V
  56. #define GPIO_MODER_MODER12_0                 ((uint32_t)0x01000000). e3 E+ q: F+ w$ P
  57. #define GPIO_MODER_MODER12_1                 ((uint32_t)0x02000000): _: d* H* i" b0 D- B

  58. * O; y; S+ o( Z9 D- z$ U
  59. #define GPIO_MODER_MODER13                   ((uint32_t)0x0C000000)
    . e! t0 w, q, m
  60. #define GPIO_MODER_MODER13_0                 ((uint32_t)0x04000000)
      j# r- H5 L" w6 @
  61. #define GPIO_MODER_MODER13_1                 ((uint32_t)0x08000000)
    $ f: M( r" L2 p, O# ^, R4 h! N) j
  62. : T% n0 p# f9 W0 O" a' y& `. t
  63. #define GPIO_MODER_MODER14                   ((uint32_t)0x30000000)8 q: c( n/ O# F! z7 c
  64. #define GPIO_MODER_MODER14_0                 ((uint32_t)0x10000000)
    8 V  A. f% a) l! o8 x9 L8 [
  65. #define GPIO_MODER_MODER14_1                 ((uint32_t)0x20000000)9 A# h' y3 D& g9 z" [$ q" N% {

  66. ) C8 ?4 G5 o' E
  67. #define GPIO_MODER_MODER15                   ((uint32_t)0xC0000000)4 i( Y8 x/ P. ], r4 H1 M- N
  68. #define GPIO_MODER_MODER15_0                 ((uint32_t)0x40000000)9 q9 Y* |0 i( R# b
  69. #define GPIO_MODER_MODER15_1                 ((uint32_t)0x80000000)  R& A( I4 P  O$ G' r; @1 j
  70. - F1 f- D5 o" m' \0 C& G
  71. /******************  Bits definition for GPIO_OTYPER register  ****************/
    9 F1 s7 T) k( A* V6 l
  72. #define GPIO_OTYPER_OT_0                     ((uint32_t)0x00000001)
    / j% g; |2 [( }9 _. }, [3 n% y2 W
  73. #define GPIO_OTYPER_OT_1                     ((uint32_t)0x00000002)/ I8 e( B# v  s) F) U7 w
  74. #define GPIO_OTYPER_OT_2                     ((uint32_t)0x00000004)9 |: u1 d6 K5 u3 A$ C9 z7 W! s9 Y9 Y
  75. #define GPIO_OTYPER_OT_3                     ((uint32_t)0x00000008)5 {8 h/ P8 c! S5 U
  76. #define GPIO_OTYPER_OT_4                     ((uint32_t)0x00000010)$ B4 Y/ }: O% r# N! q1 f% L) C& {
  77. #define GPIO_OTYPER_OT_5                     ((uint32_t)0x00000020)7 z. [+ i. s1 H6 {: ?! n0 Z5 }
  78. #define GPIO_OTYPER_OT_6                     ((uint32_t)0x00000040)
    ' y5 G* Z$ v4 a1 v
  79. #define GPIO_OTYPER_OT_7                     ((uint32_t)0x00000080)8 v( X, y! w  U0 H8 h' u. p3 r3 o
  80. #define GPIO_OTYPER_OT_8                     ((uint32_t)0x00000100)
    . A( A% D7 I$ t8 P8 D& w
  81. #define GPIO_OTYPER_OT_9                     ((uint32_t)0x00000200)" W6 g" r6 i; i& [% ]! |
  82. #define GPIO_OTYPER_OT_10                    ((uint32_t)0x00000400)8 K" h+ z+ ^1 c1 K! }: o
  83. #define GPIO_OTYPER_OT_11                    ((uint32_t)0x00000800)) z9 S0 @8 s7 _# \) o  \3 t
  84. #define GPIO_OTYPER_OT_12                    ((uint32_t)0x00001000)1 _2 n- [: E) I- k
  85. #define GPIO_OTYPER_OT_13                    ((uint32_t)0x00002000)
    ' q2 Y  D2 D: B4 E% R
  86. #define GPIO_OTYPER_OT_14                    ((uint32_t)0x00004000)% F( t  u! J* [6 `
  87. #define GPIO_OTYPER_OT_15                    ((uint32_t)0x00008000)  U2 `4 @5 I! D: a

  88. ( T# b8 I7 X8 G( B
  89. /******************  Bits definition for GPIO_OSPEEDR register  ***************/
    " j& r4 O9 V* C
  90. #define GPIO_OSPEEDER_OSPEEDR0               ((uint32_t)0x00000003)
      f+ ~9 [1 Q' \$ j" R8 D
  91. #define GPIO_OSPEEDER_OSPEEDR0_0             ((uint32_t)0x00000001)
    5 r6 t/ R/ ^& q  O8 M% D& {
  92. #define GPIO_OSPEEDER_OSPEEDR0_1             ((uint32_t)0x00000002)
    4 G- c3 \" b$ m: F% p5 T

  93. $ @) u5 O% H4 I" n  N
  94. #define GPIO_OSPEEDER_OSPEEDR1               ((uint32_t)0x0000000C)3 ?6 x; m. \1 z- e  y
  95. #define GPIO_OSPEEDER_OSPEEDR1_0             ((uint32_t)0x00000004)9 _  q( f6 V' m6 U/ ^# p
  96. #define GPIO_OSPEEDER_OSPEEDR1_1             ((uint32_t)0x00000008)
    & D* U  T9 Q* [6 h7 f
  97. + J+ F- A8 ]# r2 B; |
  98. #define GPIO_OSPEEDER_OSPEEDR2               ((uint32_t)0x00000030)8 k6 S: ?; Q4 T/ I- k8 ?- S
  99. #define GPIO_OSPEEDER_OSPEEDR2_0             ((uint32_t)0x00000010)9 p1 d! l6 {, |  A
  100. #define GPIO_OSPEEDER_OSPEEDR2_1             ((uint32_t)0x00000020)
    0 u; I/ A. R! _1 M
  101. # [! n+ M; |9 B& z
  102. #define GPIO_OSPEEDER_OSPEEDR3               ((uint32_t)0x000000C0)
    7 c8 {8 Y) X$ R) t
  103. #define GPIO_OSPEEDER_OSPEEDR3_0             ((uint32_t)0x00000040)  z( |1 G  z' ~( p; k# Y
  104. #define GPIO_OSPEEDER_OSPEEDR3_1             ((uint32_t)0x00000080)
    2 \: ?5 X* x, S

  105. & J3 _8 S' ^7 l$ b  t
  106. #define GPIO_OSPEEDER_OSPEEDR4               ((uint32_t)0x00000300)% ]; S' j2 y1 w( ]! E/ C
  107. #define GPIO_OSPEEDER_OSPEEDR4_0             ((uint32_t)0x00000100)' ]5 f: E. P- Y- P$ [
  108. #define GPIO_OSPEEDER_OSPEEDR4_1             ((uint32_t)0x00000200)8 p' F& c( _: r7 m8 S8 Y

  109. : a6 ]+ r$ ^) g- P
  110. #define GPIO_OSPEEDER_OSPEEDR5               ((uint32_t)0x00000C00)
    : V$ u5 y( r; D# r+ L; m9 w7 p/ t1 s
  111. #define GPIO_OSPEEDER_OSPEEDR5_0             ((uint32_t)0x00000400)
    0 E/ q, f4 ~2 J) y9 ?5 l. ]
  112. #define GPIO_OSPEEDER_OSPEEDR5_1             ((uint32_t)0x00000800)
    * a  v& C5 ^+ i! z
  113.   T9 p1 u# I+ Q  v3 f/ O- d, j
  114. #define GPIO_OSPEEDER_OSPEEDR6               ((uint32_t)0x00003000)
      s# N$ Z! ^5 S# p, P! e, H
  115. #define GPIO_OSPEEDER_OSPEEDR6_0             ((uint32_t)0x00001000)
    " n6 C. Z. U$ d# O" \+ `8 x* T
  116. #define GPIO_OSPEEDER_OSPEEDR6_1             ((uint32_t)0x00002000)
    4 ~# M0 x% ~; O, {
  117. ' j2 z( F: n7 _7 d2 w
  118. #define GPIO_OSPEEDER_OSPEEDR7               ((uint32_t)0x0000C000)/ Q5 m* ?  r9 z) \9 Q! R, }+ z4 D
  119. #define GPIO_OSPEEDER_OSPEEDR7_0             ((uint32_t)0x00004000)
    / z5 ~) G% H- W1 e7 I
  120. #define GPIO_OSPEEDER_OSPEEDR7_1             ((uint32_t)0x00008000)
    ! u: J4 b6 a- m( U$ `
  121. 1 }' q" A  N  s! [8 \; }
  122. #define GPIO_OSPEEDER_OSPEEDR8               ((uint32_t)0x00030000)# t" Y* x* n5 L4 _8 P
  123. #define GPIO_OSPEEDER_OSPEEDR8_0             ((uint32_t)0x00010000)/ J0 j% [7 U6 }: b1 T  L, W
  124. #define GPIO_OSPEEDER_OSPEEDR8_1             ((uint32_t)0x00020000)
    6 c1 Y, l' p% i$ L+ H# s8 \
  125. - u% m2 \$ Y0 Z6 Q' E) F
  126. #define GPIO_OSPEEDER_OSPEEDR9               ((uint32_t)0x000C0000): H) Q$ A& Q1 \: y  q1 L. G2 \
  127. #define GPIO_OSPEEDER_OSPEEDR9_0             ((uint32_t)0x00040000)
    4 ~& L: v1 e% T6 Q( Q% Z
  128. #define GPIO_OSPEEDER_OSPEEDR9_1             ((uint32_t)0x00080000)
    ; U$ D; m* U$ S* Y1 g
  129. ! V0 Z5 s/ c3 i% |
  130. #define GPIO_OSPEEDER_OSPEEDR10              ((uint32_t)0x00300000)8 C5 J6 E* f1 A
  131. #define GPIO_OSPEEDER_OSPEEDR10_0            ((uint32_t)0x00100000)
    " Q$ ]8 S" U# V# v. A7 T
  132. #define GPIO_OSPEEDER_OSPEEDR10_1            ((uint32_t)0x00200000)1 M7 `* a, O/ r, V' U+ j4 a* N
  133. $ i+ c1 r8 L) E0 r7 \
  134. #define GPIO_OSPEEDER_OSPEEDR11              ((uint32_t)0x00C00000)
    ; g2 f1 z5 L% V# L0 i; G8 E% A
  135. #define GPIO_OSPEEDER_OSPEEDR11_0            ((uint32_t)0x00400000)
    ' {6 y/ O+ |% Y: ^* o
  136. #define GPIO_OSPEEDER_OSPEEDR11_1            ((uint32_t)0x00800000)
    5 a* k2 s; k9 P- o

  137. ' H) F* w4 X$ c8 E& w- \) z
  138. #define GPIO_OSPEEDER_OSPEEDR12              ((uint32_t)0x03000000)
    , B9 N, B8 W  T# \# A' E
  139. #define GPIO_OSPEEDER_OSPEEDR12_0            ((uint32_t)0x01000000)2 }+ `3 }* B5 K( ?. c5 O( `
  140. #define GPIO_OSPEEDER_OSPEEDR12_1            ((uint32_t)0x02000000)3 m3 l; `, w0 B8 S- \3 `+ \
  141. 3 J( z; n6 D, T4 j. g9 w' j
  142. #define GPIO_OSPEEDER_OSPEEDR13              ((uint32_t)0x0C000000)
    - M7 V% m4 i% e1 [
  143. #define GPIO_OSPEEDER_OSPEEDR13_0            ((uint32_t)0x04000000)
    $ y5 w. B5 A2 [; t& L1 D& e* Z
  144. #define GPIO_OSPEEDER_OSPEEDR13_1            ((uint32_t)0x08000000)
    , B. i2 s" p& z  B2 r8 c( l' N

  145. 3 O! B0 x( Z# [( d" |
  146. #define GPIO_OSPEEDER_OSPEEDR14              ((uint32_t)0x30000000)
    ( ?& L+ f0 S3 X3 q. G5 E
  147. #define GPIO_OSPEEDER_OSPEEDR14_0            ((uint32_t)0x10000000)
    % C: E% D# F6 Y7 o& X
  148. #define GPIO_OSPEEDER_OSPEEDR14_1            ((uint32_t)0x20000000)/ h! {& Z# J% m- C; J+ S. W' \
  149. 6 |! b- ~; c% C- k  p. J
  150. #define GPIO_OSPEEDER_OSPEEDR15              ((uint32_t)0xC0000000)
    8 h' v  T' b( q. a
  151. #define GPIO_OSPEEDER_OSPEEDR15_0            ((uint32_t)0x40000000)5 m. b! R: L. O2 l7 k2 ]& u
  152. #define GPIO_OSPEEDER_OSPEEDR15_1            ((uint32_t)0x80000000)  R. z& l5 Q9 X4 \1 c, M8 o
  153. 3 h  o" C+ ?7 e. R3 e
  154. /******************  Bits definition for GPIO_PUPDR register  *****************/2 u8 h) l. ?0 |. ^
  155. #define GPIO_PUPDR_PUPDR0                    ((uint32_t)0x00000003)5 `9 q$ u" I0 f. `+ ]; k0 P
  156. #define GPIO_PUPDR_PUPDR0_0                  ((uint32_t)0x00000001)4 @( V: F7 K; C5 g
  157. #define GPIO_PUPDR_PUPDR0_1                  ((uint32_t)0x00000002), n! a# Y! y+ ?- p( M

  158. 7 W2 i# E8 Z: j5 E, w0 J
  159. #define GPIO_PUPDR_PUPDR1                    ((uint32_t)0x0000000C)0 h2 {9 \. z! L/ Y2 S
  160. #define GPIO_PUPDR_PUPDR1_0                  ((uint32_t)0x00000004)
    ) }* U8 G( O/ I5 `* p0 ~
  161. #define GPIO_PUPDR_PUPDR1_1                  ((uint32_t)0x00000008)
    7 _1 N3 f; l2 f7 ?/ A. M( b1 @4 R
  162. ( O% f/ Z: o: {0 L
  163. #define GPIO_PUPDR_PUPDR2                    ((uint32_t)0x00000030)
    ! h- r- W/ f$ V7 y8 O% _/ c$ k
  164. #define GPIO_PUPDR_PUPDR2_0                  ((uint32_t)0x00000010)* I7 r& j; [0 h, E9 a
  165. #define GPIO_PUPDR_PUPDR2_1                  ((uint32_t)0x00000020)7 N, U. ~' ~2 T2 Q7 P
  166. * f1 _$ [1 W- {8 ]% j! C# o) G2 ]6 r
  167. #define GPIO_PUPDR_PUPDR3                    ((uint32_t)0x000000C0)
    ! s7 V2 E, I, t' J" y; u
  168. #define GPIO_PUPDR_PUPDR3_0                  ((uint32_t)0x00000040)0 A3 E/ C! ?- p" K/ q& G8 r
  169. #define GPIO_PUPDR_PUPDR3_1                  ((uint32_t)0x00000080)
      v; t( V, F7 t* p/ R$ M8 @
  170. " [) G; e4 f. I; l! T5 c) O
  171. #define GPIO_PUPDR_PUPDR4                    ((uint32_t)0x00000300)0 N# i( B) ]2 W, s& w! n0 S# V
  172. #define GPIO_PUPDR_PUPDR4_0                  ((uint32_t)0x00000100)$ l" E# [5 u" n! m
  173. #define GPIO_PUPDR_PUPDR4_1                  ((uint32_t)0x00000200)
      }$ E# E2 u+ y7 c7 x1 @) ?

  174. + X& K( q; z& }: s4 K
  175. #define GPIO_PUPDR_PUPDR5                    ((uint32_t)0x00000C00)- w0 b+ ^' k& Q# b: V
  176. #define GPIO_PUPDR_PUPDR5_0                  ((uint32_t)0x00000400)
    / Q' t+ W( {" c7 X4 l/ a
  177. #define GPIO_PUPDR_PUPDR5_1                  ((uint32_t)0x00000800)
    # I( `  I: Z% W# `! z# R' ^
  178. 7 ~; z5 D$ R$ m1 B$ C) ]  k
  179. #define GPIO_PUPDR_PUPDR6                    ((uint32_t)0x00003000)( o! n- G; T: \
  180. #define GPIO_PUPDR_PUPDR6_0                  ((uint32_t)0x00001000)
    - w/ e9 v3 R3 z! y
  181. #define GPIO_PUPDR_PUPDR6_1                  ((uint32_t)0x00002000)
    * F, y0 I: }. J) u3 u+ h8 l+ W( a

  182. 1 n, r" X% f! J2 I7 K$ \
  183. #define GPIO_PUPDR_PUPDR7                    ((uint32_t)0x0000C000)" K! X8 Y$ i! j. A8 I3 O
  184. #define GPIO_PUPDR_PUPDR7_0                  ((uint32_t)0x00004000)
    ! \$ v' t. q2 x* I+ r& M$ T5 ~* C
  185. #define GPIO_PUPDR_PUPDR7_1                  ((uint32_t)0x00008000)  q/ V& m" @2 `8 \+ J; u
  186. * @! s+ Q) X" h$ d# B) t% ?# Z2 Z# K
  187. #define GPIO_PUPDR_PUPDR8                    ((uint32_t)0x00030000)2 b, R' X7 y. N' l" n
  188. #define GPIO_PUPDR_PUPDR8_0                  ((uint32_t)0x00010000)
    , e! K4 B- q2 V0 g
  189. #define GPIO_PUPDR_PUPDR8_1                  ((uint32_t)0x00020000)
    ; o* L) R* q0 R1 F2 ?8 c' a" f
  190. 4 C' P9 b+ i6 P2 U$ P+ Y
  191. #define GPIO_PUPDR_PUPDR9                    ((uint32_t)0x000C0000)
    0 Y2 _; i8 l5 Y: M; y8 h
  192. #define GPIO_PUPDR_PUPDR9_0                  ((uint32_t)0x00040000)
    ' y# V0 i+ I7 C6 P1 j  N
  193. #define GPIO_PUPDR_PUPDR9_1                  ((uint32_t)0x00080000)
    ' s% ]6 _( h  @: l& G2 v6 F

  194. ) i" [' [/ c6 V3 l/ e5 x+ p
  195. #define GPIO_PUPDR_PUPDR10                   ((uint32_t)0x00300000)
    9 t: G6 X. F2 P( W* P& c1 }
  196. #define GPIO_PUPDR_PUPDR10_0                 ((uint32_t)0x00100000)
    / [6 }8 q& L% C) L; A0 H
  197. #define GPIO_PUPDR_PUPDR10_1                 ((uint32_t)0x00200000)! i( N4 v0 B* C- W! \/ {( ~
  198. 9 O5 H9 J( X6 p
  199. #define GPIO_PUPDR_PUPDR11                   ((uint32_t)0x00C00000)+ G# Y4 V& g1 P9 B/ T* E' @
  200. #define GPIO_PUPDR_PUPDR11_0                 ((uint32_t)0x00400000)
    & E; z5 e! J$ t
  201. #define GPIO_PUPDR_PUPDR11_1                 ((uint32_t)0x00800000)  g3 m& G2 }- j7 }% a) T
  202. + h/ f: W8 F$ k# d/ f
  203. #define GPIO_PUPDR_PUPDR12                   ((uint32_t)0x03000000)
    * e. P' n3 k+ C5 i$ \7 j
  204. #define GPIO_PUPDR_PUPDR12_0                 ((uint32_t)0x01000000)
    6 y1 n; L- O* p+ C7 H, g) P
  205. #define GPIO_PUPDR_PUPDR12_1                 ((uint32_t)0x02000000)$ Q1 l3 Y- c& f2 i+ l/ ^

  206. & G/ z9 V' z  t  p8 u, r4 z6 O
  207. #define GPIO_PUPDR_PUPDR13                   ((uint32_t)0x0C000000)
    % U/ Y( V( |! o, k  J( d
  208. #define GPIO_PUPDR_PUPDR13_0                 ((uint32_t)0x04000000)
    * b5 w* N9 n. S7 z# R
  209. #define GPIO_PUPDR_PUPDR13_1                 ((uint32_t)0x08000000)6 M$ }  ^; e# _% g  P$ j! g2 G; `6 v

  210. 3 w* N- m5 K5 x' @
  211. #define GPIO_PUPDR_PUPDR14                   ((uint32_t)0x30000000)
    8 t$ z5 c* ~9 w& s4 h4 u7 \
  212. #define GPIO_PUPDR_PUPDR14_0                 ((uint32_t)0x10000000)
    4 q$ ]! @$ p% A0 v
  213. #define GPIO_PUPDR_PUPDR14_1                 ((uint32_t)0x20000000)) e+ x& _- i  g9 [+ F4 j

  214. # u: A- o1 X" z* R+ Y# [  `" I) c
  215. #define GPIO_PUPDR_PUPDR15                   ((uint32_t)0xC0000000)! f0 y% n) Z0 t1 `3 r( a6 }3 Q
  216. #define GPIO_PUPDR_PUPDR15_0                 ((uint32_t)0x40000000)
    4 r% W0 U6 B8 f' }+ W3 G6 d& H
  217. #define GPIO_PUPDR_PUPDR15_1                 ((uint32_t)0x80000000)8 S" B* I' j# v  J  L: n+ Q

  218. * l  w8 s( D) r/ l
  219. /******************  Bits definition for GPIO_IDR register  *******************/+ }0 e: }; H. q
  220. #define GPIO_IDR_IDR_0                       ((uint32_t)0x00000001)* C9 H3 ^/ Q1 G: ^( l/ J
  221. #define GPIO_IDR_IDR_1                       ((uint32_t)0x00000002)
    * S$ C! @: h$ ~& v9 i' q
  222. #define GPIO_IDR_IDR_2                       ((uint32_t)0x00000004), `' V9 Q& F" y
  223. #define GPIO_IDR_IDR_3                       ((uint32_t)0x00000008)
    4 V& r1 X, F# S& w
  224. #define GPIO_IDR_IDR_4                       ((uint32_t)0x00000010)
    # z! T- ]- V, C3 Q
  225. #define GPIO_IDR_IDR_5                       ((uint32_t)0x00000020)* z) ?! V" a1 K+ e# m  G
  226. #define GPIO_IDR_IDR_6                       ((uint32_t)0x00000040)  s. H# h5 u" w3 D6 J
  227. #define GPIO_IDR_IDR_7                       ((uint32_t)0x00000080)
    - s5 n8 L/ O0 e( f+ ^1 W! ^
  228. #define GPIO_IDR_IDR_8                       ((uint32_t)0x00000100)
    & [$ e) @& X. _, U  e. N) ~
  229. #define GPIO_IDR_IDR_9                       ((uint32_t)0x00000200)
    " D/ @8 {, l) j
  230. #define GPIO_IDR_IDR_10                      ((uint32_t)0x00000400)  u6 w6 Y' t  k. p0 Y+ v. @) y( E
  231. #define GPIO_IDR_IDR_11                      ((uint32_t)0x00000800)
    2 `, e5 Y( Y$ G% f) |$ F9 P" R
  232. #define GPIO_IDR_IDR_12                      ((uint32_t)0x00001000)
    8 ^% n! C3 v% b* _
  233. #define GPIO_IDR_IDR_13                      ((uint32_t)0x00002000)
    . M( k9 n  w9 J: Y6 d: Q
  234. #define GPIO_IDR_IDR_14                      ((uint32_t)0x00004000)2 |% a& p) ~0 y; B) H% j0 T
  235. #define GPIO_IDR_IDR_15                      ((uint32_t)0x00008000)2 w) M( y/ V  X0 S" Z2 ?7 K) M
  236. /* Old GPIO_IDR register bits definition, maintained for legacy purpose */
    4 m; c0 n/ o) {8 Q% @
  237. #define GPIO_OTYPER_IDR_0                    GPIO_IDR_IDR_0
    * S4 c# j5 w! t
  238. #define GPIO_OTYPER_IDR_1                    GPIO_IDR_IDR_1
      p( k# S1 U: v& q/ @* ?
  239. #define GPIO_OTYPER_IDR_2                    GPIO_IDR_IDR_2
    9 d% r0 D' L, }/ C& f1 m
  240. #define GPIO_OTYPER_IDR_3                    GPIO_IDR_IDR_3+ A: M- A( `# v8 _  Q, r  A+ n
  241. #define GPIO_OTYPER_IDR_4                    GPIO_IDR_IDR_4
    5 N$ [& {. Q: R
  242. #define GPIO_OTYPER_IDR_5                    GPIO_IDR_IDR_55 W5 B; ~1 S9 ]) o$ B5 Z
  243. #define GPIO_OTYPER_IDR_6                    GPIO_IDR_IDR_65 Y* _$ x) ?3 s: C/ q/ ~+ h$ ?8 e
  244. #define GPIO_OTYPER_IDR_7                    GPIO_IDR_IDR_7
    $ L/ p( [& P8 ?0 J, u! d7 a
  245. #define GPIO_OTYPER_IDR_8                    GPIO_IDR_IDR_81 w# z; y+ W3 h7 @$ s) _
  246. #define GPIO_OTYPER_IDR_9                    GPIO_IDR_IDR_94 q' Q% Y2 B" f; m9 \# `; t
  247. #define GPIO_OTYPER_IDR_10                   GPIO_IDR_IDR_10
    ' P3 F. S! R. c  V4 h& B) _
  248. #define GPIO_OTYPER_IDR_11                   GPIO_IDR_IDR_11
    1 ~5 P8 J5 h* _. M4 y
  249. #define GPIO_OTYPER_IDR_12                   GPIO_IDR_IDR_12
    # j; {/ S/ d3 ^& c- m6 _# C! [& r
  250. #define GPIO_OTYPER_IDR_13                   GPIO_IDR_IDR_13
    : F0 D1 \; ], x
  251. #define GPIO_OTYPER_IDR_14                   GPIO_IDR_IDR_14
    9 ~2 e9 y, B. ^1 E7 C- p
  252. #define GPIO_OTYPER_IDR_15                   GPIO_IDR_IDR_15( K- ]6 ^- ?) l9 I# K
  253. / y4 M3 B; h7 m/ L# T+ e
  254. /******************  Bits definition for GPIO_ODR register  *******************/' @+ u. w* Q( T( m$ N+ `
  255. #define GPIO_ODR_ODR_0                       ((uint32_t)0x00000001)- W0 o5 X* u$ J. r$ }
  256. #define GPIO_ODR_ODR_1                       ((uint32_t)0x00000002)2 r0 i9 H. W! F! V
  257. #define GPIO_ODR_ODR_2                       ((uint32_t)0x00000004)/ p! c" b" R8 k( u, v: u; H
  258. #define GPIO_ODR_ODR_3                       ((uint32_t)0x00000008)
    . P5 O5 G% A( G
  259. #define GPIO_ODR_ODR_4                       ((uint32_t)0x00000010)! ]& O9 S: T' N6 a8 N8 G3 _
  260. #define GPIO_ODR_ODR_5                       ((uint32_t)0x00000020). @6 x; T& q' e8 _
  261. #define GPIO_ODR_ODR_6                       ((uint32_t)0x00000040)
    . h3 W: r% I2 m/ \
  262. #define GPIO_ODR_ODR_7                       ((uint32_t)0x00000080)
    # \1 ?& Z; M" E% |) }% m4 [! ]# Q/ T
  263. #define GPIO_ODR_ODR_8                       ((uint32_t)0x00000100)
    2 f3 i5 E" J' Q
  264. #define GPIO_ODR_ODR_9                       ((uint32_t)0x00000200)4 E; o0 O! J+ H! }2 B# G
  265. #define GPIO_ODR_ODR_10                      ((uint32_t)0x00000400)
    ) c2 W. m% c& n6 C( r
  266. #define GPIO_ODR_ODR_11                      ((uint32_t)0x00000800)
    1 U5 l9 w7 ~2 \) E% T! {4 w
  267. #define GPIO_ODR_ODR_12                      ((uint32_t)0x00001000)1 T4 Q! O; w* m6 L
  268. #define GPIO_ODR_ODR_13                      ((uint32_t)0x00002000)- l6 o6 C' m5 @% S8 w. d5 a7 ?
  269. #define GPIO_ODR_ODR_14                      ((uint32_t)0x00004000)
    * Z& o$ C+ V2 v
  270. #define GPIO_ODR_ODR_15                      ((uint32_t)0x00008000): f4 g3 e- y7 ?: N, E! n
  271. /* Old GPIO_ODR register bits definition, maintained for legacy purpose */9 p8 E; |2 K5 }8 E2 e' e" j3 o
  272. #define GPIO_OTYPER_ODR_0                    GPIO_ODR_ODR_0
      p! V# z: g) u+ t0 a7 x; T
  273. #define GPIO_OTYPER_ODR_1                    GPIO_ODR_ODR_1
    9 `& a( m4 g) Y- g
  274. #define GPIO_OTYPER_ODR_2                    GPIO_ODR_ODR_2. S  _% y& ^2 w- u9 ^! E- @9 j. k8 k+ n
  275. #define GPIO_OTYPER_ODR_3                    GPIO_ODR_ODR_3
    + F; y0 F/ C$ W9 M  z
  276. #define GPIO_OTYPER_ODR_4                    GPIO_ODR_ODR_4% v7 p  C# {# E0 O' `! v; }
  277. #define GPIO_OTYPER_ODR_5                    GPIO_ODR_ODR_5$ U" o' v( s4 f" Y
  278. #define GPIO_OTYPER_ODR_6                    GPIO_ODR_ODR_6
    2 Q- [& f8 T& C. C, Z: J- }; G
  279. #define GPIO_OTYPER_ODR_7                    GPIO_ODR_ODR_70 D) r7 X) @* p5 z$ W" R
  280. #define GPIO_OTYPER_ODR_8                    GPIO_ODR_ODR_8
    1 d7 |) b( C* }- e! l9 i
  281. #define GPIO_OTYPER_ODR_9                    GPIO_ODR_ODR_9
    & i7 n& g- r+ N- \1 D( _) `
  282. #define GPIO_OTYPER_ODR_10                   GPIO_ODR_ODR_10
    ( l( S. O: w+ J
  283. #define GPIO_OTYPER_ODR_11                   GPIO_ODR_ODR_11
    8 i. K" o9 y# ]: Y$ O
  284. #define GPIO_OTYPER_ODR_12                   GPIO_ODR_ODR_12+ b% ~1 h' P. B% q& t2 T+ X
  285. #define GPIO_OTYPER_ODR_13                   GPIO_ODR_ODR_13* }. T& |: Z7 \( S& \
  286. #define GPIO_OTYPER_ODR_14                   GPIO_ODR_ODR_149 Q" y9 I  {, Z2 d
  287. #define GPIO_OTYPER_ODR_15                   GPIO_ODR_ODR_15$ O% c# j0 [) U

  288. 8 V; B8 L3 n  m9 q
  289. /******************  Bits definition for GPIO_BSRR register  ******************/
    $ c- A( e& w$ h1 L% [& u
  290. #define GPIO_BSRR_BS_0                       ((uint32_t)0x00000001)
    ) D) B- s1 ^* [/ u! D3 ~: A2 o, J: b
  291. #define GPIO_BSRR_BS_1                       ((uint32_t)0x00000002)
    ) R% X8 E! P# m' J' Q( \, @
  292. #define GPIO_BSRR_BS_2                       ((uint32_t)0x00000004)
    1 \0 Z7 Z& q2 c8 h! \8 ^
  293. #define GPIO_BSRR_BS_3                       ((uint32_t)0x00000008), n. ^0 d, e% O4 x+ @( E
  294. #define GPIO_BSRR_BS_4                       ((uint32_t)0x00000010)% B( o3 P* U; k
  295. #define GPIO_BSRR_BS_5                       ((uint32_t)0x00000020)
    ) k3 v( [* `- n; p. l0 w: E
  296. #define GPIO_BSRR_BS_6                       ((uint32_t)0x00000040)
    * [1 v2 ^$ N; N8 m. U
  297. #define GPIO_BSRR_BS_7                       ((uint32_t)0x00000080)
      |* ~5 O0 Y% \4 K% x
  298. #define GPIO_BSRR_BS_8                       ((uint32_t)0x00000100)
    0 P& U5 ]/ H( q; Y7 d* c: @) ^
  299. #define GPIO_BSRR_BS_9                       ((uint32_t)0x00000200)
    % V' {3 F! r3 T6 U; W
  300. #define GPIO_BSRR_BS_10                      ((uint32_t)0x00000400)' B/ [  s! \9 o" ~8 k4 a
  301. #define GPIO_BSRR_BS_11                      ((uint32_t)0x00000800)0 }( `" g8 P+ @
  302. #define GPIO_BSRR_BS_12                      ((uint32_t)0x00001000)
    $ Z* p+ e/ F# U4 l9 d7 \3 a
  303. #define GPIO_BSRR_BS_13                      ((uint32_t)0x00002000)2 y4 X- |0 k1 F
  304. #define GPIO_BSRR_BS_14                      ((uint32_t)0x00004000)3 F! E3 ]' B% X
  305. #define GPIO_BSRR_BS_15                      ((uint32_t)0x00008000)# x3 u# u9 j' X7 F; l: i+ }0 _
  306. #define GPIO_BSRR_BR_0                       ((uint32_t)0x00010000)
    ( Y& S: b: y; P$ P' m! ~
  307. #define GPIO_BSRR_BR_1                       ((uint32_t)0x00020000), y. [# Y6 E4 V" B$ _7 ^7 U9 @; {
  308. #define GPIO_BSRR_BR_2                       ((uint32_t)0x00040000)/ D& Y& n. R" Q& b
  309. #define GPIO_BSRR_BR_3                       ((uint32_t)0x00080000)
    / U; z" h; ^9 Y0 D
  310. #define GPIO_BSRR_BR_4                       ((uint32_t)0x00100000)& t0 J1 U" l" w+ U& F
  311. #define GPIO_BSRR_BR_5                       ((uint32_t)0x00200000)
    9 X( u# y$ I- g7 l/ l  O$ S
  312. #define GPIO_BSRR_BR_6                       ((uint32_t)0x00400000)( p8 t" M. @$ N8 B! a; R# U% a
  313. #define GPIO_BSRR_BR_7                       ((uint32_t)0x00800000)$ g+ ~+ @0 p8 V
  314. #define GPIO_BSRR_BR_8                       ((uint32_t)0x01000000)) }: B5 X2 K! V9 I% q: Z9 Z: U
  315. #define GPIO_BSRR_BR_9                       ((uint32_t)0x02000000)
      F2 `( H5 j$ I% k, H% A3 O
  316. #define GPIO_BSRR_BR_10                      ((uint32_t)0x04000000)- X! R1 z2 o: P/ z; X# Q
  317. #define GPIO_BSRR_BR_11                      ((uint32_t)0x08000000)- F( F, j  [$ n
  318. #define GPIO_BSRR_BR_12                      ((uint32_t)0x10000000)! m+ i& ~8 U/ P
  319. #define GPIO_BSRR_BR_13                      ((uint32_t)0x20000000)
    4 P6 ~# G4 j8 c7 Z* b% s
  320. #define GPIO_BSRR_BR_14                      ((uint32_t)0x40000000)4 |# e3 R1 v% E3 X5 x6 r+ o
  321. #define GPIO_BSRR_BR_15                      ((uint32_t)0x80000000)
复制代码
9 U0 Q( f# I  C! x
GPIO全部挂载AHB1总线上
) Q! Z$ ?4 I  ?$ g$ O2 K" S. X
- P5 |1 K" f8 d! U$ Y
  1. 5 }) L; U2 a: T
  2. /********************  Bit definition for RCC_AHB1ENR register  ***************/' z; |4 H5 k' |+ Y+ c: b& F; ^
  3. #define  RCC_AHB1ENR_GPIOAEN                 ((uint32_t)0x00000001)7 s) u2 ~/ \6 L' C
  4. #define  RCC_AHB1ENR_GPIOBEN                 ((uint32_t)0x00000002)
    , h8 @+ C* F: e; K2 S
  5. #define  RCC_AHB1ENR_GPIOCEN                 ((uint32_t)0x00000004)" M* |2 ~- U. W! e+ B
  6. #define  RCC_AHB1ENR_GPIODEN                 ((uint32_t)0x00000008)# X' O+ p* j, m% M
  7. #define  RCC_AHB1ENR_GPIOEEN                 ((uint32_t)0x00000010)
    3 e$ O* u- Z; o
  8. #define  RCC_AHB1ENR_GPIOFEN                 ((uint32_t)0x00000020)1 J+ U4 J9 h/ b
  9. #define  RCC_AHB1ENR_GPIOGEN                 ((uint32_t)0x00000040)
    9 W3 J4 o2 p2 e1 [
  10. #define  RCC_AHB1ENR_GPIOHEN                 ((uint32_t)0x00000080)
    : p- n# g8 v; C4 S) M$ i6 h. o5 r
  11. #define  RCC_AHB1ENR_GPIOIEN                 ((uint32_t)0x00000100)
    3 g7 e/ t, ~" ?  ~0 }& d: K
  12. #define  RCC_AHB1ENR_GPIOJEN                 ((uint32_t)0x00000200)
    4 L% |' K4 G+ P
  13. #define  RCC_AHB1ENR_GPIOKEN                 ((uint32_t)0x00000400)
复制代码

" [( S/ I! A4 P' e3 J* ^, N% q/ G
收藏 评论0 发布时间:2022-4-3 15:00

举报

0个回答

所属标签

相似分享

官网相关资源

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