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

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

[复制链接]
STMCU小助手 发布时间:2022-4-3 15:00
01. GPIO固件库概述
# h1 u: S3 x1 j, C5 s9 l% Ustm32f4xx_gpio.h GPIO相关函数和类型的声明
5 p! Y4 Y+ S. n/ F: x1 P5 r
. z" b% V. ?3 {) G% N/ |stm32f4xx_gpio.c GPIO相关函数具体实现。9 B' N! l. P; R$ k3 T- h+ i: H
2 l* E, P7 }2 q1 I6 H: B; G2 P
02. GPIO相关类型
  Z. n1 h8 `) c* R- ~5 p7 H! @GPIO相关的类型几乎都在stm32f4xx_gpio.h文件中。
& z" r; k1 v) _& J
# I5 }4 w  ~+ i" b' R' F1 c4 v8 wGPIO的模式6 @1 j: y) M. X- }
! u4 Z$ y7 J! Y, P3 Q4 w
  1. /** : P% s4 P$ Z' _3 c: [
  2.   * @brief  GPIO Configuration Mode enumeration
    6 O( J: F% E" u9 N: ~$ k- Y
  3.   */   
    " M) E/ @6 l# e2 t1 u
  4. typedef enum
    1 `; n1 [2 Q7 h4 h: I
  5. { 3 O8 A1 k4 ^+ v, ?: E% }! x7 ?+ X' x
  6.   GPIO_Mode_IN   = 0x00, /*!< GPIO Input Mode */
    # V7 r7 V2 A/ Z% c
  7.   GPIO_Mode_OUT  = 0x01, /*!< GPIO Output Mode */7 u6 B+ W$ J  ~+ A8 C* ~3 b8 p5 ^
  8.   GPIO_Mode_AF   = 0x02, /*!< GPIO Alternate function Mode */
    # A; `9 T0 ^4 L6 j
  9.   GPIO_Mode_AN   = 0x03  /*!< GPIO Analog Mode */
    - t( U+ d$ q% Y9 T3 N" J
  10. }GPIOMode_TypeDef;7 g/ U- i  _5 C  K) n1 i
  11. #define IS_GPIO_MODE(MODE) (((MODE) == GPIO_Mode_IN)  || ((MODE) == GPIO_Mode_OUT) || \
    % v! z& _% N2 w- Y8 x, [& J" u
  12.                             ((MODE) == GPIO_Mode_AF)|| ((MODE) == GPIO_Mode_AN))
复制代码

2 o5 r) n# W; U* FGPIO输出类型, {3 P4 w& P/ G: E6 }6 x3 P. ?
% P, x4 p& Z3 M, |, w" T
  1. /** % O3 F2 f. L4 r# ]3 i: ^, s  }  D
  2.   * @brief  GPIO Output type enumeration
    5 e. H9 S' f6 G: @! y
  3.   */  
    1 v9 \+ P3 x% n- P0 q7 u
  4. typedef enum
    ) B9 t# t! o6 h6 ^, M! I* S
  5. { / O$ \9 w$ j: f8 q* O: |# [: Z" F
  6.   GPIO_OType_PP = 0x00,
    - C8 b: x6 N; j% ]
  7.   GPIO_OType_OD = 0x01! t% \3 v! f; h
  8. }GPIOOType_TypeDef;/ X' P& y6 J$ s9 ], _' P7 s" x
  9. #define IS_GPIO_OTYPE(OTYPE) (((OTYPE) == GPIO_OType_PP) || ((OTYPE) == GPIO_OType_OD))( @/ y# A/ z2 f$ U/ M, o8 B
复制代码

# ?2 u' ?. m" |- q1 E4 C$ ^2 f3 f/ X% F! e6 [GPIO输出速度
# r! k7 S0 y4 F. c' @; _2 P! f
/ h. U$ M/ y; J/ L( v: q
  1. /**
    4 O4 A2 o: v# {# D( r
  2.   * @brief  GPIO Output Maximum frequency enumeration
    7 r6 F- M) P/ B6 C
  3.   */  
    - f6 `  B' U  M2 `
  4. typedef enum. Y8 t/ u$ F" ^  c9 \
  5. {
      ~- q; p, ^- g- o/ @
  6.   GPIO_Low_Speed     = 0x00, /*!< Low speed    */
    5 W4 F& u/ @6 e  Y' F
  7.   GPIO_Medium_Speed  = 0x01, /*!< Medium speed */5 x8 F2 T" N- n. ^" j# G" P
  8.   GPIO_Fast_Speed    = 0x02, /*!< Fast speed   */" C/ F$ w' c& D$ N0 _
  9.   GPIO_High_Speed    = 0x03  /*!< High speed   */4 G! r! P$ k4 m% B
  10. }GPIOSpeed_TypeDef;4 Y( e1 ~2 b0 N

  11. 7 C/ C9 S' L/ E' T, c  i2 V
  12. /* Add legacy definition */- h8 y, _' ]6 `3 C2 o$ G
  13. #define  GPIO_Speed_2MHz    GPIO_Low_Speed    6 y1 c/ d& d  w8 G: i2 d
  14. #define  GPIO_Speed_25MHz   GPIO_Medium_Speed
    ' K' \0 D9 U/ x- P: z
  15. #define  GPIO_Speed_50MHz   GPIO_Fast_Speed $ a. d# Y# [7 i$ a, Z5 J
  16. #define  GPIO_Speed_100MHz  GPIO_High_Speed  
    ) \0 y) S1 q( ]- n
  17. : G; z( \/ N2 ]4 L5 B0 n
  18. #define IS_GPIO_SPEED(SPEED) (((SPEED) == GPIO_Low_Speed) || ((SPEED) == GPIO_Medium_Speed) || \
    . G9 L: I4 h8 C" N
  19.                               ((SPEED) == GPIO_Fast_Speed)||  ((SPEED) == GPIO_High_Speed))
复制代码
- E8 X/ z/ u& @
GPIO上下拉% l" j. E6 w8 ]2 D  H& P: w# V

" S: ^+ Q/ H/ @9 [# k# i
  1. /** * n2 g1 n3 G: D8 w% r  q3 K2 z
  2.   * @brief  GPIO Configuration PullUp PullDown enumeration 9 t9 e7 u! H6 J8 M* g/ h
  3.   */
    6 R; k: ^% x) Q$ ~$ u
  4. typedef enum
    6 p; M$ @; N: p3 R9 |
  5. { # e' c8 @( A) W8 q& U
  6.   GPIO_PuPd_NOPULL = 0x00,  U$ k# M/ I3 Z/ d+ d
  7.   GPIO_PuPd_UP     = 0x01,1 L; ^5 d9 X5 ?7 d9 ~* j. @! ^
  8.   GPIO_PuPd_DOWN   = 0x02
    / ]3 a- W! @' G, ^9 g' t
  9. }GPIOPuPd_TypeDef;
    & `* t% `* T8 w+ [; e; C3 B& P
  10. #define IS_GPIO_PUPD(PUPD) (((PUPD) == GPIO_PuPd_NOPULL) || ((PUPD) == GPIO_PuPd_UP) || \% Z8 B, i* Y5 w$ n  E. `
  11.                             ((PUPD) == GPIO_PuPd_DOWN))
复制代码

