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

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

[复制链接]
STMCU小助手 发布时间:2022-4-3 15:00
01. GPIO固件库概述
+ z8 D; d! i8 sstm32f4xx_gpio.h GPIO相关函数和类型的声明
' B1 Q2 [+ F& [+ B  f$ W3 D  q! ^1 X
$ D$ O6 w# l. x1 V, ~" b, l: W& sstm32f4xx_gpio.c GPIO相关函数具体实现。
. ^3 z3 i: j, B0 e% n2 L1 g& {; W2 r3 N: t4 \2 o9 _$ N; M
02. GPIO相关类型
0 M/ d" B( a; O9 q9 |$ S1 fGPIO相关的类型几乎都在stm32f4xx_gpio.h文件中。: h, e" M1 @& E' R) I5 o
" b  f3 O& O) {1 j  _
GPIO的模式: Y5 ^4 l+ \. w! T  A" `7 g$ S$ m5 Q0 b

2 u$ ?% o: ^+ ]5 Y: k
  1. /** 0 s  W- H/ t; ~$ t3 l3 S
  2.   * @brief  GPIO Configuration Mode enumeration % Y8 e5 z0 p' h. s8 Z. X- O1 w% Y3 Y
  3.   */   1 w% i1 D( k) t: Y
  4. typedef enum, P7 S( t( _: u2 _/ H0 e
  5. {
    9 Q0 M9 o4 R6 l/ @) c+ N
  6.   GPIO_Mode_IN   = 0x00, /*!< GPIO Input Mode */9 Z  N' G+ a( s1 C
  7.   GPIO_Mode_OUT  = 0x01, /*!< GPIO Output Mode */% S" ~1 T0 l* ?) G! }3 `
  8.   GPIO_Mode_AF   = 0x02, /*!< GPIO Alternate function Mode */! z' \3 K0 H% o8 X5 n
  9.   GPIO_Mode_AN   = 0x03  /*!< GPIO Analog Mode */* _# X# T7 u" j; h: W) n% ^
  10. }GPIOMode_TypeDef;
    ; r2 F- F# V/ ^/ |0 i; P. v/ g
  11. #define IS_GPIO_MODE(MODE) (((MODE) == GPIO_Mode_IN)  || ((MODE) == GPIO_Mode_OUT) || \
    * t4 f4 v0 @) j4 x& d; `
  12.                             ((MODE) == GPIO_Mode_AF)|| ((MODE) == GPIO_Mode_AN))
复制代码

  l) f3 _6 p* L( [GPIO输出类型
: x7 C1 c$ N5 c$ q3 o: R% y+ Z* D
  1. /** 0 r* ~6 }- H: S; o" n$ I
  2.   * @brief  GPIO Output type enumeration
    9 N  @: n" h7 K! l4 h
  3.   */  
    & h; w8 p; m! s! G1 N5 X( F
  4. typedef enum
    ' Z" [" t1 G6 v" Q* x
  5. { , @; D8 o% ~& |+ X0 v- b
  6.   GPIO_OType_PP = 0x00,& H9 F: g! x+ \# t5 ^
  7.   GPIO_OType_OD = 0x01
    . i4 t, }9 D+ f4 Z( k1 L
  8. }GPIOOType_TypeDef;
    2 W( U4 N. _: C4 b* U6 S) f; ]
  9. #define IS_GPIO_OTYPE(OTYPE) (((OTYPE) == GPIO_OType_PP) || ((OTYPE) == GPIO_OType_OD))! b6 f. a: T" s2 \
复制代码

& t! p# w& }9 D% UGPIO输出速度
' ?: c% b; F# e2 V: u4 S; y' ^3 V/ X! f7 @  K+ r
  1. /**   S& P0 z8 [0 R& R
  2.   * @brief  GPIO Output Maximum frequency enumeration $ ^$ ~6 n( h  ^# w; o
  3.   */  & F- K# T& t1 u$ [. H4 o) H
  4. typedef enum
    1 L8 m, ?+ `" \
  5. { : Y+ J$ r8 h) u. n& Z
  6.   GPIO_Low_Speed     = 0x00, /*!< Low speed    */& G) a: X, a- i6 y% g
  7.   GPIO_Medium_Speed  = 0x01, /*!< Medium speed */' i" Z$ f- S; g2 h
  8.   GPIO_Fast_Speed    = 0x02, /*!< Fast speed   */
    0 e4 [5 ]9 ^8 o' s! F
  9.   GPIO_High_Speed    = 0x03  /*!< High speed   */  U' s% {5 S" z0 n+ }8 v0 A% r
  10. }GPIOSpeed_TypeDef;4 d7 I' m' u1 O, q9 O- l2 w! u+ A
  11. ' J3 j, u# D$ i. Z
  12. /* Add legacy definition */
    9 a7 A9 z  D& \* C
  13. #define  GPIO_Speed_2MHz    GPIO_Low_Speed   
    9 D0 u, j( a2 d2 e$ h8 j2 G8 L
  14. #define  GPIO_Speed_25MHz   GPIO_Medium_Speed $ ^1 I" t: \' k7 _# w
  15. #define  GPIO_Speed_50MHz   GPIO_Fast_Speed : T7 Q* }1 T- j% p
  16. #define  GPIO_Speed_100MHz  GPIO_High_Speed  ( S5 b1 [. |4 \* _' _

  17. % l/ O: p. J2 z. `- d
  18. #define IS_GPIO_SPEED(SPEED) (((SPEED) == GPIO_Low_Speed) || ((SPEED) == GPIO_Medium_Speed) || \
    7 \0 I5 |. S) a1 V+ N2 m
  19.                               ((SPEED) == GPIO_Fast_Speed)||  ((SPEED) == GPIO_High_Speed))
复制代码
7 o' Z4 Z4 \% Q: o
GPIO上下拉
9 [1 n3 r: U  M' m/ {- Q0 C3 S6 y' R+ U8 W$ D* Z* f' I
  1. /** 2 q" O/ G  n& X+ }
  2.   * @brief  GPIO Configuration PullUp PullDown enumeration ) @0 y. f5 E0 m
  3.   */
    ! j+ f* y% q/ T5 O
  4. typedef enum7 J1 ^# ~) z1 [$ [6 r+ u( C
  5. {
    & ~( `9 f) p: Z, O# V" s7 D
  6.   GPIO_PuPd_NOPULL = 0x00,
    9 v. t0 n6 X/ t+ S* ]
  7.   GPIO_PuPd_UP     = 0x01,4 _1 t8 `" Y% J  B
  8.   GPIO_PuPd_DOWN   = 0x02
    & Z  c- \' [: v1 A/ i* @, m. V
  9. }GPIOPuPd_TypeDef;: R" t+ K- @- K! A( Q2 K
  10. #define IS_GPIO_PUPD(PUPD) (((PUPD) == GPIO_PuPd_NOPULL) || ((PUPD) == GPIO_PuPd_UP) || \
    + _& R; ]  G/ ]9 c
  11.                             ((PUPD) == GPIO_PuPd_DOWN))
复制代码

) d/ J. z) h1 H8 T  @/ i. T2 p' `GPIO置位和复位9 s7 R$ |; V" X: ]  B: n
0 G3 m" @) c# {. w( u
  1. /** * K6 a& ]% ]! _( q) v
  2.   * @brief  GPIO Bit SET and Bit RESET enumeration
    2 k. s% H: B, p- d- E
  3.   */ 7 b8 A3 g& N  v1 M; g0 h0 E: ^* f* w) P
  4. typedef enum
    5 o, t9 \$ u+ x/ t
  5. {
    1 `/ C9 v' j5 g* y8 _7 p
  6.   Bit_RESET = 0,
    - N9 v3 W9 H1 s: k: E, c
  7.   Bit_SET3 a: T& g4 X. p& [
  8. }BitAction;
    , z" e3 k4 j% j- U) S7 G. j
  9. #define IS_GPIO_BIT_ACTION(ACTION) (((ACTION) == Bit_RESET) || ((ACTION) == Bit_SET))
复制代码

- ]- p; X! G8 l' z! C4 Z& mGPIO初始化结构体类型声明
2 C- {5 `' |% ]6 L/ V' h3 i5 r( ^( p/ D% s
  1. /** ) o; b5 T' _( w  t- J
  2.   * @brief   GPIO Init structure definition  
    / k# v; N' v0 u0 Q
  3.   */
    % ?2 o8 M4 U0 l6 P# O: _4 H
  4. typedef struct
    & q- k- g) |7 N5 z* P! L" C
  5. {
    % b: t$ B" v' G5 U
  6.   uint32_t GPIO_Pin;              /*!< Specifies the GPIO pins to be configured./ I& j7 u' j0 c+ L# A' H: U6 @
  7.                                        This parameter can be any value of @ref GPIO_pins_define */
    6 G' M! H! ]$ k4 W" K. E6 w
  8. 4 J) A3 e% @2 V; ^9 \0 c1 e8 V  |
  9.   GPIOMode_TypeDef GPIO_Mode;     /*!< Specifies the operating mode for the selected pins.
    6 T6 i! m. @7 {( s
  10.                                        This parameter can be a value of @ref GPIOMode_TypeDef */
    6 J/ c1 v$ U& l( L, a7 j( g" T

  11. 3 D: J' O5 K" r7 y
  12.   GPIOSpeed_TypeDef GPIO_Speed;   /*!< Specifies the speed for the selected pins.* G/ F0 U5 I/ }* a4 h% \- }1 `' g
  13.                                        This parameter can be a value of @ref GPIOSpeed_TypeDef */
    ! f4 d. e# v) l+ L5 S' B( Y
  14. 7 T0 A; o- V5 Y5 v
  15.   GPIOOType_TypeDef GPIO_OType;   /*!< Specifies the operating output type for the selected pins.
    ) S2 @/ @  Z/ n4 R3 w1 x! S
  16.                                        This parameter can be a value of @ref GPIOOType_TypeDef */9 Y! V& g% c$ f- C( V

  17. & j8 A8 U6 R/ n8 V/ I: B) y
  18.   GPIOPuPd_TypeDef GPIO_PuPd;     /*!< Specifies the operating Pull-up/Pull down for the selected pins.- K1 d5 V7 G, e
  19.                                        This parameter can be a value of @ref GPIOPuPd_TypeDef */
    $ u: J" Q; h1 z: [8 L3 Z
  20. }GPIO_InitTypeDef;
    0 K6 m$ f: M# u7 |/ k1 S! g
复制代码
; Y  B; `- d# p; T8 d5 m
03. GPIO相关宏5 j0 E. B+ c. p/ [- J5 S4 B; I
判断是否为合法的GPIO外设7 C/ S, D+ s* C. j
2 r! W% H" A1 m) ~1 I; F/ y+ ?
  1. #define IS_GPIO_ALL_PERIPH(PERIPH) (((PERIPH) == GPIOA) || \1 F, z3 {! d8 K; x/ r( @# _
  2.                                     ((PERIPH) == GPIOB) || \
    * w! c# m7 Z' {7 N% u" m$ B
  3.                                     ((PERIPH) == GPIOC) || \* d. [1 `% o( k5 y% s9 x
  4.                                     ((PERIPH) == GPIOD) || \
    2 @4 m- m* P& F) ~2 |
  5.                                     ((PERIPH) == GPIOE) || \
    9 u! d& F* X2 J" u6 i  U
  6.                                     ((PERIPH) == GPIOF) || \9 p5 l: S7 }" O; h
  7.                                     ((PERIPH) == GPIOG) || \
    % a5 m$ W* J# F% I# }9 P+ K
  8.                                     ((PERIPH) == GPIOH) || \! D3 c' V" X5 t/ u
  9.                                     ((PERIPH) == GPIOI) || \
    % M9 m& A9 a, e8 B) X: }! ~: L
  10.                                     ((PERIPH) == GPIOJ) || \
      Q; B1 V8 ~5 }! \% `  D
  11.                                     ((PERIPH) == GPIOK))
复制代码

& I- P. Z" t3 p3 q4 WGPIO合法的引脚
9 B; l% B$ U/ Q- F5 J. S) l0 q! k. {7 ]: v) M2 W
  1. /** @defgroup GPIO_pins_define & j4 A. m' F! x: M  g
  2.   * @{
    % d) B  x, @! z( Z- B3 J
  3.   */ 1 U  F2 y9 }( A1 c6 U' g/ @. l3 y/ ]
  4. #define GPIO_Pin_0                 ((uint16_t)0x0001)  /* Pin 0 selected */
    2 y- G2 x% ]) U9 m) {; z
  5. #define GPIO_Pin_1                 ((uint16_t)0x0002)  /* Pin 1 selected */
    ( Q! q  m' {: P3 d* w
  6. #define GPIO_Pin_2                 ((uint16_t)0x0004)  /* Pin 2 selected */
    ( X" }. a" m) |6 L9 z
  7. #define GPIO_Pin_3                 ((uint16_t)0x0008)  /* Pin 3 selected */4 Q/ S) M1 c) d% ?) C- i' k
  8. #define GPIO_Pin_4                 ((uint16_t)0x0010)  /* Pin 4 selected *// J- j% v2 k+ q/ U5 e/ v
  9. #define GPIO_Pin_5                 ((uint16_t)0x0020)  /* Pin 5 selected */
    0 A6 z5 C  N# [. I# B3 @! H& H
  10. #define GPIO_Pin_6                 ((uint16_t)0x0040)  /* Pin 6 selected */
    % [  B( `1 n. s+ P6 y7 T1 v
  11. #define GPIO_Pin_7                 ((uint16_t)0x0080)  /* Pin 7 selected */
    / C0 x+ d3 I5 C& K" G! e$ B
  12. #define GPIO_Pin_8                 ((uint16_t)0x0100)  /* Pin 8 selected */# k" W: R$ V! E% d  i- J0 l7 L$ Q
  13. #define GPIO_Pin_9                 ((uint16_t)0x0200)  /* Pin 9 selected */* R( M# J+ j0 P, @+ [
  14. #define GPIO_Pin_10                ((uint16_t)0x0400)  /* Pin 10 selected */
    / C3 C( `5 j8 m) d" T
  15. #define GPIO_Pin_11                ((uint16_t)0x0800)  /* Pin 11 selected */
    + q* m, \, _: T. X
  16. #define GPIO_Pin_12                ((uint16_t)0x1000)  /* Pin 12 selected */8 E+ a) t: d3 F0 A1 f
  17. #define GPIO_Pin_13                ((uint16_t)0x2000)  /* Pin 13 selected */
    8 `% h1 D; P/ i
  18. #define GPIO_Pin_14                ((uint16_t)0x4000)  /* Pin 14 selected */
    ; ?- S) e2 W3 Z$ ^3 f2 T
  19. #define GPIO_Pin_15                ((uint16_t)0x8000)  /* Pin 15 selected */0 ~6 J% F& x3 K: K$ N0 J5 s
  20. #define GPIO_Pin_All               ((uint16_t)0xFFFF)  /* All pins selected */
    0 E1 \+ e7 D( l: J: l, `. H) [
  21. $ ~1 e& b" F8 t5 I& m2 w
  22. #define GPIO_PIN_MASK              ((uint32_t)0x0000FFFF) /* PIN mask for assert test */
    : \+ S. T, \5 m, F! q. p, O0 e* I
  23. #define IS_GPIO_PIN(PIN)           (((PIN) & GPIO_PIN_MASK ) != (uint32_t)0x00)2 x  ]5 q' D: \4 ?/ B8 Z+ u5 @8 S
  24. #define IS_GET_GPIO_PIN(PIN) (((PIN) == GPIO_Pin_0) || \
    ; k9 c. ?5 H0 U( l0 W( J& W3 b
  25.                               ((PIN) == GPIO_Pin_1) || \3 V4 ^5 r% P0 Q2 N; W$ o- a1 d
  26.                               ((PIN) == GPIO_Pin_2) || \; c  T! u: d9 V7 i( b
  27.                               ((PIN) == GPIO_Pin_3) || \1 l3 l$ }% Z( ^( y
  28.                               ((PIN) == GPIO_Pin_4) || \: W- f/ T5 S7 {4 g' U$ B
  29.                               ((PIN) == GPIO_Pin_5) || \
    5 ^. V' k) z; _
  30.                               ((PIN) == GPIO_Pin_6) || \- h! C' P1 k) ~) S1 U' S5 K2 b
  31.                               ((PIN) == GPIO_Pin_7) || \/ \' |2 G' Q5 K. @8 T
  32.                               ((PIN) == GPIO_Pin_8) || \
      u) C) t) X+ \: b8 N0 m( U
  33.                               ((PIN) == GPIO_Pin_9) || \7 `( q" M5 E! r
  34.                               ((PIN) == GPIO_Pin_10) || \
    6 w7 X) ]) Y9 o& H* D+ {
  35.                               ((PIN) == GPIO_Pin_11) || \2 q; x4 }" I% e
  36.                               ((PIN) == GPIO_Pin_12) || \, h/ p! k  U- ^
  37.                               ((PIN) == GPIO_Pin_13) || \3 H  \7 J) ?7 _  g8 U3 E, E
  38.                               ((PIN) == GPIO_Pin_14) || \
    6 V" \: J1 s" T7 G: q1 V7 U& c7 W
  39.                               ((PIN) == GPIO_Pin_15))