( {. d1 K; ^0 i* xGPIO置位和复位0 F3 I* K1 D' C+ j& d6 h, K# f
  C" I% ?0 |0 J; e$ \0 [
  1. /** 0 Y1 I! u7 O& n! J, A* i
  2.   * @brief  GPIO Bit SET and Bit RESET enumeration
    2 `, s9 S' _, }# B: Y# I
  3.   */ $ I, s9 U! @8 ?& u" }# q; d+ G( ^$ I
  4. typedef enum
    - m3 V5 @' \' \7 e
  5. {   C; F9 R# [) ~
  6.   Bit_RESET = 0,' U( C+ N5 \' Z; k- n
  7.   Bit_SET- j2 A$ Q: K: x
  8. }BitAction;
    ! Z' ]7 ~6 a7 Q5 a) [( [" h0 c. G
  9. #define IS_GPIO_BIT_ACTION(ACTION) (((ACTION) == Bit_RESET) || ((ACTION) == Bit_SET))
复制代码

. I6 ^1 E9 U, k- H8 vGPIO初始化结构体类型声明
- V" ]' n0 h, [4 x' r7 P4 w/ `' G$ A2 q
  1. /**
    8 A4 P+ ]* p4 S; p* u
  2.   * @brief   GPIO Init structure definition  7 L) ~% W3 s! Z1 Y1 v# L
  3.   */
    # y* {2 R- r/ W  g
  4. typedef struct
    & q+ f! Q. M  I6 r3 F4 q
  5. {
    " u( l$ h2 c" i" G( T4 V8 i
  6.   uint32_t GPIO_Pin;              /*!< Specifies the GPIO pins to be configured.* Q( R$ y# s3 K, x5 ~/ s# t( M; s
  7.                                        This parameter can be any value of @ref GPIO_pins_define */) `1 g' V% Y  m! _

  8. 5 g( _2 g* K$ I. T' @% H9 y' d
  9.   GPIOMode_TypeDef GPIO_Mode;     /*!< Specifies the operating mode for the selected pins.+ `& D, s# G# Y: I. e1 P
  10.                                        This parameter can be a value of @ref GPIOMode_TypeDef */
    ! f9 k" n; b8 j- |

  11. 2 U- r' F: X) _3 w
  12.   GPIOSpeed_TypeDef GPIO_Speed;   /*!< Specifies the speed for the selected pins.# M5 J; k- j( @* j, q6 w
  13.                                        This parameter can be a value of @ref GPIOSpeed_TypeDef */
    ; w' S, @9 A/ e$ I4 T

  14. - y, s: n" N0 s. X" Z
  15.   GPIOOType_TypeDef GPIO_OType;   /*!< Specifies the operating output type for the selected pins.
    4 u. e* n$ A  h- ~
  16.                                        This parameter can be a value of @ref GPIOOType_TypeDef */8 X% R9 Q2 F- p9 ?2 {0 T
  17. 9 G3 H7 \/ F) _  k1 `$ n
  18.   GPIOPuPd_TypeDef GPIO_PuPd;     /*!< Specifies the operating Pull-up/Pull down for the selected pins.: M0 ^" }& W$ G8 w6 j
  19.                                        This parameter can be a value of @ref GPIOPuPd_TypeDef */+ W. w- o9 k  m0 e
  20. }GPIO_InitTypeDef;
    0 H) @% Y* K$ H! ^
复制代码

- \2 L1 E  k$ Y. x! Q03. GPIO相关宏
7 F1 X) I8 U7 u判断是否为合法的GPIO外设, j# G  i/ V2 {4 {$ x
9 g2 s2 A% {2 j. C% z, L
  1. #define IS_GPIO_ALL_PERIPH(PERIPH) (((PERIPH) == GPIOA) || \
    2 p5 f! M  x% K) z
  2.                                     ((PERIPH) == GPIOB) || \6 V5 f6 w' b$ H1 o1 M' _
  3.                                     ((PERIPH) == GPIOC) || \/ C& h6 Q) k) R* I
  4.                                     ((PERIPH) == GPIOD) || \0 x& Q  q; }$ o& _5 y
  5.                                     ((PERIPH) == GPIOE) || \
    % A. ?6 q6 R) o2 w: F& u
  6.                                     ((PERIPH) == GPIOF) || \+ A) O8 k" r- `- i* M) e. C/ w
  7.                                     ((PERIPH) == GPIOG) || \
    / g+ J( m3 ~$ t+ f" t, I' d# C
  8.                                     ((PERIPH) == GPIOH) || \8 u2 f* k  N# i9 _
  9.                                     ((PERIPH) == GPIOI) || \
    5 h( w- ^1 C& F  @
  10.                                     ((PERIPH) == GPIOJ) || \% D- k: P; S& c( B3 p8 u6 M
  11.                                     ((PERIPH) == GPIOK))
复制代码

( W, i5 s8 _& o# aGPIO合法的引脚
; ~3 |" l) J: J: p- D' f9 Y; M6 c4 b
( R7 @/ Y: \8 v/ `1 W& ~7 y. a
  1. /** @defgroup GPIO_pins_define 7 |- [7 E$ o+ {7 R( t& A% n
  2.   * @{5 G1 V. [! {( T  F& s! ^# n! y# I
  3.   */
    - L8 @0 I2 ^2 E- g' G7 O) m
  4. #define GPIO_Pin_0                 ((uint16_t)0x0001)  /* Pin 0 selected */
    ! ?( _, R) O; d, t$ X
  5. #define GPIO_Pin_1                 ((uint16_t)0x0002)  /* Pin 1 selected */) c2 d/ N% N$ t5 W' t
  6. #define GPIO_Pin_2                 ((uint16_t)0x0004)  /* Pin 2 selected */2 S2 i/ j! w( W6 x) N/ G
  7. #define GPIO_Pin_3                 ((uint16_t)0x0008)  /* Pin 3 selected */
    6 O1 V5 `; J4 ~3 q; b' u
  8. #define GPIO_Pin_4                 ((uint16_t)0x0010)  /* Pin 4 selected */
    + U/ z4 g% w5 r, a" _3 O, i
  9. #define GPIO_Pin_5                 ((uint16_t)0x0020)  /* Pin 5 selected */
    3 o6 B) n" `) J* `- K" j! N# ~
  10. #define GPIO_Pin_6                 ((uint16_t)0x0040)  /* Pin 6 selected */6 G6 n/ y" [2 e1 ^* d
  11. #define GPIO_Pin_7                 ((uint16_t)0x0080)  /* Pin 7 selected */; o2 p/ S8 o+ h2 n4 k/ L6 p* z
  12. #define GPIO_Pin_8                 ((uint16_t)0x0100)  /* Pin 8 selected */
    2 U: W2 L$ E1 S) t) s
  13. #define GPIO_Pin_9                 ((uint16_t)0x0200)  /* Pin 9 selected */4 t# O: ]1 A; F
  14. #define GPIO_Pin_10                ((uint16_t)0x0400)  /* Pin 10 selected */2 I5 m& M- j" i5 r* D. S
  15. #define GPIO_Pin_11                ((uint16_t)0x0800)  /* Pin 11 selected */. l# _; P* I9 I3 f5 S
  16. #define GPIO_Pin_12                ((uint16_t)0x1000)  /* Pin 12 selected */
    + o* ^" x: [3 r/ N0 G
  17. #define GPIO_Pin_13                ((uint16_t)0x2000)  /* Pin 13 selected */
    & n! j" _3 r! G1 J8 [; ~4 K
  18. #define GPIO_Pin_14                ((uint16_t)0x4000)  /* Pin 14 selected */
    5 k" K9 ^/ i) w0 h" a
  19. #define GPIO_Pin_15                ((uint16_t)0x8000)  /* Pin 15 selected */
    3 N- c/ f! X, o* v$ Y
  20. #define GPIO_Pin_All               ((uint16_t)0xFFFF)  /* All pins selected *// H# _7 n/ ~3 Y: u
  21. 1 D9 A5 G$ F2 i; h. O
  22. #define GPIO_PIN_MASK              ((uint32_t)0x0000FFFF) /* PIN mask for assert test */
    - H1 S9 j9 I0 F% m; n  P7 T. O8 G
  23. #define IS_GPIO_PIN(PIN)           (((PIN) & GPIO_PIN_MASK ) != (uint32_t)0x00)8 n# ?/ B. b: D+ q) Z7 O
  24. #define IS_GET_GPIO_PIN(PIN) (((PIN) == GPIO_Pin_0) || \
    5 ]$ x8 }% v# s$ U5 W; X0 f2 U
  25.                               ((PIN) == GPIO_Pin_1) || \. n& K8 F% X1 m- i: L# e" \
  26.                               ((PIN) == GPIO_Pin_2) || \
    % N0 d" K& ~' q2 N
  27.                               ((PIN) == GPIO_Pin_3) || \% v: |' m5 k$ \" Z6 l! o
  28.                               ((PIN) == GPIO_Pin_4) || \
    ( N9 X, t' Y* i2 p* K) b
  29.                               ((PIN) == GPIO_Pin_5) || \
    $ n- Z% j/ a2 L9 t) S& w3 ]
  30.                               ((PIN) == GPIO_Pin_6) || \! }% _: R' C: c
  31.                               ((PIN) == GPIO_Pin_7) || \
    ( |' a) X! `7 k  J8 r' z5 A3 C8 W
  32.                               ((PIN) == GPIO_Pin_8) || \
    : ^6 ~+ B8 M* y2 h
  33.                               ((PIN) == GPIO_Pin_9) || \
    ; d- A( c/ H6 p# L4 R7 P$ R( g
  34.                               ((PIN) == GPIO_Pin_10) || \
    & X; e8 x. C/ o/ G  E
  35.                               ((PIN) == GPIO_Pin_11) || \
    9 n& p# k( v: f$ j9 |/ R( A
  36.                               ((PIN) == GPIO_Pin_12) || \0 p& J, i5 U# Z0 u2 z. g6 B
  37.                               ((PIN) == GPIO_Pin_13) || \# K6 c  p) \: U. Q  a5 ~, ?
  38.                               ((PIN) == GPIO_Pin_14) || \6 u/ u4 ]9 A2 E5 C- Y1 }% F
  39.                               ((PIN) == GPIO_Pin_15))
复制代码