复制代码

! A. w& u0 l5 ]GPIO合法的引脚源
5 m3 s% ~* W3 L( o1 }' i
2 @+ V$ }6 [$ H0 X  l3 ?# q* T
  1. - B3 I- v0 ^: W2 u
  2. /** @defgroup GPIO_Pin_sources
    3 `* K+ ^: n' w  @6 r1 B
  3.   * @{
    ) d, i( v' ?# j2 b/ e; M
  4.   */
    , Z7 p7 V# x1 x1 @3 {: C
  5. #define GPIO_PinSource0            ((uint8_t)0x00)( k1 N5 K& U6 P: @  [
  6. #define GPIO_PinSource1            ((uint8_t)0x01)" ~8 H1 g; x6 W1 T$ c
  7. #define GPIO_PinSource2            ((uint8_t)0x02)
    & e6 v  c. B  ?" s
  8. #define GPIO_PinSource3            ((uint8_t)0x03)
    . }9 p* B6 ^- U# i/ K
  9. #define GPIO_PinSource4            ((uint8_t)0x04)
    4 S* l* H9 T: v/ q
  10. #define GPIO_PinSource5            ((uint8_t)0x05)  T5 T2 j: u1 z) c
  11. #define GPIO_PinSource6            ((uint8_t)0x06)
    ! C7 @, m7 |- L; k! A& o
  12. #define GPIO_PinSource7            ((uint8_t)0x07)
    ; D! V; ]3 `9 M0 x& Y. e
  13. #define GPIO_PinSource8            ((uint8_t)0x08): S: \$ N  p& C; t+ V* g
  14. #define GPIO_PinSource9            ((uint8_t)0x09)
    6 `8 m/ ^% E. W( |, d. v) Y
  15. #define GPIO_PinSource10           ((uint8_t)0x0A)7 ?* T) j# y  M1 ~; c4 B
  16. #define GPIO_PinSource11           ((uint8_t)0x0B)
      e& w" x6 I. ]; B6 _/ E3 |
  17. #define GPIO_PinSource12           ((uint8_t)0x0C)
    9 V5 f* v  _: ?  A/ b
  18. #define GPIO_PinSource13           ((uint8_t)0x0D)% i7 N8 x/ {( Q1 a) I
  19. #define GPIO_PinSource14           ((uint8_t)0x0E); i7 E+ [! p3 z0 W( E4 `
  20. #define GPIO_PinSource15           ((uint8_t)0x0F)! k' ?6 u9 v# f' ~7 X" ~( S+ p9 T
  21. 3 g3 l7 m4 S3 {; b
  22. #define IS_GPIO_PIN_SOURCE(PINSOURCE) (((PINSOURCE) == GPIO_PinSource0) || \
    2 b0 T! {) B8 c. F# I4 K
  23.                                        ((PINSOURCE) == GPIO_PinSource1) || \; G% i: _! Z* D: t3 f. }
  24.                                        ((PINSOURCE) == GPIO_PinSource2) || \0 X0 C+ j5 c% Y9 z: c
  25.                                        ((PINSOURCE) == GPIO_PinSource3) || \
    " |  Y2 l# }! h8 K2 [7 n
  26.                                        ((PINSOURCE) == GPIO_PinSource4) || \
    9 u9 x( @2 Y) S4 {2 O2 z
  27.                                        ((PINSOURCE) == GPIO_PinSource5) || \. x8 r# p2 R% u+ ?8 t. ^0 F( ]  I
  28.                                        ((PINSOURCE) == GPIO_PinSource6) || \
    9 ]6 j+ p! G/ W1 A
  29.                                        ((PINSOURCE) == GPIO_PinSource7) || \
    : H6 y5 R( w; p# r
  30.                                        ((PINSOURCE) == GPIO_PinSource8) || \
    ( n1 R' U7 S4 q" D8 d
  31.                                        ((PINSOURCE) == GPIO_PinSource9) || \
    & P8 Z/ P1 j) B" T
  32.                                        ((PINSOURCE) == GPIO_PinSource10) || \+ N# V7 A6 ]* q. t: e% v/ n4 U. s
  33.                                        ((PINSOURCE) == GPIO_PinSource11) || \
      T. ~) E3 s5 V- [. S: Z
  34.                                        ((PINSOURCE) == GPIO_PinSource12) || \  [1 U! v2 a1 P- B
  35.                                        ((PINSOURCE) == GPIO_PinSource13) || \
    ( j- ]! S* U( P4 g2 w
  36.                                        ((PINSOURCE) == GPIO_PinSource14) || \& `: L/ d" ~) `$ P; I$ y+ y
  37.                                        ((PINSOURCE) == GPIO_PinSource15))
复制代码

+ z/ |( \1 F5 Y& P- o04. GPIO相关函数# P* }* k. {+ b: b" J4 c; N3 l, m
  1. /*  Function used to set the GPIO configuration to the default reset state ****/( w& z9 M, g9 E) H
  2. //配置GPIO为默认状态
    ; D% K) w6 B5 H" I! O- Y- S
  3. void GPIO_DeInit(GPIO_TypeDef* GPIOx);- W5 K0 r6 v0 z- e1 b2 ~
  4. 4 c) m+ L3 x* [! _7 `
  5. /* Initialization and Configuration functions *********************************/
    + G) k3 {8 `% X3 a7 A0 y
  6. //GPIO初始化
    7 c' t7 v5 |3 j" n+ N/ M
  7. void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);. Q0 n: `5 U0 c8 [
  8. //GPIO结构体初始化
    . ]# y' t, F' u
  9. void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);
    5 E( i2 t2 h# e# L
  10. //GPIO锁配置- W; v  S: T1 S: L* |3 H9 |, s
  11. void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    * G9 F' y8 G2 a
  12. 1 f4 C8 g  F+ }
  13. /* GPIO Read and Write functions **********************************************/5 c$ V0 ?( Q+ V) P3 ~8 H
  14. //GPIO读写函数
      c8 y: N' R  J: i. Z1 O6 G
  15. uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    0 x$ F5 l  @) I, C9 t* i& S1 ~4 Z
  16. uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
    7 R& q5 h* g. C" e0 M' N
  17. uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);* y! \. @  B8 F
  18. uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);6 s! O; T2 H/ X# m  R9 k$ Z* X
  19. void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);  }6 y3 `" {7 v$ ^9 v( V, b
  20. void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    7 ^/ C- c1 u: T, V7 e  W- l
  21. void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);/ ^% W/ e: }  y9 `7 R: }) L
  22. void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
    : Y, ~0 n9 R, e( g+ z- `2 n/ Q; E
  23. void GPIO_ToggleBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);( t8 f. r  @4 z: l, e3 z! {: C0 m& B) \

  24. : G, d2 q' @9 g, e! X% ]
  25. /* GPIO Alternate functions configuration function ****************************/) q5 U& ^8 W  K, r4 T# A
  26. void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF);
复制代码
9 I5 s* x8 Q' T- {& {' ]( g
05. GPIO其它相关3 [/ [& T- q3 v/ m4 x
stm32f4xx.h文件中
+ D7 `! T' W$ M7 H9 k) {% ~/ X* m1 v) _, o9 b/ |" [% n0 ~3 P
通用GPIO结构体封装
. B( f+ m% y5 y6 A5 ]/ i
4 W- R5 r" y+ N! o$ G! e
  1. typedef struct
    5 M! n) e1 v1 {  P; N% H
  2. {
    0 M( L8 t5 x  r
  3.   __IO uint32_t MODER;    /*!< GPIO port mode register,               Address offset: 0x00      */
    # j5 J) p1 w+ A) O" ?4 K9 c
  4.   __IO uint32_t OTYPER;   /*!< GPIO port output type register,        Address offset: 0x04      */
    / n4 {7 ?* u! C. w
  5.   __IO uint32_t OSPEEDR;  /*!< GPIO port output speed register,       Address offset: 0x08      */
    3 V& s9 E' G4 O
  6.   __IO uint32_t PUPDR;    /*!< GPIO port pull-up/pull-down register,  Address offset: 0x0C      */
    # H! y/ {3 O+ A8 r8 s8 q. h
  7.   __IO uint32_t IDR;      /*!< GPIO port input data register,         Address offset: 0x10      */& u7 C9 y  T8 H9 ]& [9 X" P4 y  o$ g! O
  8.   __IO uint32_t ODR;      /*!< GPIO port output data register,        Address offset: 0x14      */
    % f2 B/ K/ W) W( A8 k
  9.   __IO uint16_t BSRRL;    /*!< GPIO port bit set/reset low register,  Address offset: 0x18      */* f" f' W* h7 U  S
  10.   __IO uint16_t BSRRH;    /*!< GPIO port bit set/reset high register, Address offset: 0x1A      */6 m# H7 h! w6 I1 N# z
  11.   __IO uint32_t LCKR;     /*!< GPIO port configuration lock register, Address offset: 0x1C      */* A$ K) o/ p, Y( j2 F
  12.   __IO uint32_t AFR[2];   /*!< GPIO alternate function registers,     Address offset: 0x20-0x24 */) p" W" ~$ J. D; c) B
  13. } GPIO_TypeDef;
复制代码

$ ^2 `: m* p# X4 aGPIO基地址
, f% x, n" E8 u3 Y9 _2 |. D) I  T" {6 w. u5 u- G- J
  1. /*!< AHB1 peripherals */
      J3 j; x# F8 G4 K0 i( |  I
  2. #define GPIOA_BASE            (AHB1PERIPH_BASE + 0x0000)4 ^5 P; q/ m# |  Q: x' {3 ]
  3. #define GPIOB_BASE            (AHB1PERIPH_BASE + 0x0400)) L8 U8 ~9 A  `5 q
  4. #define GPIOC_BASE            (AHB1PERIPH_BASE + 0x0800)
    , `! a' @7 O$ m3 r
  5. #define GPIOD_BASE            (AHB1PERIPH_BASE + 0x0C00)
    % F% J; U) ?* ?. T
  6. #define GPIOE_BASE            (AHB1PERIPH_BASE + 0x1000)4 a; j4 U2 `5 H2 z  D' b; @
  7. #define GPIOF_BASE            (AHB1PERIPH_BASE + 0x1400)
    % w/ g" u1 J3 P- G5 L
  8. #define GPIOG_BASE            (AHB1PERIPH_BASE + 0x1800)) b" b' {9 a, ^: v1 n- o
  9. #define GPIOH_BASE            (AHB1PERIPH_BASE + 0x1C00)
    - v, d2 y" R% W3 ?, g) a
  10. #define GPIOI_BASE            (AHB1PERIPH_BASE + 0x2000)
    ; V& k& v  D5 t( Q1 K5 Y
  11. #define GPIOJ_BASE            (AHB1PERIPH_BASE + 0x2400)% V" F6 |0 }5 Y
  12. #define GPIOK_BASE            (AHB1PERIPH_BASE + 0x2800)+ ~3 D  k5 c) q7 b! B
复制代码
' E: X* ?4 K/ |2 d$ w
GPIO起始地址
3 W1 {. y4 b: B  [) F, I
- q  u. e: a9 z" s. l0 V
  1. #define GPIOA               ((GPIO_TypeDef *) GPIOA_BASE)! A* M: Y8 H" Y; N3 H
  2. #define GPIOB               ((GPIO_TypeDef *) GPIOB_BASE)
    ; b8 @% z2 u' A: r7 M9 m4 ?# a
  3. #define GPIOC               ((GPIO_TypeDef *) GPIOC_BASE)
    ' O# K9 l- L, G# N* K4 D1 c& j
  4. #define GPIOD               ((GPIO_TypeDef *) GPIOD_BASE)7 U4 X% Z3 N  G6 C1 V3 q4 W
  5. #define GPIOE               ((GPIO_TypeDef *) GPIOE_BASE)
    3 }5 ~: X  T8 g
  6. #define GPIOF               ((GPIO_TypeDef *) GPIOF_BASE)) D6 H! @2 r: w( M9 i% c0 ^7 A
  7. #define GPIOG               ((GPIO_TypeDef *) GPIOG_BASE)
    8 `: ]: A8 C+ {+ Y) w* `# A' g
  8. #define GPIOH               ((GPIO_TypeDef *) GPIOH_BASE)
    9 [" d9 @# t! @2 i! a
  9. #define GPIOI               ((GPIO_TypeDef *) GPIOI_BASE)4 c4 i9 {$ D7 g% s; ^
  10. #define GPIOJ               ((GPIO_TypeDef *) GPIOJ_BASE)* t4 x$ L: [8 n, l
  11. #define GPIOK               ((GPIO_TypeDef *) GPIOK_BASE)
复制代码
) W3 O7 A1 ]2 R+ e6 w7 O( X& r  V. m) o
GPIO寄存器相关位
# @5 ]  p( F+ p  Q5 [, o1 M* }0 S+ {
  1. /******************************************************************************/! q0 `" G( d  O- F# _: G! p
  2. /*                                                                            */6 G# U4 J- i' S0 j
  3. /*                            General Purpose I/O                             *// H. n- Q! S- U4 j& a6 `3 y! a# x
  4. /*                                                                            */  q6 s6 U- P5 G2 f: A, S$ ^/ W6 y
  5. /******************************************************************************/: M; @) Q2 Z+ @/ u
  6. /******************  Bits definition for GPIO_MODER register  *****************/
    " A* W5 m  L: ^% W: k
  7. #define GPIO_MODER_MODER0                    ((uint32_t)0x00000003)
    - ^6 I1 g0 v5 m9 m$ \
  8. #define GPIO_MODER_MODER0_0                  ((uint32_t)0x00000001)0 M9 |! q: W, P) R4 F, I
  9. #define GPIO_MODER_MODER0_1                  ((uint32_t)0x00000002)
    ' M  L; E5 b$ A' N4 U

  10. " W, @3 @& f$ A8 z2 G
  11. #define GPIO_MODER_MODER1                    ((uint32_t)0x0000000C)
    4 I, r/ K8 H% J' s* K7 k, ?, H/ E4 ^
  12. #define GPIO_MODER_MODER1_0                  ((uint32_t)0x00000004)) s4 u; Z1 C; o- c5 m
  13. #define GPIO_MODER_MODER1_1                  ((uint32_t)0x00000008)
    : x- p- N5 Y# t; U
  14. : F1 |% s/ i- ^1 A! [3 l* n0 Z
  15. #define GPIO_MODER_MODER2                    ((uint32_t)0x00000030)$ Q1 h" l! ~- g% ~. s
  16. #define GPIO_MODER_MODER2_0                  ((uint32_t)0x00000010)) F* a  Y2 d% c9 m# z* M6 W
  17. #define GPIO_MODER_MODER2_1                  ((uint32_t)0x00000020)
    9 Z6 z" y4 U8 m2 K' ^5 ?' H
  18. % D( z+ s8 [! |* L# D' M: C8 r% w3 _
  19. #define GPIO_MODER_MODER3                    ((uint32_t)0x000000C0)
    ; P8 M( x4 k0 u" E5 j* b. o
  20. #define GPIO_MODER_MODER3_0                  ((uint32_t)0x00000040)
    1 a! p6 w, e! p. Y: |/ D4 z
  21. #define GPIO_MODER_MODER3_1                  ((uint32_t)0x00000080)4 W. X& i6 c9 |( I
  22. * e: E! \/ H3 C& W& f1 M+ J5 h
  23. #define GPIO_MODER_MODER4                    ((uint32_t)0x00000300)
    ) t( E1 V3 U8 t
  24. #define GPIO_MODER_MODER4_0                  ((uint32_t)0x00000100)9 z5 G. {9 v1 n- N
  25. #define GPIO_MODER_MODER4_1                  ((uint32_t)0x00000200)
    8 r5 F8 G2 L. y  y  E; v( a

  26. % W# ^+ [6 Q  x+ m, q7 e
  27. #define GPIO_MODER_MODER5                    ((uint32_t)0x00000C00)
    $ l) y. W) t; [  A5 g
  28. #define GPIO_MODER_MODER5_0                  ((uint32_t)0x00000400)
    # }: m0 E' D! w9 B+ K5 S
  29. #define GPIO_MODER_MODER5_1                  ((uint32_t)0x00000800)2 j9 I/ g# Z, d$ h& \: _. [

  30. ! y: J0 v- j( h1 [  w! Y. s7 D
  31. #define GPIO_MODER_MODER6                    ((uint32_t)0x00003000)
    * \7 g/ A, k$ e% j! @- D
  32. #define GPIO_MODER_MODER6_0                  ((uint32_t)0x00001000)3 B2 ?8 o5 y$ |* [
  33. #define GPIO_MODER_MODER6_1                  ((uint32_t)0x00002000)
    - z, a1 w- b$ U3 V3 U: q
  34. ; V4 G- |; H: |
  35. #define GPIO_MODER_MODER7                    ((uint32_t)0x0000C000): P2 X9 h- Q. q- D8 Q4 v$ k
  36. #define GPIO_MODER_MODER7_0                  ((uint32_t)0x00004000)) Y. n$ @' l- T- a3 p
  37. #define GPIO_MODER_MODER7_1                  ((uint32_t)0x00008000)+ \. o; g; Y- A2 p
  38. ) u2 m: p% v; W7 _% b  o
  39. #define GPIO_MODER_MODER8                    ((uint32_t)0x00030000)+ [% P  s/ Z3 K
  40. #define GPIO_MODER_MODER8_0                  ((uint32_t)0x00010000)
    - K$ Z. Z* a- S0 B/ F
  41. #define GPIO_MODER_MODER8_1                  ((uint32_t)0x00020000). E1 G. R' w/ T& W% W* _! W
  42. * a! a! ?8 V# p! T5 C: W% ?- c
  43. #define GPIO_MODER_MODER9                    ((uint32_t)0x000C0000)
      ?2 p  o# F  X8 \1 P2 `7 G
  44. #define GPIO_MODER_MODER9_0                  ((uint32_t)0x00040000)
    ( D  [9 o: V( z7 ~2 w5 ]
  45. #define GPIO_MODER_MODER9_1                  ((uint32_t)0x00080000)8 ~1 T) l- k% x. [: n: K! @
  46. ! N. m' ?" a: D* i# E  q# Q. I
  47. #define GPIO_MODER_MODER10                   ((uint32_t)0x00300000)6 z3 @" S. j, b" v
  48. #define GPIO_MODER_MODER10_0                 ((uint32_t)0x00100000)
    - i3 w/ \! b* F- F
  49. #define GPIO_MODER_MODER10_1                 ((uint32_t)0x00200000)% W' j8 N  N  O3 y) U6 U8 V
  50. 1 m: X* u3 l& D- }' r8 X: R& u
  51. #define GPIO_MODER_MODER11                   ((uint32_t)0x00C00000)2 L! p' p' U* K' ]2 k
  52. #define GPIO_MODER_MODER11_0                 ((uint32_t)0x00400000), ^$ k. K+ t0 }* n6 T, h
  53. #define GPIO_MODER_MODER11_1                 ((uint32_t)0x00800000)
    1 _) h- ~3 ]& q: L3 P

  54. ; [2 R. Y9 Y, r
  55. #define GPIO_MODER_MODER12                   ((uint32_t)0x03000000)$ r( B* e: `. j- X/ l1 Z
  56. #define GPIO_MODER_MODER12_0                 ((uint32_t)0x01000000)1 U" A% W; e! L5 j6 A' k% y% M  e
  57. #define GPIO_MODER_MODER12_1                 ((uint32_t)0x02000000)
    % l" h* I% R3 s2 L/ I& U( {
  58. 8 m0 ]  I  z( P
  59. #define GPIO_MODER_MODER13                   ((uint32_t)0x0C000000)
    " X' z( Q* W! X8 ?
  60. #define GPIO_MODER_MODER13_0                 ((uint32_t)0x04000000)& n. s2 b8 J! R& T2 }, v
  61. #define GPIO_MODER_MODER13_1                 ((uint32_t)0x08000000); _2 ?, h# E8 L9 @

  62. - D2 r1 P( s" N0 C* C8 {( c/ O9 c
  63. #define GPIO_MODER_MODER14                   ((uint32_t)0x30000000)
    * q1 Z+ n% m$ r
  64. #define GPIO_MODER_MODER14_0                 ((uint32_t)0x10000000)+ q2 ?+ U# b  T9 M* j
  65. #define GPIO_MODER_MODER14_1                 ((uint32_t)0x20000000)
    * |9 \- g% n; H1 R% c5 T1 {
  66. # V& \9 {% k5 c& n* c  P+ @
  67. #define GPIO_MODER_MODER15                   ((uint32_t)0xC0000000)
    / K$ }$ S- G1 Z6 w0 {! O( |3 X$ i
  68. #define GPIO_MODER_MODER15_0                 ((uint32_t)0x40000000)- t8 C. w% W6 Z; N# k4 @/ I2 \
  69. #define GPIO_MODER_MODER15_1                 ((uint32_t)0x80000000)
    ( ]# r6 e( i$ m

  70. - r4 n3 M) Q( d% M
  71. /******************  Bits definition for GPIO_OTYPER register  ****************/
    $ S# X+ [/ U. O
  72. #define GPIO_OTYPER_OT_0                     ((uint32_t)0x00000001)
    3 U1 V  t7 K! i* S
  73. #define GPIO_OTYPER_OT_1                     ((uint32_t)0x00000002)
      z6 n' @4 y. x
  74. #define GPIO_OTYPER_OT_2                     ((uint32_t)0x00000004)
    : \) `' ~) C7 x/ `
  75. #define GPIO_OTYPER_OT_3                     ((uint32_t)0x00000008). p7 r+ W9 P4 w  j4 \
  76. #define GPIO_OTYPER_OT_4                     ((uint32_t)0x00000010)6 x* k* r: @, w( J1 @$ ?- h" j
  77. #define GPIO_OTYPER_OT_5                     ((uint32_t)0x00000020)
    ' c9 j. l! A8 S1 R' x8 ?
  78. #define GPIO_OTYPER_OT_6                     ((uint32_t)0x00000040)
    2 K$ B4 n/ s8 y, {
  79. #define GPIO_OTYPER_OT_7                     ((uint32_t)0x00000080)
    : i) m0 ?9 U8 a4 `
  80. #define GPIO_OTYPER_OT_8                     ((uint32_t)0x00000100)/ o+ x; T% ~. r3 e+ e! `
  81. #define GPIO_OTYPER_OT_9                     ((uint32_t)0x00000200)7 s, b: d" i* ~, A8 d
  82. #define GPIO_OTYPER_OT_10                    ((uint32_t)0x00000400)
    ' l5 \0 a4 I- x- K' C
  83. #define GPIO_OTYPER_OT_11                    ((uint32_t)0x00000800)
    " K6 j: Q# Q! f
  84. #define GPIO_OTYPER_OT_12                    ((uint32_t)0x00001000)8 B; U8 b6 j; \+ L+ r! I3 X* w
  85. #define GPIO_OTYPER_OT_13                    ((uint32_t)0x00002000)
    ( ~2 a9 T+ V, J' u5 J5 S1 q
  86. #define GPIO_OTYPER_OT_14                    ((uint32_t)0x00004000)
    4 _' k6 @& O0 S, O
  87. #define GPIO_OTYPER_OT_15                    ((uint32_t)0x00008000)# b# Q' X  }  h4 |, d- O
  88. 8 o5 e7 a5 D  z# f
  89. /******************  Bits definition for GPIO_OSPEEDR register  ***************/
    8 r& I, R4 n" J+ I
  90. #define GPIO_OSPEEDER_OSPEEDR0               ((uint32_t)0x00000003)% k2 n) U* n  K& C/ Q7 b
  91. #define GPIO_OSPEEDER_OSPEEDR0_0             ((uint32_t)0x00000001)
    # m7 y4 E6 T7 E; f  V" L
  92. #define GPIO_OSPEEDER_OSPEEDR0_1             ((uint32_t)0x00000002)$ ?) z7 l( P3 o! h5 j8 ^
  93. * ^3 o5 X7 x, x
  94. #define GPIO_OSPEEDER_OSPEEDR1               ((uint32_t)0x0000000C)/ w" z6 L. r; V
  95. #define GPIO_OSPEEDER_OSPEEDR1_0             ((uint32_t)0x00000004)
    ; }0 o1 F" A8 V3 P; C& `% W- J
  96. #define GPIO_OSPEEDER_OSPEEDR1_1             ((uint32_t)0x00000008)" A. k0 b' d1 F; a1 `
  97. 6 T8 m) M5 k2 y7 z- v- J8 D
  98. #define GPIO_OSPEEDER_OSPEEDR2               ((uint32_t)0x00000030)
    , c6 U) u* ?! W2 R% V5 s
  99. #define GPIO_OSPEEDER_OSPEEDR2_0             ((uint32_t)0x00000010)
    : B! U: M' T8 p8 E/ H: Z# |
  100. #define GPIO_OSPEEDER_OSPEEDR2_1             ((uint32_t)0x00000020)4 h+ S2 R+ N5 c" v4 u8 m3 L. [
  101. " t1 q! q, Z6 H& P
  102. #define GPIO_OSPEEDER_OSPEEDR3               ((uint32_t)0x000000C0)
    " z, e3 F0 M, v4 k- @+ L
  103. #define GPIO_OSPEEDER_OSPEEDR3_0             ((uint32_t)0x00000040)+ S/ N0 [4 f4 p2 E3 F
  104. #define GPIO_OSPEEDER_OSPEEDR3_1             ((uint32_t)0x00000080)' \' H" z) g, J; J7 ?' ~) G
  105. 9 @5 a  J# k# d5 u2 k0 o% B
  106. #define GPIO_OSPEEDER_OSPEEDR4               ((uint32_t)0x00000300): B( I5 ~5 f3 d/ N! s$ h9 W
  107. #define GPIO_OSPEEDER_OSPEEDR4_0             ((uint32_t)0x00000100): ?7 T$ n5 Q" }+ o
  108. #define GPIO_OSPEEDER_OSPEEDR4_1             ((uint32_t)0x00000200)
    # C! t* j# e: }! L& V3 L

  109. ' F3 H: i# ~3 y+ V
  110. #define GPIO_OSPEEDER_OSPEEDR5               ((uint32_t)0x00000C00)
    9 U& H! B4 H) n4 e+ |
  111. #define GPIO_OSPEEDER_OSPEEDR5_0             ((uint32_t)0x00000400)
    5 c" h8 J8 X" w& T9 |4 ]
  112. #define GPIO_OSPEEDER_OSPEEDR5_1             ((uint32_t)0x00000800)
    3 I: O& k! M# y1 c) j

  113. 8 ^* T' f3 J# E( }, l
  114. #define GPIO_OSPEEDER_OSPEEDR6               ((uint32_t)0x00003000)
    9 x5 w8 `8 H+ Z, U% F
  115. #define GPIO_OSPEEDER_OSPEEDR6_0             ((uint32_t)0x00001000)6 t" I0 `, @6 b8 F/ e, c5 ~
  116. #define GPIO_OSPEEDER_OSPEEDR6_1             ((uint32_t)0x00002000)) f( \1 E. U) U4 \+ L
  117. $ s7 e; o) G3 A! j( L! F! W0 \) O
  118. #define GPIO_OSPEEDER_OSPEEDR7               ((uint32_t)0x0000C000)
    1 S9 @2 g' J, I6 m" j% ~2 i: ?
  119. #define GPIO_OSPEEDER_OSPEEDR7_0             ((uint32_t)0x00004000)# G6 s+ W8 o1 Q/ _% O9 y2 S# v3 ^
  120. #define GPIO_OSPEEDER_OSPEEDR7_1             ((uint32_t)0x00008000)0 m4 `5 D9 m/ w$ G( S

  121. $ V' t4 Y2 s7 q! u  f5 `
  122. #define GPIO_OSPEEDER_OSPEEDR8               ((uint32_t)0x00030000)
    8 u2 v3 z) K3 c! m# ~0 d
  123. #define GPIO_OSPEEDER_OSPEEDR8_0             ((uint32_t)0x00010000)1 P; V5 ~; Z) I$ _4 }( N' L
  124. #define GPIO_OSPEEDER_OSPEEDR8_1             ((uint32_t)0x00020000)
    5 M, C3 g* N: z  _& K5 v; Z
  125. / d1 U, G  F& g6 X8 v. ?. l
  126. #define GPIO_OSPEEDER_OSPEEDR9               ((uint32_t)0x000C0000)
    7 A: k  I, n( }) ?: p9 @; @
  127. #define GPIO_OSPEEDER_OSPEEDR9_0             ((uint32_t)0x00040000)
    1 a; x' g5 ~1 p) [# l9 i9 q
  128. #define GPIO_OSPEEDER_OSPEEDR9_1             ((uint32_t)0x00080000)
    # d/ g- {  d; O2 f; u( f5 V+ x
  129. ; A, R- k3 P4 Z4 h/ h
  130. #define GPIO_OSPEEDER_OSPEEDR10              ((uint32_t)0x00300000)- Q; t+ ?, p; n: s' z) ?+ P
  131. #define GPIO_OSPEEDER_OSPEEDR10_0            ((uint32_t)0x00100000)9 Z" u$ L; n1 b3 w3 L
  132. #define GPIO_OSPEEDER_OSPEEDR10_1            ((uint32_t)0x00200000)/ P4 [( C: k( p  _0 n6 p5 @

  133. + }$ G  ]# K+ U0 s8 @
  134. #define GPIO_OSPEEDER_OSPEEDR11              ((uint32_t)0x00C00000)
    7 d; F8 V9 p2 M/ [% L
  135. #define GPIO_OSPEEDER_OSPEEDR11_0            ((uint32_t)0x00400000)9 h3 N; ]# N5 i+ ^( |9 O2 }
  136. #define GPIO_OSPEEDER_OSPEEDR11_1            ((uint32_t)0x00800000)0 u( K# W1 ]/ e. [9 h
  137. ; c9 {* X$ K% R- u
  138. #define GPIO_OSPEEDER_OSPEEDR12              ((uint32_t)0x03000000)
    8 D% _3 x2 k9 G7 h; K
  139. #define GPIO_OSPEEDER_OSPEEDR12_0            ((uint32_t)0x01000000)* V. i" }- ~' T$ Z8 c2 b
  140. #define GPIO_OSPEEDER_OSPEEDR12_1            ((uint32_t)0x02000000)5 D. ~& G, x- t! P6 l

  141. 5 J; c) z1 S# c
  142. #define GPIO_OSPEEDER_OSPEEDR13              ((uint32_t)0x0C000000)
    - F5 a0 X) K/ m# {) X) n/ Z" j
  143. #define GPIO_OSPEEDER_OSPEEDR13_0            ((uint32_t)0x04000000)
    # \; q  e0 \& e! o6 S
  144. #define GPIO_OSPEEDER_OSPEEDR13_1            ((uint32_t)0x08000000)
    3 @7 Y4 L2 t; o- c3 r" \7 S

  145. ' l1 [/ ~+ a6 R" ~" l
  146. #define GPIO_OSPEEDER_OSPEEDR14              ((uint32_t)0x30000000)
    ! s$ o; P( D1 c
  147. #define GPIO_OSPEEDER_OSPEEDR14_0            ((uint32_t)0x10000000)* N/ v. [! S  C% i% x
  148. #define GPIO_OSPEEDER_OSPEEDR14_1            ((uint32_t)0x20000000)7 u% M0 V1 C) w
  149. , Q" ]- [* ^4 n4 f
  150. #define GPIO_OSPEEDER_OSPEEDR15              ((uint32_t)0xC0000000)
    & q  U! p' t( F. E# o
  151. #define GPIO_OSPEEDER_OSPEEDR15_0            ((uint32_t)0x40000000)
    2 N+ ?8 M" E5 e+ S
  152. #define GPIO_OSPEEDER_OSPEEDR15_1            ((uint32_t)0x80000000)& K5 z0 _' B' ?

  153. 5 q' j1 ~! c6 t9 j
  154. /******************  Bits definition for GPIO_PUPDR register  *****************/- Z  Q/ r" z: _
  155. #define GPIO_PUPDR_PUPDR0                    ((uint32_t)0x00000003)0 J  G% x: H3 a/ H% i
  156. #define GPIO_PUPDR_PUPDR0_0                  ((uint32_t)0x00000001)
    , e8 e6 H1 E$ U4 M" r- e
  157. #define GPIO_PUPDR_PUPDR0_1                  ((uint32_t)0x00000002)7 K! n4 \8 `* B1 x- X5 L

  158. 9 \0 J) u( ~8 m* \$ N
  159. #define GPIO_PUPDR_PUPDR1                    ((uint32_t)0x0000000C)) W8 U* b: j( k: n# k9 n% @5 e
  160. #define GPIO_PUPDR_PUPDR1_0                  ((uint32_t)0x00000004)
    9 I5 B& T* J3 W
  161. #define GPIO_PUPDR_PUPDR1_1                  ((uint32_t)0x00000008)9 x3 M( c$ C/ \! M1 c+ z4 l
  162. 8 z, K  F7 `! y7 }
  163. #define GPIO_PUPDR_PUPDR2                    ((uint32_t)0x00000030)
    1 q# k& Z: R, b& s3 n9 f4 b
  164. #define GPIO_PUPDR_PUPDR2_0                  ((uint32_t)0x00000010)
    2 @* R' e$ r* y* M. C. l
  165. #define GPIO_PUPDR_PUPDR2_1                  ((uint32_t)0x00000020)# ]/ B; J3 H+ z3 W

  166. " B7 }- g5 K2 ?5 c& u  C6 }
  167. #define GPIO_PUPDR_PUPDR3                    ((uint32_t)0x000000C0)/ l; l' N( e/ ^% D8 `
  168. #define GPIO_PUPDR_PUPDR3_0                  ((uint32_t)0x00000040)
    % [: A" f0 `9 T7 G
  169. #define GPIO_PUPDR_PUPDR3_1                  ((uint32_t)0x00000080)- P  `5 Z; I( s# G: D
  170. - q2 j2 x7 T3 |
  171. #define GPIO_PUPDR_PUPDR4                    ((uint32_t)0x00000300)
    % r! w. y+ {- q9 g( w
  172. #define GPIO_PUPDR_PUPDR4_0                  ((uint32_t)0x00000100)4 B: M! g% P9 c  @6 a
  173. #define GPIO_PUPDR_PUPDR4_1                  ((uint32_t)0x00000200)/ m# z9 D( W* ]8 B

  174. ; y* Y% K* Q$ q4 f! d
  175. #define GPIO_PUPDR_PUPDR5                    ((uint32_t)0x00000C00)
      K6 w, ^1 J' ]4 H
  176. #define GPIO_PUPDR_PUPDR5_0                  ((uint32_t)0x00000400)2 {" H9 G8 F! E$ Y* }
  177. #define GPIO_PUPDR_PUPDR5_1                  ((uint32_t)0x00000800)
    7 t6 f/ r7 x+ X$ x' b& V9 V7 i
  178. 3 q8 X& O! t1 t' k. `
  179. #define GPIO_PUPDR_PUPDR6                    ((uint32_t)0x00003000)% L& V. [! Y% K2 p
  180. #define GPIO_PUPDR_PUPDR6_0                  ((uint32_t)0x00001000)6 C7 s0 Y  |" y/ w
  181. #define GPIO_PUPDR_PUPDR6_1                  ((uint32_t)0x00002000)
    , ~# n5 H7 F% R
  182. 4 v$ V, T# L9 g7 b" F9 Q# m
  183. #define GPIO_PUPDR_PUPDR7                    ((uint32_t)0x0000C000)$ e8 w1 b! t  x" i9 E( K
  184. #define GPIO_PUPDR_PUPDR7_0                  ((uint32_t)0x00004000)
    7 a3 I2 a, }6 ^0 x
  185. #define GPIO_PUPDR_PUPDR7_1                  ((uint32_t)0x00008000)
    , S+ p/ k3 W; L% ~

  186. 1 T7 N9 _5 S  N' _, Z
  187. #define GPIO_PUPDR_PUPDR8                    ((uint32_t)0x00030000)
    2 A1 q: ?* [: p) N
  188. #define GPIO_PUPDR_PUPDR8_0                  ((uint32_t)0x00010000)
    4 P. F, ?" V! i8 D
  189. #define GPIO_PUPDR_PUPDR8_1                  ((uint32_t)0x00020000)
    ' y: j$ u: U0 T" ~

  190. % F; Y+ Q/ ~; H$ H# W
  191. #define GPIO_PUPDR_PUPDR9                    ((uint32_t)0x000C0000)
      y! ]2 [' I4 [9 f: }4 M
  192. #define GPIO_PUPDR_PUPDR9_0                  ((uint32_t)0x00040000)% K8 X1 T- T' C
  193. #define GPIO_PUPDR_PUPDR9_1                  ((uint32_t)0x00080000)
    , ^. R* I; L' T, H. T2 t. H
  194. " d) \* V' V8 S/ p; E
  195. #define GPIO_PUPDR_PUPDR10                   ((uint32_t)0x00300000)
    ) k  R: K  Z- `, L7 \0 U: v1 b
  196. #define GPIO_PUPDR_PUPDR10_0                 ((uint32_t)0x00100000)
    # s& J, D1 K" p
  197. #define GPIO_PUPDR_PUPDR10_1                 ((uint32_t)0x00200000)
    % q% k: l' X# k& h/ v- ]

  198. ! l7 w& J- ^. Q) q+ N# o
  199. #define GPIO_PUPDR_PUPDR11                   ((uint32_t)0x00C00000)
    4 |$ ]/ R' R3 e0 ]! _
  200. #define GPIO_PUPDR_PUPDR11_0                 ((uint32_t)0x00400000). [# W4 f2 D/ w8 X
  201. #define GPIO_PUPDR_PUPDR11_1                 ((uint32_t)0x00800000)
    & l  O; z; a3 i- F* \2 C3 `
  202. ' V3 `7 u) I5 a4 e7 Y; B6 e
  203. #define GPIO_PUPDR_PUPDR12                   ((uint32_t)0x03000000)8 c# O! }8 q6 v+ w/ S: V' X* f
  204. #define GPIO_PUPDR_PUPDR12_0                 ((uint32_t)0x01000000)+ W, q$ W% |1 U+ R! S; F
  205. #define GPIO_PUPDR_PUPDR12_1                 ((uint32_t)0x02000000)
    8 R3 x& |" i5 M  P

  206. ; R& @7 \0 |9 O2 {
  207. #define GPIO_PUPDR_PUPDR13                   ((uint32_t)0x0C000000)
    & U4 h- x5 \" z0 \9 K4 q
  208. #define GPIO_PUPDR_PUPDR13_0                 ((uint32_t)0x04000000)
    8 N' ~3 N; `% K2 @( _) ^
  209. #define GPIO_PUPDR_PUPDR13_1                 ((uint32_t)0x08000000)- ~) n( s& F9 K4 J" V) I6 x

  210. 2 Y7 z8 K- M7 V$ b& B% g- x
  211. #define GPIO_PUPDR_PUPDR14                   ((uint32_t)0x30000000)
    $ x! M4 R6 ?9 d7 E
  212. #define GPIO_PUPDR_PUPDR14_0                 ((uint32_t)0x10000000). f1 M: o7 \, o" |1 s
  213. #define GPIO_PUPDR_PUPDR14_1                 ((uint32_t)0x20000000)
    8 r1 {; S2 X! B0 M1 y
  214. 8 }. h8 I* z' z3 G! X4 H6 @
  215. #define GPIO_PUPDR_PUPDR15                   ((uint32_t)0xC0000000)  }6 Y9 v0 E* c5 Z5 P' r  f2 Q1 u
  216. #define GPIO_PUPDR_PUPDR15_0                 ((uint32_t)0x40000000)
    1 q$ s# ?, Q/ [/ h6 T2 O$ F% x5 S
  217. #define GPIO_PUPDR_PUPDR15_1                 ((uint32_t)0x80000000)
    * Z! s1 j3 T$ M

  218. 5 t* u. q9 p/ U4 S8 |( B8 w
  219. /******************  Bits definition for GPIO_IDR register  *******************/
    / o6 t* K1 U& H
  220. #define GPIO_IDR_IDR_0                       ((uint32_t)0x00000001)
    % o6 I9 A' i  L! W" W/ v# P
  221. #define GPIO_IDR_IDR_1                       ((uint32_t)0x00000002)4 N3 s, Q/ r  a- Q3 k" K
  222. #define GPIO_IDR_IDR_2                       ((uint32_t)0x00000004)" b2 E# H* r* J/ d& O
  223. #define GPIO_IDR_IDR_3                       ((uint32_t)0x00000008)
    1 t0 I1 Y7 X6 g
  224. #define GPIO_IDR_IDR_4                       ((uint32_t)0x00000010)
    1 u$ \) g6 N$ w) S
  225. #define GPIO_IDR_IDR_5                       ((uint32_t)0x00000020)
    # K. a1 x" _# j' P8 H
  226. #define GPIO_IDR_IDR_6                       ((uint32_t)0x00000040)) x- d2 u1 _, t2 p) w- g' R  R
  227. #define GPIO_IDR_IDR_7                       ((uint32_t)0x00000080)3 k3 [$ h9 d, f5 ]0 k4 I9 p
  228. #define GPIO_IDR_IDR_8                       ((uint32_t)0x00000100)8 i3 a  E+ {( b4 h! \( b2 X! H. Z
  229. #define GPIO_IDR_IDR_9                       ((uint32_t)0x00000200)
    4 B4 k" \" ?! B9 o7 v" O
  230. #define GPIO_IDR_IDR_10                      ((uint32_t)0x00000400)# b1 H5 L) d* @% q2 q: P  c' W
  231. #define GPIO_IDR_IDR_11                      ((uint32_t)0x00000800). O: b6 D) _1 J7 I3 t1 c
  232. #define GPIO_IDR_IDR_12                      ((uint32_t)0x00001000)2 W- F3 W* W5 d4 Z5 ]4 r( u
  233. #define GPIO_IDR_IDR_13                      ((uint32_t)0x00002000)0 j; v/ C- C7 i: \0 A
  234. #define GPIO_IDR_IDR_14                      ((uint32_t)0x00004000)
    ! ]$ n9 J7 k2 p0 h
  235. #define GPIO_IDR_IDR_15                      ((uint32_t)0x00008000)
    $ \6 P  K" c6 s. D. j6 d" t5 e5 m" ]
  236. /* Old GPIO_IDR register bits definition, maintained for legacy purpose */
    " H$ ]$ I+ F7 w  O8 u% p- X2 N
  237. #define GPIO_OTYPER_IDR_0                    GPIO_IDR_IDR_0; o0 s2 I5 D. o# c
  238. #define GPIO_OTYPER_IDR_1                    GPIO_IDR_IDR_18 r9 H: R: `& O! M: f$ g
  239. #define GPIO_OTYPER_IDR_2                    GPIO_IDR_IDR_2
    * m- o# @" E. u4 `
  240. #define GPIO_OTYPER_IDR_3                    GPIO_IDR_IDR_36 `4 M9 T: q/ a
  241. #define GPIO_OTYPER_IDR_4                    GPIO_IDR_IDR_49 D( T( A& W. ~$ `' o$ `4 s
  242. #define GPIO_OTYPER_IDR_5                    GPIO_IDR_IDR_5% H2 j. w2 S9 q) |, r
  243. #define GPIO_OTYPER_IDR_6                    GPIO_IDR_IDR_6  Q, _6 q$ l& l1 M
  244. #define GPIO_OTYPER_IDR_7                    GPIO_IDR_IDR_7
    % b4 V" \: J9 p0 e* E; }8 e3 V
  245. #define GPIO_OTYPER_IDR_8                    GPIO_IDR_IDR_85 s2 g/ p2 o0 R; j% j# c9 L
  246. #define GPIO_OTYPER_IDR_9                    GPIO_IDR_IDR_93 K) ?& \$ j4 _
  247. #define GPIO_OTYPER_IDR_10                   GPIO_IDR_IDR_10
      L+ o" X6 K5 c# m0 y; @0 Y3 v7 A
  248. #define GPIO_OTYPER_IDR_11                   GPIO_IDR_IDR_118 H- Y( J& S- I6 W
  249. #define GPIO_OTYPER_IDR_12                   GPIO_IDR_IDR_125 w6 |0 r. K# k' ~( u+ y
  250. #define GPIO_OTYPER_IDR_13                   GPIO_IDR_IDR_13
    & G6 K- C, R9 ]$ ^% H3 U5 i
  251. #define GPIO_OTYPER_IDR_14                   GPIO_IDR_IDR_14
    ( i8 o/ R, U7 o% Q- ?2 @6 X9 I
  252. #define GPIO_OTYPER_IDR_15                   GPIO_IDR_IDR_15& q5 Z8 C8 C+ j* y; R

  253. / `  x7 T7 u+ B* Q6 X
  254. /******************  Bits definition for GPIO_ODR register  *******************/+ h" g: o" l: {7 n
  255. #define GPIO_ODR_ODR_0                       ((uint32_t)0x00000001)
    9 m. b1 u" j! l2 X4 i6 r- |1 V' [* m
  256. #define GPIO_ODR_ODR_1                       ((uint32_t)0x00000002)% d+ l3 N5 D9 ^3 Q8 p. U1 @
  257. #define GPIO_ODR_ODR_2                       ((uint32_t)0x00000004)
    3 `# M5 p( N; W$ [' u8 i
  258. #define GPIO_ODR_ODR_3                       ((uint32_t)0x00000008)0 [# d5 K) n% b! ^5 a
  259. #define GPIO_ODR_ODR_4                       ((uint32_t)0x00000010)
    5 g, ~9 b4 k7 z/ M$ p/ B
  260. #define GPIO_ODR_ODR_5                       ((uint32_t)0x00000020)
    # r. W; r3 ]; d7 U, d1 G9 e
  261. #define GPIO_ODR_ODR_6                       ((uint32_t)0x00000040)
    5 j) w, |8 X) C7 `6 J- h
  262. #define GPIO_ODR_ODR_7                       ((uint32_t)0x00000080)  e3 C( W9 E$ ]0 j. \. D5 ]. A- }
  263. #define GPIO_ODR_ODR_8                       ((uint32_t)0x00000100)
    3 q! \% y1 s# P+ _
  264. #define GPIO_ODR_ODR_9                       ((uint32_t)0x00000200)
      v( z  t6 U5 m; f! z8 J4 B" [
  265. #define GPIO_ODR_ODR_10                      ((uint32_t)0x00000400)$ @0 V* H  ^  b1 o0 c
  266. #define GPIO_ODR_ODR_11                      ((uint32_t)0x00000800)
    $ B' U. t( C, n
  267. #define GPIO_ODR_ODR_12                      ((uint32_t)0x00001000)
    # s# @) t3 Z* I- ^9 i; i' [% f8 E
  268. #define GPIO_ODR_ODR_13                      ((uint32_t)0x00002000)
    % p4 H/ Q9 ^( Q6 _0 q' H+ N
  269. #define GPIO_ODR_ODR_14                      ((uint32_t)0x00004000)
    , L) c) w& i. `% Q: C( W- i
  270. #define GPIO_ODR_ODR_15                      ((uint32_t)0x00008000)/ x2 T1 G% Y$ M
  271. /* Old GPIO_ODR register bits definition, maintained for legacy purpose */
    / _% q) M) M/ z; |$ U( d6 C
  272. #define GPIO_OTYPER_ODR_0                    GPIO_ODR_ODR_0
    8 J# X" B1 @- s; v; b6 W4 }
  273. #define GPIO_OTYPER_ODR_1                    GPIO_ODR_ODR_1
    - L8 N) F' p% G' S3 ~/ r4 ^% ~
  274. #define GPIO_OTYPER_ODR_2                    GPIO_ODR_ODR_2
    % z+ j4 X  s7 G4 I& |* a8 G
  275. #define GPIO_OTYPER_ODR_3                    GPIO_ODR_ODR_31 o8 o- D: S7 a9 m+ q. v) K& s% ]
  276. #define GPIO_OTYPER_ODR_4                    GPIO_ODR_ODR_47 u8 q7 ~- G% g; w
  277. #define GPIO_OTYPER_ODR_5                    GPIO_ODR_ODR_50 H2 m8 l& F) s* W, d2 V7 p
  278. #define GPIO_OTYPER_ODR_6                    GPIO_ODR_ODR_6
    . p! M/ |* s- K- F5 @
  279. #define GPIO_OTYPER_ODR_7                    GPIO_ODR_ODR_7
      ~- T8 H- ~/ r7 o* e4 R& o* `$ l
  280. #define GPIO_OTYPER_ODR_8                    GPIO_ODR_ODR_8
      E' i, H& B# F2 ^: k; x
  281. #define GPIO_OTYPER_ODR_9                    GPIO_ODR_ODR_9
    0 \) {0 m. _$ x/ x
  282. #define GPIO_OTYPER_ODR_10                   GPIO_ODR_ODR_10% E4 |% Q1 M5 S! B' |: s: ~2 g, s/ G
  283. #define GPIO_OTYPER_ODR_11                   GPIO_ODR_ODR_11
    & s2 U# f/ o: l0 {/ r" `& D
  284. #define GPIO_OTYPER_ODR_12                   GPIO_ODR_ODR_12
      W5 U! p/ K$ E# W% D
  285. #define GPIO_OTYPER_ODR_13                   GPIO_ODR_ODR_13( V5 i9 H& c- s  k
  286. #define GPIO_OTYPER_ODR_14                   GPIO_ODR_ODR_14
    $ T5 T/ g: f6 t% d/ M
  287. #define GPIO_OTYPER_ODR_15                   GPIO_ODR_ODR_15
    8 B1 D1 q; n8 q" }
  288. 6 r4 D5 F; t- ^2 Q
  289. /******************  Bits definition for GPIO_BSRR register  ******************/" E; U+ U- I& c+ |, B' \# \. ?
  290. #define GPIO_BSRR_BS_0                       ((uint32_t)0x00000001)
    + P8 u. ]; K% ^
  291. #define GPIO_BSRR_BS_1                       ((uint32_t)0x00000002)6 U# V6 J8 h" T, ~
  292. #define GPIO_BSRR_BS_2                       ((uint32_t)0x00000004)
    ' K# u& n2 A  Y6 x3 L
  293. #define GPIO_BSRR_BS_3                       ((uint32_t)0x00000008)$ g, K) u% n# X- l9 P1 n% w6 J, [
  294. #define GPIO_BSRR_BS_4                       ((uint32_t)0x00000010)
    $ Y: z" |$ K2 v0 p2 o4 a* A5 X
  295. #define GPIO_BSRR_BS_5                       ((uint32_t)0x00000020)
    % C+ y$ P7 d. i. j. t: H
  296. #define GPIO_BSRR_BS_6                       ((uint32_t)0x00000040)7 A! z1 R! G6 d5 N; J# F& c7 G2 [( x) }
  297. #define GPIO_BSRR_BS_7                       ((uint32_t)0x00000080)* y3 W0 w7 `5 v' n0 s
  298. #define GPIO_BSRR_BS_8                       ((uint32_t)0x00000100)
    1 U9 b+ T- A8 Y6 T( F/ B2 q
  299. #define GPIO_BSRR_BS_9                       ((uint32_t)0x00000200): x& i  D; \; t' ]  ]
  300. #define GPIO_BSRR_BS_10                      ((uint32_t)0x00000400)
    # w8 ^: Z8 s$ z& W& A" k2 {2 r
  301. #define GPIO_BSRR_BS_11                      ((uint32_t)0x00000800)% b0 f/ J5 k7 ~! }% h- S; b6 j
  302. #define GPIO_BSRR_BS_12                      ((uint32_t)0x00001000)
    / l) L( B8 _$ d/ K3 H0 r" h. Y
  303. #define GPIO_BSRR_BS_13                      ((uint32_t)0x00002000)& {2 x& {# [  K& ^6 [3 Z( H
  304. #define GPIO_BSRR_BS_14                      ((uint32_t)0x00004000)
    5 u  Y) u- m" _  D+ B
  305. #define GPIO_BSRR_BS_15                      ((uint32_t)0x00008000)
    ' d  q9 d" R. F) {6 o1 W& E# c
  306. #define GPIO_BSRR_BR_0                       ((uint32_t)0x00010000)3 E$ i. ^# i, _- @( A
  307. #define GPIO_BSRR_BR_1                       ((uint32_t)0x00020000)8 t" `" l8 R3 f7 q( O
  308. #define GPIO_BSRR_BR_2                       ((uint32_t)0x00040000)( z$ x9 R# z1 q6 t! F
  309. #define GPIO_BSRR_BR_3                       ((uint32_t)0x00080000)
    0 ]; Q) `) i) u; w8 G3 `6 u9 A
  310. #define GPIO_BSRR_BR_4                       ((uint32_t)0x00100000)
    $ E, N, I1 W( w2 m# G
  311. #define GPIO_BSRR_BR_5                       ((uint32_t)0x00200000): h& J. y% ]- `
  312. #define GPIO_BSRR_BR_6                       ((uint32_t)0x00400000)
    7 f+ q9 p2 Y9 M* [! u
  313. #define GPIO_BSRR_BR_7                       ((uint32_t)0x00800000)4 M/ `+ T5 U! h" j
  314. #define GPIO_BSRR_BR_8                       ((uint32_t)0x01000000)/ P; h. k# B# |$ F, K( W2 [
  315. #define GPIO_BSRR_BR_9                       ((uint32_t)0x02000000)9 g) o' W  d+ k8 M, s
  316. #define GPIO_BSRR_BR_10                      ((uint32_t)0x04000000)
    5 }( L6 n# H: G# w( x( v
  317. #define GPIO_BSRR_BR_11                      ((uint32_t)0x08000000)
    , c3 _% s& w8 r: ?) n3 D+ J
  318. #define GPIO_BSRR_BR_12                      ((uint32_t)0x10000000)
    ; C& V' i! X3 c0 N, y
  319. #define GPIO_BSRR_BR_13                      ((uint32_t)0x20000000)* B4 X5 q' |% L! A
  320. #define GPIO_BSRR_BR_14                      ((uint32_t)0x40000000)
    ! ^; E9 x0 M& W3 I$ s; l% z- i
  321. #define GPIO_BSRR_BR_15                      ((uint32_t)0x80000000)
复制代码
* u7 `0 p" e: {! W9 K" _9 a* N
GPIO全部挂载AHB1总线上

2 G) c# [! [' i) t6 H5 x3 e) A  o+ A. [

  1. " D6 M5 @2 o& Z: }
  2. /********************  Bit definition for RCC_AHB1ENR register  ***************/
    3 B8 K* g2 c) e0 o* T+ R
  3. #define  RCC_AHB1ENR_GPIOAEN                 ((uint32_t)0x00000001)
    $ n& C8 B8 w6 e4 t/ D. J! B
  4. #define  RCC_AHB1ENR_GPIOBEN                 ((uint32_t)0x00000002)
    $ r0 @3 @9 A  A7 m' o
  5. #define  RCC_AHB1ENR_GPIOCEN                 ((uint32_t)0x00000004)
    % {! X- P( M" H7 `
  6. #define  RCC_AHB1ENR_GPIODEN                 ((uint32_t)0x00000008)7 h, I6 I4 ^/ c2 Z
  7. #define  RCC_AHB1ENR_GPIOEEN                 ((uint32_t)0x00000010)
    5 ~, T; P% k2 w3 b' z/ n
  8. #define  RCC_AHB1ENR_GPIOFEN                 ((uint32_t)0x00000020)0 Z9 J' }4 N7 A5 C+ |
  9. #define  RCC_AHB1ENR_GPIOGEN                 ((uint32_t)0x00000040)' U5 p* G! @. b8 ^9 G4 V  M- `$ O
  10. #define  RCC_AHB1ENR_GPIOHEN                 ((uint32_t)0x00000080)0 e) k4 }7 g" z3 @/ K$ Y
  11. #define  RCC_AHB1ENR_GPIOIEN                 ((uint32_t)0x00000100)
    1 C# C& t9 a/ D  J
  12. #define  RCC_AHB1ENR_GPIOJEN                 ((uint32_t)0x00000200)
    * V  {4 J# F+ p" {, P. [
  13. #define  RCC_AHB1ENR_GPIOKEN                 ((uint32_t)0x00000400)
复制代码
' w% J* v1 [# K1 k4 f
赞 收藏 评论0 发布时间:2022-4-3 15:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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