0 q$ Q2 H* F7 v8 j! b$ AGPIO合法的引脚源
% [, {7 b. o( T* P" D6 z, m8 X! @3 d$ j- ~0 ^3 g1 ]- q

  1. ! W# S% e: i# K7 l! ?% p4 ?% v  F" I( e
  2. /** @defgroup GPIO_Pin_sources
    . F1 d! }5 T, Y
  3.   * @{* [7 C) r! P! p  Z6 ^/ c
  4.   */
    - {" \$ I! _' @, p+ w4 R
  5. #define GPIO_PinSource0            ((uint8_t)0x00)5 T2 B, k$ P4 k) h1 a" S3 N
  6. #define GPIO_PinSource1            ((uint8_t)0x01)
    2 f% E+ j6 O) d
  7. #define GPIO_PinSource2            ((uint8_t)0x02)6 m' W4 i, y" v) J8 M9 r2 w
  8. #define GPIO_PinSource3            ((uint8_t)0x03)
    ! l3 w/ _, M+ X' S& U
  9. #define GPIO_PinSource4            ((uint8_t)0x04)+ A) o$ N; u8 P( b
  10. #define GPIO_PinSource5            ((uint8_t)0x05)1 u5 O+ u( P: b6 w" e" }' j
  11. #define GPIO_PinSource6            ((uint8_t)0x06)
    ; H" p, X5 f& f8 J1 h" Q
  12. #define GPIO_PinSource7            ((uint8_t)0x07)
    ' E0 O8 E% t0 H* I4 o7 r! m2 B
  13. #define GPIO_PinSource8            ((uint8_t)0x08)! o5 V2 x: p1 {8 F8 S+ h! a+ ]
  14. #define GPIO_PinSource9            ((uint8_t)0x09)
    + Z$ S1 g+ I! h, y6 f  h0 m
  15. #define GPIO_PinSource10           ((uint8_t)0x0A)/ R+ H, a2 ?- W
  16. #define GPIO_PinSource11           ((uint8_t)0x0B)
    ; D; k- B0 X8 l6 p6 |+ x  J
  17. #define GPIO_PinSource12           ((uint8_t)0x0C)
    0 ?7 T" E( n$ P! x( j/ a4 t7 y9 u
  18. #define GPIO_PinSource13           ((uint8_t)0x0D): u! G6 Z# k1 K
  19. #define GPIO_PinSource14           ((uint8_t)0x0E)
    ; ]0 h) X) }- ^, [: n# U, d4 P; U2 _
  20. #define GPIO_PinSource15           ((uint8_t)0x0F)
    # [& c: R$ ]- y7 ~
  21. ) {0 u6 ?# v1 [& n/ L& g+ a8 @1 A
  22. #define IS_GPIO_PIN_SOURCE(PINSOURCE) (((PINSOURCE) == GPIO_PinSource0) || \
    % T: v2 L$ K- ^0 R  N" N
  23.                                        ((PINSOURCE) == GPIO_PinSource1) || \
    3 H: G0 _: i4 @4 n4 c
  24.                                        ((PINSOURCE) == GPIO_PinSource2) || \; f! F/ x- S' y$ e# U8 B4 n. V
  25.                                        ((PINSOURCE) == GPIO_PinSource3) || \6 i8 h1 m/ a0 N! G3 [
  26.                                        ((PINSOURCE) == GPIO_PinSource4) || \
    * I6 p* y7 z( D& ?- }, h  n# J' g
  27.                                        ((PINSOURCE) == GPIO_PinSource5) || \% `' _) d% ?0 l  n
  28.                                        ((PINSOURCE) == GPIO_PinSource6) || \1 E. P3 `* k0 V' x0 g2 |! H" Q( D& q
  29.                                        ((PINSOURCE) == GPIO_PinSource7) || \. K2 E" L* q2 I7 z+ T
  30.                                        ((PINSOURCE) == GPIO_PinSource8) || \
    * p4 D% g# @5 O8 N. \
  31.                                        ((PINSOURCE) == GPIO_PinSource9) || \
    . ^; F+ z# H7 t
  32.                                        ((PINSOURCE) == GPIO_PinSource10) || \
    9 M# d9 H3 I$ `" A$ b& A' ?. M5 r
  33.                                        ((PINSOURCE) == GPIO_PinSource11) || \1 m, W' E* D* n/ f  U
  34.                                        ((PINSOURCE) == GPIO_PinSource12) || \9 v0 {! b) q& O6 ]9 L. I' `3 h* {
  35.                                        ((PINSOURCE) == GPIO_PinSource13) || \0 c3 h% T3 v+ x/ d( O
  36.                                        ((PINSOURCE) == GPIO_PinSource14) || \
    ' [& @% B& r% p1 v% P' y& w
  37.                                        ((PINSOURCE) == GPIO_PinSource15))
复制代码

9 D% l7 d& i1 D( v04. GPIO相关函数7 {( B3 s5 _$ {
  1. /*  Function used to set the GPIO configuration to the default reset state ****/
    . L8 o0 v! g) y6 E/ Y( K$ Y
  2. //配置GPIO为默认状态
    + V& x) R) `, p. N/ t
  3. void GPIO_DeInit(GPIO_TypeDef* GPIOx);
    ' E+ ~( G, W$ k! j7 K3 P3 u6 }( m. G
  4. 2 s/ o2 ~7 {4 `: t7 \* t
  5. /* Initialization and Configuration functions *********************************/# Q; R" W% d7 ^
  6. //GPIO初始化: w5 j4 {9 O8 X  B- Y* r% x  k
  7. void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
    ! L% Q  |' F9 M2 n
  8. //GPIO结构体初始化
    ! f  f4 D0 r* ~& S0 f
  9. void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);
    7 ^& ?9 Y( c7 M" z* Y# F
  10. //GPIO锁配置+ ^3 {3 D5 L  m2 Q
  11. void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);6 |3 G  o0 P* @! \
  12. + U  |/ W( m: f3 `$ U( @5 N  s
  13. /* GPIO Read and Write functions **********************************************/
    1 W( B/ q  q% O8 T8 O
  14. //GPIO读写函数
    * A' H" A- ?* V/ G* ^
  15. uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    ; t8 e6 c1 `0 ~6 y2 l2 W
  16. uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);/ C$ v/ }: j- E# [: c% w( L
  17. uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);& b/ A0 V+ s0 D1 v9 {
  18. uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
    % [' ~' I/ }* B- [
  19. void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);/ ?: P8 W8 V' I, Y4 O
  20. void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    3 o8 D5 ^1 H- i
  21. void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
      }7 Q: ~$ E2 }; _  h5 r# l4 ^  ^/ }
  22. void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
    * h1 i0 @; u% ~7 \: V  r0 q
  23. void GPIO_ToggleBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    % g& G4 p8 x  F- U8 B
  24. , g# V+ i  H0 x3 J5 Q# M
  25. /* GPIO Alternate functions configuration function ****************************/6 r' ~9 S, a$ A3 |+ v& q: [) g
  26. void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF);
复制代码
' r& A1 f7 A( m) o! ?8 f* V
05. GPIO其它相关* U8 N% R; q- P3 h8 B
stm32f4xx.h文件中
! t+ `3 ~- k  ]% |
' Q5 m* `6 p# E1 A通用GPIO结构体封装
% u0 E( t+ `$ d& [/ c( _- k8 |
4 V$ T( W& \) Q- P
  1. typedef struct2 I) h# x' i. O8 C
  2. {
    . Y6 D6 c% y( z4 D
  3.   __IO uint32_t MODER;    /*!< GPIO port mode register,               Address offset: 0x00      */- F* z4 Y$ G! `- m; ]- x. R1 {
  4.   __IO uint32_t OTYPER;   /*!< GPIO port output type register,        Address offset: 0x04      */$ u# c% F( Y2 H$ C& r) B3 t# W
  5.   __IO uint32_t OSPEEDR;  /*!< GPIO port output speed register,       Address offset: 0x08      */
    1 O: [$ G2 h# @: s# d
  6.   __IO uint32_t PUPDR;    /*!< GPIO port pull-up/pull-down register,  Address offset: 0x0C      *// W$ q# B0 V3 B% s7 o% v9 u
  7.   __IO uint32_t IDR;      /*!< GPIO port input data register,         Address offset: 0x10      */8 F' F( J" v+ M: G
  8.   __IO uint32_t ODR;      /*!< GPIO port output data register,        Address offset: 0x14      */0 W9 @' m& {2 x" ~
  9.   __IO uint16_t BSRRL;    /*!< GPIO port bit set/reset low register,  Address offset: 0x18      */
    * r+ B8 R5 t. j% ]0 n+ c
  10.   __IO uint16_t BSRRH;    /*!< GPIO port bit set/reset high register, Address offset: 0x1A      */' ]2 F3 c7 p( N  F( d, T
  11.   __IO uint32_t LCKR;     /*!< GPIO port configuration lock register, Address offset: 0x1C      */1 W. }! r' u) [
  12.   __IO uint32_t AFR[2];   /*!< GPIO alternate function registers,     Address offset: 0x20-0x24 */
    - ?, u; v9 w& f0 J
  13. } GPIO_TypeDef;
复制代码

; y4 k/ {3 X9 l. tGPIO基地址
2 U2 Z  E8 P1 ?; l& T+ Z2 g! x% D* f: u5 K
  1. /*!< AHB1 peripherals */
    , C% j' W( t+ `1 T" m
  2. #define GPIOA_BASE            (AHB1PERIPH_BASE + 0x0000)
    / J# K5 I2 k9 C* R: C! d
  3. #define GPIOB_BASE            (AHB1PERIPH_BASE + 0x0400): U- ?; x- k0 X  ?' e4 Y1 e$ i7 y* d
  4. #define GPIOC_BASE            (AHB1PERIPH_BASE + 0x0800)
    5 F) q# Q3 c9 n% R" g% T0 s
  5. #define GPIOD_BASE            (AHB1PERIPH_BASE + 0x0C00)) C9 p* q4 O+ A  |$ ~7 C: E
  6. #define GPIOE_BASE            (AHB1PERIPH_BASE + 0x1000)
    ! l# [% r& {, Q% p
  7. #define GPIOF_BASE            (AHB1PERIPH_BASE + 0x1400)
    1 {1 }- a- v  k# |$ z- y
  8. #define GPIOG_BASE            (AHB1PERIPH_BASE + 0x1800)  r, c5 n8 k" W  i: k
  9. #define GPIOH_BASE            (AHB1PERIPH_BASE + 0x1C00)4 C% `! S) k, x2 m
  10. #define GPIOI_BASE            (AHB1PERIPH_BASE + 0x2000)
    ) {( V5 e! \0 H6 J
  11. #define GPIOJ_BASE            (AHB1PERIPH_BASE + 0x2400)
    / ]( g+ }  N" ?9 Y/ B: S0 a
  12. #define GPIOK_BASE            (AHB1PERIPH_BASE + 0x2800)8 h1 j/ B0 k6 {+ q6 H5 j: A+ h! l( a
复制代码

' A9 @( L1 D+ M9 F+ |( WGPIO起始地址7 E4 ?( B+ Q8 ]2 T6 r
9 E3 V4 {# c2 p' g3 H  ~9 E
  1. #define GPIOA               ((GPIO_TypeDef *) GPIOA_BASE)1 k4 L$ |) r+ {/ x( Q' f: g
  2. #define GPIOB               ((GPIO_TypeDef *) GPIOB_BASE)5 ^( a( ^& S$ m# Z0 r1 Z$ O; L
  3. #define GPIOC               ((GPIO_TypeDef *) GPIOC_BASE)
    " v: P0 Q& E) R, ?- c. d, U
  4. #define GPIOD               ((GPIO_TypeDef *) GPIOD_BASE)
    9 J' z& x9 @- ]% ?- N
  5. #define GPIOE               ((GPIO_TypeDef *) GPIOE_BASE)
    ' F8 n% S7 |; O5 S7 }
  6. #define GPIOF               ((GPIO_TypeDef *) GPIOF_BASE)0 V9 C6 Z' E  e* u! A  q* j
  7. #define GPIOG               ((GPIO_TypeDef *) GPIOG_BASE)
    ! Z9 C- q# g( c; M$ o4 w9 y: [2 Z
  8. #define GPIOH               ((GPIO_TypeDef *) GPIOH_BASE)
    / E; X4 N1 ^+ _# l& E( x' E6 @) k/ h
  9. #define GPIOI               ((GPIO_TypeDef *) GPIOI_BASE)
    3 n2 {, _8 {, ]- }, t5 |
  10. #define GPIOJ               ((GPIO_TypeDef *) GPIOJ_BASE)4 n' [4 m- T" Q! S
  11. #define GPIOK               ((GPIO_TypeDef *) GPIOK_BASE)
复制代码

# R# U, [% Z# B7 c& `GPIO寄存器相关位6 U1 o3 S' c2 m$ y* I$ {

. N5 o& z' g, b# C( Z
  1. /******************************************************************************/
    3 U2 B# v) {% Z! b1 @
  2. /*                                                                            */, y2 _8 A4 g# }, L* q6 p
  3. /*                            General Purpose I/O                             */; c1 D+ W$ T* F9 F  J
  4. /*                                                                            */- l/ g5 B' F8 `9 {' v
  5. /******************************************************************************/
    ) u- u/ J) v2 r! J1 l4 L
  6. /******************  Bits definition for GPIO_MODER register  *****************/8 D$ f+ X0 I9 B
  7. #define GPIO_MODER_MODER0                    ((uint32_t)0x00000003)! L' `" }+ O4 @' j8 I3 a
  8. #define GPIO_MODER_MODER0_0                  ((uint32_t)0x00000001)4 s7 B) V7 v# y6 ?3 a
  9. #define GPIO_MODER_MODER0_1                  ((uint32_t)0x00000002)
    9 k* r9 X0 P# u: b1 Q5 a# Z# H

  10. . u2 ?& c) @3 k$ P. C1 M
  11. #define GPIO_MODER_MODER1                    ((uint32_t)0x0000000C)4 X4 t* U$ r" \6 Y6 I2 J) _
  12. #define GPIO_MODER_MODER1_0                  ((uint32_t)0x00000004)
    0 i+ f: }# r% |5 K( R# ?
  13. #define GPIO_MODER_MODER1_1                  ((uint32_t)0x00000008)
    0 {3 f; E" V. F8 w
  14. 9 L- I4 Z2 B5 l# s
  15. #define GPIO_MODER_MODER2                    ((uint32_t)0x00000030)6 ]! f( x9 l* k# m* p+ B5 E) @
  16. #define GPIO_MODER_MODER2_0                  ((uint32_t)0x00000010)0 W: N- w# p3 ~% ]. D/ R. u2 G3 X  {
  17. #define GPIO_MODER_MODER2_1                  ((uint32_t)0x00000020)
    $ R  ]1 K' m# o1 b& g; @
  18. 7 L6 x1 S. l9 G4 a( u' X% S
  19. #define GPIO_MODER_MODER3                    ((uint32_t)0x000000C0)
    & B: ~8 f$ l9 a2 T
  20. #define GPIO_MODER_MODER3_0                  ((uint32_t)0x00000040)+ s1 o' a: B3 j0 M
  21. #define GPIO_MODER_MODER3_1                  ((uint32_t)0x00000080). D2 }3 a( d3 U* `- u, ?+ }/ c
  22. 2 Z) V1 r3 L, O; k: M$ m  K6 Z( p7 ^! e, Y
  23. #define GPIO_MODER_MODER4                    ((uint32_t)0x00000300)
    " G$ g  W  }7 x
  24. #define GPIO_MODER_MODER4_0                  ((uint32_t)0x00000100)6 I5 x5 H: ]* ~1 h2 N
  25. #define GPIO_MODER_MODER4_1                  ((uint32_t)0x00000200)
    % p* k$ U6 N# r
  26. 1 `% t7 q; V+ i7 P
  27. #define GPIO_MODER_MODER5                    ((uint32_t)0x00000C00)
    - i, k& u/ T6 D3 \
  28. #define GPIO_MODER_MODER5_0                  ((uint32_t)0x00000400)  x! R4 M" {+ f* h  ]
  29. #define GPIO_MODER_MODER5_1                  ((uint32_t)0x00000800)6 y- o2 l/ u* A' z0 N! g: h( M; Q
  30. & @+ G) V. Z, S$ k% `% n6 b. ~
  31. #define GPIO_MODER_MODER6                    ((uint32_t)0x00003000)% V1 K. N9 X1 {# Q0 Y0 @5 c; F
  32. #define GPIO_MODER_MODER6_0                  ((uint32_t)0x00001000)
    8 a2 |& s2 m8 L  Z
  33. #define GPIO_MODER_MODER6_1                  ((uint32_t)0x00002000)" @# `- ^& c( X

  34. # E# u% o& ^+ m9 F0 z' V: r* Y
  35. #define GPIO_MODER_MODER7                    ((uint32_t)0x0000C000)
    : T" p, r, M% ^" c; p4 E9 W- M
  36. #define GPIO_MODER_MODER7_0                  ((uint32_t)0x00004000), H& p$ Y) }& R8 g
  37. #define GPIO_MODER_MODER7_1                  ((uint32_t)0x00008000)
    3 z- g3 T( S9 P; M3 U
  38. " i2 x, ^" R# |; O
  39. #define GPIO_MODER_MODER8                    ((uint32_t)0x00030000)$ F: ~/ w: x# I# R9 I. b3 d
  40. #define GPIO_MODER_MODER8_0                  ((uint32_t)0x00010000)
    % n% j: y) R! H  [% ~, P- q7 K- q
  41. #define GPIO_MODER_MODER8_1                  ((uint32_t)0x00020000)
    , O+ h" |2 H+ @6 i  B$ c7 j

  42. * B/ p4 Y- O+ \+ h% v9 l
  43. #define GPIO_MODER_MODER9                    ((uint32_t)0x000C0000)$ T2 F, T  l( {2 {* G) }4 g
  44. #define GPIO_MODER_MODER9_0                  ((uint32_t)0x00040000)
    0 {# B9 x4 W# c; h: p
  45. #define GPIO_MODER_MODER9_1                  ((uint32_t)0x00080000)- M2 K' n; K7 D5 x

  46. . a* D2 ~2 u! g' e# ~6 l
  47. #define GPIO_MODER_MODER10                   ((uint32_t)0x00300000)
    - m4 H* J$ o! l7 j; [
  48. #define GPIO_MODER_MODER10_0                 ((uint32_t)0x00100000)
    ; O  H' s4 Q* a# L+ r
  49. #define GPIO_MODER_MODER10_1                 ((uint32_t)0x00200000)7 m0 ~# U1 e- }4 t% e) W. ~

  50. " j' x, S1 H$ D+ {6 G1 [( S
  51. #define GPIO_MODER_MODER11                   ((uint32_t)0x00C00000)
    % g0 h& ~) v$ r7 L8 T& x
  52. #define GPIO_MODER_MODER11_0                 ((uint32_t)0x00400000)% o+ w% X! \4 F; R- {& H* y8 }
  53. #define GPIO_MODER_MODER11_1                 ((uint32_t)0x00800000)
    2 j0 z% n; [- ^& @$ X. }
  54. ! M" J, W, L8 N' K9 q6 t
  55. #define GPIO_MODER_MODER12                   ((uint32_t)0x03000000)
    . Q1 H! D" P9 ^+ ?
  56. #define GPIO_MODER_MODER12_0                 ((uint32_t)0x01000000)  v6 w' Z) G: U" F) C! G, N
  57. #define GPIO_MODER_MODER12_1                 ((uint32_t)0x02000000)$ f6 Z! d9 n  A/ \
  58. 2 }& o% n, |& c4 L  j+ `
  59. #define GPIO_MODER_MODER13                   ((uint32_t)0x0C000000)
    ! [+ E. a, M" X( u: [7 G
  60. #define GPIO_MODER_MODER13_0                 ((uint32_t)0x04000000)
    . y( t6 E! g3 w
  61. #define GPIO_MODER_MODER13_1                 ((uint32_t)0x08000000)6 t: Y% m% J' `" }+ U. L

  62. % n8 |' O: Q- ?
  63. #define GPIO_MODER_MODER14                   ((uint32_t)0x30000000)# g  R2 G4 T/ u" Z
  64. #define GPIO_MODER_MODER14_0                 ((uint32_t)0x10000000)& H( F* x9 f; p( I6 `7 W* N
  65. #define GPIO_MODER_MODER14_1                 ((uint32_t)0x20000000)
    0 f7 v4 D/ v; c0 }8 l9 ?4 J5 k
  66. ) u4 N; b; H, w% Z3 Y0 e
  67. #define GPIO_MODER_MODER15                   ((uint32_t)0xC0000000)
    * I& n- n1 Q* P4 h5 x7 c% ^
  68. #define GPIO_MODER_MODER15_0                 ((uint32_t)0x40000000)
    " E' v+ ?: ~- E
  69. #define GPIO_MODER_MODER15_1                 ((uint32_t)0x80000000)
    ) X* Z( o, m! e8 m

  70. : g) l5 N, p9 ^% [# l+ g# Z$ _
  71. /******************  Bits definition for GPIO_OTYPER register  ****************/( |6 l& M. H  U6 `* [
  72. #define GPIO_OTYPER_OT_0                     ((uint32_t)0x00000001)1 {/ s. j* L. y. O: D+ W
  73. #define GPIO_OTYPER_OT_1                     ((uint32_t)0x00000002)2 h7 b" r* z' Z+ B1 }, Y+ Y
  74. #define GPIO_OTYPER_OT_2                     ((uint32_t)0x00000004)$ C7 M% {# X; v, E4 R) t
  75. #define GPIO_OTYPER_OT_3                     ((uint32_t)0x00000008)
    ; T, N! ^1 x# t; A0 v
  76. #define GPIO_OTYPER_OT_4                     ((uint32_t)0x00000010)
    , d. T" S% a  X/ J& K- E4 H( ?
  77. #define GPIO_OTYPER_OT_5                     ((uint32_t)0x00000020)
    0 Z9 s9 j4 m4 j  Z" B9 E; M
  78. #define GPIO_OTYPER_OT_6                     ((uint32_t)0x00000040); B3 A' _8 G1 x" k& P
  79. #define GPIO_OTYPER_OT_7                     ((uint32_t)0x00000080)
    & t, l* K* U7 B- [! y0 b5 o
  80. #define GPIO_OTYPER_OT_8                     ((uint32_t)0x00000100)
    : k3 w  D- m6 R$ H
  81. #define GPIO_OTYPER_OT_9                     ((uint32_t)0x00000200)6 }; c! E' N: v, ^( c
  82. #define GPIO_OTYPER_OT_10                    ((uint32_t)0x00000400)
    & |. c0 T: X9 H# v. J  J
  83. #define GPIO_OTYPER_OT_11                    ((uint32_t)0x00000800)  \& \( H* ]6 E" \" D5 `5 g& t% S6 j7 [$ j9 j
  84. #define GPIO_OTYPER_OT_12                    ((uint32_t)0x00001000)- [/ c% Y% w0 A. P7 d
  85. #define GPIO_OTYPER_OT_13                    ((uint32_t)0x00002000)0 B# Q) b9 v2 D4 t" }0 R5 P
  86. #define GPIO_OTYPER_OT_14                    ((uint32_t)0x00004000)
    , X" h5 T6 p1 B  _" |
  87. #define GPIO_OTYPER_OT_15                    ((uint32_t)0x00008000)* A* E! z3 B( U) n
  88. 6 l. F0 W; W: C* K6 K& i1 n
  89. /******************  Bits definition for GPIO_OSPEEDR register  ***************/, b2 c+ q% v) u" I# `: F
  90. #define GPIO_OSPEEDER_OSPEEDR0               ((uint32_t)0x00000003)
    $ d- ?/ a0 W3 O6 D0 ^  ]1 \9 ^
  91. #define GPIO_OSPEEDER_OSPEEDR0_0             ((uint32_t)0x00000001)
    6 {$ \4 Q/ V- x1 S- M9 {
  92. #define GPIO_OSPEEDER_OSPEEDR0_1             ((uint32_t)0x00000002)  H* E& w. c" N8 V# ?
  93. 4 g; d  L4 O/ ~6 M; M" k; u: U
  94. #define GPIO_OSPEEDER_OSPEEDR1               ((uint32_t)0x0000000C)" v( R  F& Y8 }
  95. #define GPIO_OSPEEDER_OSPEEDR1_0             ((uint32_t)0x00000004)
    ; D2 o3 U7 o; w) w  l( r
  96. #define GPIO_OSPEEDER_OSPEEDR1_1             ((uint32_t)0x00000008)
    % \4 B8 [3 ?$ L
  97. & L6 H; L/ w( ^
  98. #define GPIO_OSPEEDER_OSPEEDR2               ((uint32_t)0x00000030)# X# A/ E! p1 T& m! N0 Z
  99. #define GPIO_OSPEEDER_OSPEEDR2_0             ((uint32_t)0x00000010)
    7 j8 R) z7 D2 Y/ W% W0 d( g6 ?7 I* I
  100. #define GPIO_OSPEEDER_OSPEEDR2_1             ((uint32_t)0x00000020)2 `4 O9 H* s: s
  101. 1 `: @( ?3 S8 z3 [, K: r3 }
  102. #define GPIO_OSPEEDER_OSPEEDR3               ((uint32_t)0x000000C0)
    ) B9 }+ o5 I( r8 g" Z% ^/ p
  103. #define GPIO_OSPEEDER_OSPEEDR3_0             ((uint32_t)0x00000040)5 r' d( m( R8 ~9 j
  104. #define GPIO_OSPEEDER_OSPEEDR3_1             ((uint32_t)0x00000080)1 q( L* v% o5 p
  105. 4 U5 {9 W# S, G9 w
  106. #define GPIO_OSPEEDER_OSPEEDR4               ((uint32_t)0x00000300)
    . o# E3 w/ l7 a! [  E3 B; p
  107. #define GPIO_OSPEEDER_OSPEEDR4_0             ((uint32_t)0x00000100)
    6 o. a, C! m+ s  c9 e( Y
  108. #define GPIO_OSPEEDER_OSPEEDR4_1             ((uint32_t)0x00000200)
    7 N% I8 G  r% o* T( Q
  109. & L; {( a9 U1 s1 F! Y
  110. #define GPIO_OSPEEDER_OSPEEDR5               ((uint32_t)0x00000C00)( w4 p5 w. v6 r
  111. #define GPIO_OSPEEDER_OSPEEDR5_0             ((uint32_t)0x00000400)
    ' B+ f$ o0 a) `0 E3 X8 i" F# }
  112. #define GPIO_OSPEEDER_OSPEEDR5_1             ((uint32_t)0x00000800)
    1 S) R8 e; G7 H# g( m8 Q6 v

  113. : A$ @1 f- Y. l7 f# w* }% A' p
  114. #define GPIO_OSPEEDER_OSPEEDR6               ((uint32_t)0x00003000)
    7 @; X) b7 D- X7 W  }
  115. #define GPIO_OSPEEDER_OSPEEDR6_0             ((uint32_t)0x00001000), @3 v2 T; V" B" k7 K, Z! ]
  116. #define GPIO_OSPEEDER_OSPEEDR6_1             ((uint32_t)0x00002000)
    ' r8 \: p9 t- g# B; F

  117. 6 A; A) U* s- V7 F5 l' f
  118. #define GPIO_OSPEEDER_OSPEEDR7               ((uint32_t)0x0000C000)
    6 g  C; o5 C7 {/ T7 W+ \; y9 Y
  119. #define GPIO_OSPEEDER_OSPEEDR7_0             ((uint32_t)0x00004000)
    ' c, v/ X5 q& s4 U
  120. #define GPIO_OSPEEDER_OSPEEDR7_1             ((uint32_t)0x00008000)& s! A$ ?5 Z: x2 m" f

  121. & [0 T% }4 P4 ^- V
  122. #define GPIO_OSPEEDER_OSPEEDR8               ((uint32_t)0x00030000)4 ]4 N/ g4 E. E: T+ ^3 |3 y
  123. #define GPIO_OSPEEDER_OSPEEDR8_0             ((uint32_t)0x00010000)
    % B5 P4 L, S# s4 S( C: H
  124. #define GPIO_OSPEEDER_OSPEEDR8_1             ((uint32_t)0x00020000)
    $ q, ?( k7 N- A, H. c' y+ B4 q
  125. 9 Z! `' l  y. V) i5 D
  126. #define GPIO_OSPEEDER_OSPEEDR9               ((uint32_t)0x000C0000); E5 ]$ U$ C: L8 ^8 g
  127. #define GPIO_OSPEEDER_OSPEEDR9_0             ((uint32_t)0x00040000)" B  [/ L; z* d( ^
  128. #define GPIO_OSPEEDER_OSPEEDR9_1             ((uint32_t)0x00080000)4 W1 H  i" r: m1 |" D9 L
  129. # M% H; M  \4 }% m1 [
  130. #define GPIO_OSPEEDER_OSPEEDR10              ((uint32_t)0x00300000)
    - v0 C/ W1 ?9 B2 t1 f& M' A  X
  131. #define GPIO_OSPEEDER_OSPEEDR10_0            ((uint32_t)0x00100000)  y  b$ |! A; L5 U* k2 t) l
  132. #define GPIO_OSPEEDER_OSPEEDR10_1            ((uint32_t)0x00200000)3 D) N0 O3 q" w$ w7 o
  133. ; B- i% U% j$ \6 t
  134. #define GPIO_OSPEEDER_OSPEEDR11              ((uint32_t)0x00C00000)4 G- T3 t5 U- U/ ~& F
  135. #define GPIO_OSPEEDER_OSPEEDR11_0            ((uint32_t)0x00400000)  O. U8 H6 N, g& ^5 _
  136. #define GPIO_OSPEEDER_OSPEEDR11_1            ((uint32_t)0x00800000)
    6 s* N' u2 W% c0 [1 S( x0 u

  137. * E1 j. _. W. p& x
  138. #define GPIO_OSPEEDER_OSPEEDR12              ((uint32_t)0x03000000)1 F( N1 @! d& e% V* _( _& Y/ |+ w) M  j
  139. #define GPIO_OSPEEDER_OSPEEDR12_0            ((uint32_t)0x01000000)
    9 k" r4 L9 Z" s. |7 k0 [
  140. #define GPIO_OSPEEDER_OSPEEDR12_1            ((uint32_t)0x02000000)
    ! w9 a3 b5 v+ \4 L* ^
  141. : U5 m: d# d) x. T  T
  142. #define GPIO_OSPEEDER_OSPEEDR13              ((uint32_t)0x0C000000)( @9 a3 k! Q6 O; [# b1 |. c! e5 X
  143. #define GPIO_OSPEEDER_OSPEEDR13_0            ((uint32_t)0x04000000)7 L" V3 F+ q6 O8 s; @' p0 {# L
  144. #define GPIO_OSPEEDER_OSPEEDR13_1            ((uint32_t)0x08000000)5 D: N0 I. }# ]4 q& N) C4 G+ p- J

  145. , B# n& L9 I7 h% u4 _
  146. #define GPIO_OSPEEDER_OSPEEDR14              ((uint32_t)0x30000000)7 ?2 Q, g$ ~" `7 @: x8 N  }
  147. #define GPIO_OSPEEDER_OSPEEDR14_0            ((uint32_t)0x10000000)
    & x% H. ?  }1 i5 `9 A- r( r! J
  148. #define GPIO_OSPEEDER_OSPEEDR14_1            ((uint32_t)0x20000000)3 L8 w' I9 ?* N2 v' ?& t, d

  149. 5 G& c9 E3 j$ P% r6 T8 X& ^
  150. #define GPIO_OSPEEDER_OSPEEDR15              ((uint32_t)0xC0000000)
    $ J) T  I% u# M4 ~' V$ S* i1 m
  151. #define GPIO_OSPEEDER_OSPEEDR15_0            ((uint32_t)0x40000000)
    5 C9 b3 ~, E. K2 w4 ~. r
  152. #define GPIO_OSPEEDER_OSPEEDR15_1            ((uint32_t)0x80000000)
    6 g% Y( a6 A. ?4 B* Z* v
  153. ) {  N2 C! t/ C' [
  154. /******************  Bits definition for GPIO_PUPDR register  *****************/( x# s& U4 ?* c7 S( Z
  155. #define GPIO_PUPDR_PUPDR0                    ((uint32_t)0x00000003)
    $ H2 Y( X4 \) M4 V1 Z7 x
  156. #define GPIO_PUPDR_PUPDR0_0                  ((uint32_t)0x00000001)
    0 s/ W3 i3 l- J) x, x7 u
  157. #define GPIO_PUPDR_PUPDR0_1                  ((uint32_t)0x00000002)
    3 i! |$ \" N! \& E

  158. - x" c# ?; @8 B% Q9 ?: h
  159. #define GPIO_PUPDR_PUPDR1                    ((uint32_t)0x0000000C)6 ?( ?# H3 X$ S7 p. f. ]- z
  160. #define GPIO_PUPDR_PUPDR1_0                  ((uint32_t)0x00000004)! f0 z% r" ^3 e% D
  161. #define GPIO_PUPDR_PUPDR1_1                  ((uint32_t)0x00000008)
    " L5 ^3 u7 `# d4 p0 f

  162. / O& \1 s( i+ @0 N& E
  163. #define GPIO_PUPDR_PUPDR2                    ((uint32_t)0x00000030)
    $ a2 m5 O/ C% a( a- f2 M7 O( d
  164. #define GPIO_PUPDR_PUPDR2_0                  ((uint32_t)0x00000010)
    - f& C* o9 c9 u& u+ o: s+ \
  165. #define GPIO_PUPDR_PUPDR2_1                  ((uint32_t)0x00000020)
    5 w8 m) \, \1 M4 K

  166. , c) P4 ^. M& s% w% S2 ?7 w# Z
  167. #define GPIO_PUPDR_PUPDR3                    ((uint32_t)0x000000C0)
    & F% w( x- D7 w; z
  168. #define GPIO_PUPDR_PUPDR3_0                  ((uint32_t)0x00000040)
    / e* n2 w7 @9 Y. x
  169. #define GPIO_PUPDR_PUPDR3_1                  ((uint32_t)0x00000080)
    2 S" ], m! n1 J5 W2 x$ u1 V! x1 M
  170. 1 G& ?5 n) ~0 Q4 {" H4 O8 U
  171. #define GPIO_PUPDR_PUPDR4                    ((uint32_t)0x00000300)
    + ^  i8 Y& i& J/ F4 h
  172. #define GPIO_PUPDR_PUPDR4_0                  ((uint32_t)0x00000100)
    ( \  D* F5 h2 C- _
  173. #define GPIO_PUPDR_PUPDR4_1                  ((uint32_t)0x00000200)1 }& z  }% I: t; b8 B& V7 Y* Z: c" k+ v

  174. - R0 B" J5 S1 G' G
  175. #define GPIO_PUPDR_PUPDR5                    ((uint32_t)0x00000C00)
    % S* J6 a5 H( O: K, ~% \2 G9 i
  176. #define GPIO_PUPDR_PUPDR5_0                  ((uint32_t)0x00000400)
    ! i% Q# F: p5 y7 H+ B
  177. #define GPIO_PUPDR_PUPDR5_1                  ((uint32_t)0x00000800)
    5 n$ D- i, V, x1 L# M8 A

  178. 0 N" z" J2 d3 D5 W+ ~  W- ?
  179. #define GPIO_PUPDR_PUPDR6                    ((uint32_t)0x00003000)
    3 c  }  q7 s  ^0 \6 B" I) h. h/ R
  180. #define GPIO_PUPDR_PUPDR6_0                  ((uint32_t)0x00001000)* C3 p4 y: `4 C
  181. #define GPIO_PUPDR_PUPDR6_1                  ((uint32_t)0x00002000)$ m+ i; _5 x7 S! }* H5 y9 H

  182. ' o. W  X1 B5 h( Y7 U7 j# j) s. A8 Y9 ^$ H* D
  183. #define GPIO_PUPDR_PUPDR7                    ((uint32_t)0x0000C000)
    % p5 y& @9 O1 y  ^7 l" W9 C7 q
  184. #define GPIO_PUPDR_PUPDR7_0                  ((uint32_t)0x00004000)
    ' f; o  h% {9 v( y
  185. #define GPIO_PUPDR_PUPDR7_1                  ((uint32_t)0x00008000)
    9 L; G' T; m5 P0 T* x8 P5 p
  186. - S+ ?. D: ~& g9 T# i
  187. #define GPIO_PUPDR_PUPDR8                    ((uint32_t)0x00030000)
    & B7 K* }4 |$ j* ^; q# R* z
  188. #define GPIO_PUPDR_PUPDR8_0                  ((uint32_t)0x00010000)
    # R% g3 R0 E# Z* b4 `, M  [" B
  189. #define GPIO_PUPDR_PUPDR8_1                  ((uint32_t)0x00020000)2 W: L( Z% y! T) y3 m9 b# m4 p# F% V

  190. , m! _1 Z  z" V% c
  191. #define GPIO_PUPDR_PUPDR9                    ((uint32_t)0x000C0000)
    - _, J2 y2 S8 ]  I0 p7 }
  192. #define GPIO_PUPDR_PUPDR9_0                  ((uint32_t)0x00040000)
    & A* V& L! x0 p: B! `
  193. #define GPIO_PUPDR_PUPDR9_1                  ((uint32_t)0x00080000); J: U5 u9 a7 t2 l  D- p8 ?

  194. * @. j3 Y: ]& l; }; d) s/ N
  195. #define GPIO_PUPDR_PUPDR10                   ((uint32_t)0x00300000)
    6 k( x- o8 Q3 R5 ~" W5 N! L0 ^
  196. #define GPIO_PUPDR_PUPDR10_0                 ((uint32_t)0x00100000)
    6 I1 C$ c6 i( p# Y
  197. #define GPIO_PUPDR_PUPDR10_1                 ((uint32_t)0x00200000)# q7 Y2 x% p' _6 }* b6 Y8 P2 @
  198. / ?$ m" D2 H- }. p5 A2 a8 p8 ^1 `
  199. #define GPIO_PUPDR_PUPDR11                   ((uint32_t)0x00C00000)+ A; ~, M6 z+ i/ z# D1 R/ F
  200. #define GPIO_PUPDR_PUPDR11_0                 ((uint32_t)0x00400000)
    + v/ v, E$ u# j+ c2 v/ Y
  201. #define GPIO_PUPDR_PUPDR11_1                 ((uint32_t)0x00800000)9 y, |! G# Z& K
  202. 9 b3 C; d7 @7 Z) q8 V% o
  203. #define GPIO_PUPDR_PUPDR12                   ((uint32_t)0x03000000)6 B) U% X0 u9 ^0 L' }) l3 V
  204. #define GPIO_PUPDR_PUPDR12_0                 ((uint32_t)0x01000000)0 `# W, F- D; F7 T0 C
  205. #define GPIO_PUPDR_PUPDR12_1                 ((uint32_t)0x02000000)$ S, B' a9 h- ~% l
  206. - d7 p  z5 w6 l0 N2 u
  207. #define GPIO_PUPDR_PUPDR13                   ((uint32_t)0x0C000000)2 _+ P. F8 t" H# L! h1 X8 o0 y
  208. #define GPIO_PUPDR_PUPDR13_0                 ((uint32_t)0x04000000)
    % h* }. N) M6 o  z& e( X" I
  209. #define GPIO_PUPDR_PUPDR13_1                 ((uint32_t)0x08000000)9 Q! C3 D" k: Z/ }
  210. 2 q& M0 G( Q8 d) T6 C; s- i
  211. #define GPIO_PUPDR_PUPDR14                   ((uint32_t)0x30000000)  R- C  x+ S0 p( {& Z
  212. #define GPIO_PUPDR_PUPDR14_0                 ((uint32_t)0x10000000)! G" t7 T' I! o% i( @7 M' c
  213. #define GPIO_PUPDR_PUPDR14_1                 ((uint32_t)0x20000000)) g. i' l3 b  T  _- T9 i3 z5 t

  214. % o7 X$ p' B, c- v# H1 h
  215. #define GPIO_PUPDR_PUPDR15                   ((uint32_t)0xC0000000)
    : [6 g( R6 n, l  t1 O0 m
  216. #define GPIO_PUPDR_PUPDR15_0                 ((uint32_t)0x40000000)
    * W/ |8 P+ H' w) B& K' f# f! ~  q5 J
  217. #define GPIO_PUPDR_PUPDR15_1                 ((uint32_t)0x80000000)7 _+ j: `3 q$ ~3 a) \8 R" d

  218. 2 h0 y1 ]1 z7 r
  219. /******************  Bits definition for GPIO_IDR register  *******************/9 M8 ^* K& X3 ~1 J
  220. #define GPIO_IDR_IDR_0                       ((uint32_t)0x00000001)2 r) C  N2 q  {2 w8 n: P
  221. #define GPIO_IDR_IDR_1                       ((uint32_t)0x00000002)
    , X7 h1 L  u% B9 a5 W
  222. #define GPIO_IDR_IDR_2                       ((uint32_t)0x00000004)
    8 f% M* d8 s- i; A
  223. #define GPIO_IDR_IDR_3                       ((uint32_t)0x00000008)8 S) v" N" D4 s
  224. #define GPIO_IDR_IDR_4                       ((uint32_t)0x00000010)) \. q6 a8 ]# H; u& q% H, l
  225. #define GPIO_IDR_IDR_5                       ((uint32_t)0x00000020)
    " O4 N8 I0 W6 c: h) D- \
  226. #define GPIO_IDR_IDR_6                       ((uint32_t)0x00000040): G- q& e& W. i) w! g0 ~& n) S; _9 i( }
  227. #define GPIO_IDR_IDR_7                       ((uint32_t)0x00000080)
    9 h6 U# g3 ~6 H2 z# w. {! S
  228. #define GPIO_IDR_IDR_8                       ((uint32_t)0x00000100)3 B- m# \$ U  ?, i
  229. #define GPIO_IDR_IDR_9                       ((uint32_t)0x00000200)( N. N- ?( N; g! n$ k
  230. #define GPIO_IDR_IDR_10                      ((uint32_t)0x00000400)$ ]8 @' e3 q3 h- Q& X
  231. #define GPIO_IDR_IDR_11                      ((uint32_t)0x00000800)* W4 ]9 x, @$ }& c7 \
  232. #define GPIO_IDR_IDR_12                      ((uint32_t)0x00001000)
    7 ~( B5 [" F  n4 \2 T6 `. }
  233. #define GPIO_IDR_IDR_13                      ((uint32_t)0x00002000)* p) L: t+ ~# }3 o  e
  234. #define GPIO_IDR_IDR_14                      ((uint32_t)0x00004000)
    + n! F& _8 B8 `# p
  235. #define GPIO_IDR_IDR_15                      ((uint32_t)0x00008000)
      w/ [; N/ X5 R8 P3 p  L
  236. /* Old GPIO_IDR register bits definition, maintained for legacy purpose */  z. t4 k: _2 W% n
  237. #define GPIO_OTYPER_IDR_0                    GPIO_IDR_IDR_06 o3 R4 W% t4 X* _: Z
  238. #define GPIO_OTYPER_IDR_1                    GPIO_IDR_IDR_1& `& Z- V( H. [' l# V# w5 D
  239. #define GPIO_OTYPER_IDR_2                    GPIO_IDR_IDR_2
      ]1 I4 `6 d+ Z) T+ E* Z- d
  240. #define GPIO_OTYPER_IDR_3                    GPIO_IDR_IDR_3
    5 p$ H) ]6 |/ u6 }9 j2 m
  241. #define GPIO_OTYPER_IDR_4                    GPIO_IDR_IDR_4
    * J# @. b9 \4 N8 X9 w4 t
  242. #define GPIO_OTYPER_IDR_5                    GPIO_IDR_IDR_5
    " J* K; H6 N7 |% S
  243. #define GPIO_OTYPER_IDR_6                    GPIO_IDR_IDR_6, G: C9 F; T3 M8 x' {$ D. V
  244. #define GPIO_OTYPER_IDR_7                    GPIO_IDR_IDR_7
    ( D5 J; ~2 u: ^4 D$ [; _
  245. #define GPIO_OTYPER_IDR_8                    GPIO_IDR_IDR_8
    1 v6 h9 n+ l/ S2 ]9 y1 J
  246. #define GPIO_OTYPER_IDR_9                    GPIO_IDR_IDR_9
    ! h! y8 A4 ?5 Y/ Z4 e. X& Q. p
  247. #define GPIO_OTYPER_IDR_10                   GPIO_IDR_IDR_10
    8 V) {8 g: E; o9 H& H; h% a- O
  248. #define GPIO_OTYPER_IDR_11                   GPIO_IDR_IDR_11/ q5 E. Z% v. N8 [
  249. #define GPIO_OTYPER_IDR_12                   GPIO_IDR_IDR_12' E9 y: |% Q* h' |9 k1 l) E2 @
  250. #define GPIO_OTYPER_IDR_13                   GPIO_IDR_IDR_13
    1 g: I) j  E* o4 l% g' P' ~
  251. #define GPIO_OTYPER_IDR_14                   GPIO_IDR_IDR_14
    : j& \3 n2 [: l/ A$ ?( {; v! `
  252. #define GPIO_OTYPER_IDR_15                   GPIO_IDR_IDR_15
    / l3 w! z. t8 o. I& ^9 g0 H/ ^8 T$ W
  253. % I2 b  F  j+ I8 m; {
  254. /******************  Bits definition for GPIO_ODR register  *******************/
    , C+ x7 o7 o4 q( w2 R2 z. L& h
  255. #define GPIO_ODR_ODR_0                       ((uint32_t)0x00000001): |' z+ A5 R' W
  256. #define GPIO_ODR_ODR_1                       ((uint32_t)0x00000002)
    2 U8 a4 F$ D1 A4 P4 R: ]
  257. #define GPIO_ODR_ODR_2                       ((uint32_t)0x00000004)
    4 z. ~: V9 g6 P7 e
  258. #define GPIO_ODR_ODR_3                       ((uint32_t)0x00000008)1 p% ^+ P4 t& N( u* S4 s5 x. [, ^
  259. #define GPIO_ODR_ODR_4                       ((uint32_t)0x00000010)
    1 q* p1 J5 J5 o3 _  Y! ]& ^
  260. #define GPIO_ODR_ODR_5                       ((uint32_t)0x00000020)% k- _+ ]7 O, g" t0 V8 w
  261. #define GPIO_ODR_ODR_6                       ((uint32_t)0x00000040)+ ]' \9 S/ q2 {' P: I
  262. #define GPIO_ODR_ODR_7                       ((uint32_t)0x00000080)
    + N  Y4 t! z. T: u
  263. #define GPIO_ODR_ODR_8                       ((uint32_t)0x00000100)  K9 r1 n8 H+ \! t
  264. #define GPIO_ODR_ODR_9                       ((uint32_t)0x00000200)1 j5 V$ G" W! N" K
  265. #define GPIO_ODR_ODR_10                      ((uint32_t)0x00000400)
    ! R! s4 U) c" d8 F$ \- z
  266. #define GPIO_ODR_ODR_11                      ((uint32_t)0x00000800)
    - a7 J" K' W3 w1 m
  267. #define GPIO_ODR_ODR_12                      ((uint32_t)0x00001000)- _& Z, K  ]/ d# g
  268. #define GPIO_ODR_ODR_13                      ((uint32_t)0x00002000)( w. _4 m& }6 B5 _( ]
  269. #define GPIO_ODR_ODR_14                      ((uint32_t)0x00004000)
    2 D% l" l8 A$ a7 i8 J3 a: Z
  270. #define GPIO_ODR_ODR_15                      ((uint32_t)0x00008000)2 Y% e) B- H5 Z6 c/ S7 k  P2 u
  271. /* Old GPIO_ODR register bits definition, maintained for legacy purpose */0 G, f* L( \) T+ z* c
  272. #define GPIO_OTYPER_ODR_0                    GPIO_ODR_ODR_0# G2 T6 e' E, K& R1 C2 i" w: q
  273. #define GPIO_OTYPER_ODR_1                    GPIO_ODR_ODR_1' `* J. r: _5 e; [1 O- _) H9 i
  274. #define GPIO_OTYPER_ODR_2                    GPIO_ODR_ODR_2
    0 B! x- s/ x+ y1 m$ V7 a
  275. #define GPIO_OTYPER_ODR_3                    GPIO_ODR_ODR_3/ t  n% Z, ~2 ~
  276. #define GPIO_OTYPER_ODR_4                    GPIO_ODR_ODR_4- A1 F3 q$ B3 G
  277. #define GPIO_OTYPER_ODR_5                    GPIO_ODR_ODR_50 `$ G) z* R5 M* C: k8 c, S: E. r
  278. #define GPIO_OTYPER_ODR_6                    GPIO_ODR_ODR_6
      q$ y- T5 T- B4 F. f! e! v" P
  279. #define GPIO_OTYPER_ODR_7                    GPIO_ODR_ODR_7
    2 P" w" A1 B5 @  c7 ^& p: ~3 F4 z
  280. #define GPIO_OTYPER_ODR_8                    GPIO_ODR_ODR_86 f% m2 }+ `0 k& R! V
  281. #define GPIO_OTYPER_ODR_9                    GPIO_ODR_ODR_9
    ' u/ f' d) O% f+ v3 F  }. M  [
  282. #define GPIO_OTYPER_ODR_10                   GPIO_ODR_ODR_10
    9 v- j9 d  G9 h
  283. #define GPIO_OTYPER_ODR_11                   GPIO_ODR_ODR_11
    ' n* [3 i% ^2 `# T! X7 ^
  284. #define GPIO_OTYPER_ODR_12                   GPIO_ODR_ODR_12
    : A; O4 Q0 L' H  ~) b
  285. #define GPIO_OTYPER_ODR_13                   GPIO_ODR_ODR_13
    0 f4 W% n# l$ j2 p8 z- h
  286. #define GPIO_OTYPER_ODR_14                   GPIO_ODR_ODR_14
    # E& r8 f/ z" f6 v
  287. #define GPIO_OTYPER_ODR_15                   GPIO_ODR_ODR_15
      j/ v8 m' z1 L: b
  288. ; p1 Y  b) |) W1 h- Y% Y
  289. /******************  Bits definition for GPIO_BSRR register  ******************/) g0 `  z5 Q: {* [
  290. #define GPIO_BSRR_BS_0                       ((uint32_t)0x00000001)0 w4 H, E0 n! j  C' y' g, F
  291. #define GPIO_BSRR_BS_1                       ((uint32_t)0x00000002)8 ^6 n7 M  G- b1 f/ o
  292. #define GPIO_BSRR_BS_2                       ((uint32_t)0x00000004)% l% X; G9 R& N+ Y3 T  v0 D
  293. #define GPIO_BSRR_BS_3                       ((uint32_t)0x00000008)
    : m; O! h: F" v: q7 [0 q; p2 K! Y
  294. #define GPIO_BSRR_BS_4                       ((uint32_t)0x00000010)3 E4 x, w" p0 z1 z0 z
  295. #define GPIO_BSRR_BS_5                       ((uint32_t)0x00000020)
    + ^& l. `  O* ~9 j9 H3 F
  296. #define GPIO_BSRR_BS_6                       ((uint32_t)0x00000040)
    , D6 e, M- a' U  o
  297. #define GPIO_BSRR_BS_7                       ((uint32_t)0x00000080)
    $ `8 T) ^' P& q) W4 _
  298. #define GPIO_BSRR_BS_8                       ((uint32_t)0x00000100)
    7 S! P* F( c9 H- Z3 W
  299. #define GPIO_BSRR_BS_9                       ((uint32_t)0x00000200)
    # n- r7 \& t8 M/ Y0 w' G
  300. #define GPIO_BSRR_BS_10                      ((uint32_t)0x00000400)& z" i+ U3 @# ]7 {8 O
  301. #define GPIO_BSRR_BS_11                      ((uint32_t)0x00000800)
    0 F$ \: O1 |3 a8 Y! ]
  302. #define GPIO_BSRR_BS_12                      ((uint32_t)0x00001000); o' [5 C9 U+ C/ L: i0 J0 o
  303. #define GPIO_BSRR_BS_13                      ((uint32_t)0x00002000): D# ^5 q, J  X
  304. #define GPIO_BSRR_BS_14                      ((uint32_t)0x00004000)
    8 E3 Y- E9 @0 ~5 m' d' E
  305. #define GPIO_BSRR_BS_15                      ((uint32_t)0x00008000)$ }" s3 b8 t2 n- e& O! |$ w3 Z7 a% |
  306. #define GPIO_BSRR_BR_0                       ((uint32_t)0x00010000)  b- K8 C( Z# G; X2 f* ?
  307. #define GPIO_BSRR_BR_1                       ((uint32_t)0x00020000)
    ' X6 h2 E/ g1 \: ?; p7 {
  308. #define GPIO_BSRR_BR_2                       ((uint32_t)0x00040000)
    . z  z$ Z" d0 M. F3 w
  309. #define GPIO_BSRR_BR_3                       ((uint32_t)0x00080000)3 d7 `- W* Z( k) C
  310. #define GPIO_BSRR_BR_4                       ((uint32_t)0x00100000)
    $ m. x2 h/ i" Q2 y
  311. #define GPIO_BSRR_BR_5                       ((uint32_t)0x00200000)
    ; x, K/ A' l* ~+ `- y% `
  312. #define GPIO_BSRR_BR_6                       ((uint32_t)0x00400000)7 c( t) f0 R. m4 K6 u3 }; L7 ~1 T2 @
  313. #define GPIO_BSRR_BR_7                       ((uint32_t)0x00800000)
    $ D, T: s. L: T  m% ~8 i
  314. #define GPIO_BSRR_BR_8                       ((uint32_t)0x01000000)
    ) L" U7 ?8 m! u  Y1 l
  315. #define GPIO_BSRR_BR_9                       ((uint32_t)0x02000000)% ^' c- h, @. s# O4 c' I$ R
  316. #define GPIO_BSRR_BR_10                      ((uint32_t)0x04000000)
    9 O. M* ]5 W$ L% i% Y1 B
  317. #define GPIO_BSRR_BR_11                      ((uint32_t)0x08000000)
    3 C8 @0 y6 f: O) d5 k3 j
  318. #define GPIO_BSRR_BR_12                      ((uint32_t)0x10000000)* [1 L: L: i, s3 `. Y
  319. #define GPIO_BSRR_BR_13                      ((uint32_t)0x20000000)# U4 F. P4 a, q  z% D) L& T+ P
  320. #define GPIO_BSRR_BR_14                      ((uint32_t)0x40000000)
    , s- q! J. K. o/ C3 L
  321. #define GPIO_BSRR_BR_15                      ((uint32_t)0x80000000)
复制代码
6 {! P! x- O  O( ?* t; v  N
GPIO全部挂载AHB1总线上
5 [7 N  v+ l2 d; j- N' i8 j
) p2 O& M% G# d; T6 V+ O* A

  1. - L4 J. k4 N# A
  2. /********************  Bit definition for RCC_AHB1ENR register  ***************/' ~' `' J4 U. v1 G& h* P5 K! J; k0 q
  3. #define  RCC_AHB1ENR_GPIOAEN                 ((uint32_t)0x00000001)
    ) m0 `' O/ j* T2 c3 q! v1 N
  4. #define  RCC_AHB1ENR_GPIOBEN                 ((uint32_t)0x00000002)
    8 J6 `" S* u, n$ P* n4 x+ U
  5. #define  RCC_AHB1ENR_GPIOCEN                 ((uint32_t)0x00000004)3 A$ n. z4 y9 `8 l
  6. #define  RCC_AHB1ENR_GPIODEN                 ((uint32_t)0x00000008)7 `* P! R- \' j4 \6 v
  7. #define  RCC_AHB1ENR_GPIOEEN                 ((uint32_t)0x00000010)
    " D9 t7 q8 M7 ?9 ?4 `9 w
  8. #define  RCC_AHB1ENR_GPIOFEN                 ((uint32_t)0x00000020)
    $ z0 k/ N% ^- W# @3 E. n! [' q
  9. #define  RCC_AHB1ENR_GPIOGEN                 ((uint32_t)0x00000040)
    8 j2 t; X$ a# q
  10. #define  RCC_AHB1ENR_GPIOHEN                 ((uint32_t)0x00000080)% j! q  u" x- t& M; I2 s1 m
  11. #define  RCC_AHB1ENR_GPIOIEN                 ((uint32_t)0x00000100)
    8 [- X. r7 C7 O" v0 h
  12. #define  RCC_AHB1ENR_GPIOJEN                 ((uint32_t)0x00000200)
    0 v# X) ]$ ?: v; b; Y
  13. #define  RCC_AHB1ENR_GPIOKEN                 ((uint32_t)0x00000400)
复制代码
. o2 r6 j! L% h' @7 a. g
收藏 评论0 发布时间:2022-4-3 15:00

举报

0个回答

所属标签

相似分享

官网相关资源

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