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

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

[复制链接]
STMCU小助手 发布时间:2022-6-11 21:38
01. GPIO固件库概述
0 @+ |$ R, l, p; tstm32f4xx_gpio.h GPIO相关函数和类型的声明
, `( R; g, G2 D) d7 W4 {
& U* U8 e+ V+ {* P- `1 \stm32f4xx_gpio.c GPIO相关函数具体实现。* p) k5 W' q8 U8 F( g% [

8 U' v& o; {% }& U! u' n; J02. GPIO相关类型
2 i8 \: {2 N7 ]  P+ T6 HGPIO相关的类型几乎都在stm32f4xx_gpio.h文件中。
6 p# O9 \, S4 v7 W
) _7 ]* c9 M6 ~. pGPIO的模式2 x0 P5 v" ]& q2 T
& ?  G3 U6 p# t0 i( o
  1. /**
    0 F* H0 x: t" }5 r. y% e+ @
  2.   * @brief  GPIO Configuration Mode enumeration 3 ]8 r# a% U: a
  3.   */   * c, N0 r: V  U  O+ m" e6 k
  4. typedef enum4 Q3 z+ d: h& h7 z7 H
  5. { 4 ]6 S& g" g4 e5 f
  6.   GPIO_Mode_IN   = 0x00, /*!< GPIO Input Mode */
    $ P: @- c  ]1 w! Q6 U1 D8 q8 r
  7.   GPIO_Mode_OUT  = 0x01, /*!< GPIO Output Mode */
    2 G: R" ^1 ^. D4 H' s
  8.   GPIO_Mode_AF   = 0x02, /*!< GPIO Alternate function Mode */" `/ Y( \5 E9 G# `
  9.   GPIO_Mode_AN   = 0x03  /*!< GPIO Analog Mode */9 i. S7 k5 |$ f6 S
  10. }GPIOMode_TypeDef;
    4 T7 _  ~. p! U; X! n6 F
  11. #define IS_GPIO_MODE(MODE) (((MODE) == GPIO_Mode_IN)  || ((MODE) == GPIO_Mode_OUT) || \
    . z- X7 S9 P; p9 C; @
  12.                             ((MODE) == GPIO_Mode_AF)|| ((MODE) == GPIO_Mode_AN))
复制代码

- ]! Q  S5 ]# N  |. W4 L9 U& G; MGPIO输出类型
; I1 d; s: ^4 }* q5 d1 F( ?
$ x" ~; y& k2 {# }4 g3 a+ l  Y
  1. /**
    8 x/ t8 j+ k& c3 c; E
  2.   * @brief  GPIO Output type enumeration & i- h) }4 J2 F7 W3 h" B* x( d! a
  3.   */  
    9 S: \" d, q" l
  4. typedef enum. k% c9 d2 K) Q/ @7 {
  5. { + \! d. [7 g3 J, ^+ a
  6.   GPIO_OType_PP = 0x00,
    & g# T, v% V9 A: Y( U; g2 k
  7.   GPIO_OType_OD = 0x01
    4 h4 g# x' x: `  [
  8. }GPIOOType_TypeDef;
    / c, n$ o: K! x: S! a
  9. #define IS_GPIO_OTYPE(OTYPE) (((OTYPE) == GPIO_OType_PP) || ((OTYPE) == GPIO_OType_OD))
复制代码

' n+ z8 ^. h: K* Y; l& r8 |GPIO输出速度! M8 c3 J  d& h- ?' @
2 K) }7 ?+ ^5 U, C  T* M
  1. /**
    4 ?$ c2 Y7 D( [; h2 c3 L* S: H! X
  2.   * @brief  GPIO Output Maximum frequency enumeration 4 M  Y% S- v$ J. S
  3.   */  
    8 ~6 p% p/ N+ r; v+ E0 J/ c
  4. typedef enum
    * n/ T# q4 b* |. C; a- @
  5. {
    0 F$ a" M$ L! f* Z0 Q# Y
  6.   GPIO_Low_Speed     = 0x00, /*!< Low speed    */
    + u0 {4 _% U7 O) e8 |! P' v# c+ t4 ]
  7.   GPIO_Medium_Speed  = 0x01, /*!< Medium speed */, N" K0 C+ v9 }4 ]7 L; Y+ D  p( M
  8.   GPIO_Fast_Speed    = 0x02, /*!< Fast speed   */
    % l# \% \8 g+ Y3 X% r5 x
  9.   GPIO_High_Speed    = 0x03  /*!< High speed   */
    0 \! o3 |- A! l7 o% l
  10. }GPIOSpeed_TypeDef;
    # _5 h7 r3 p' \: {5 z5 S; D. a

  11. * Y8 `9 g) U3 h4 ?& F
  12. /* Add legacy definition */
    3 h( s; o% {6 _7 ~" C2 e8 p
  13. #define  GPIO_Speed_2MHz    GPIO_Low_Speed   
    . ]7 x) ^- d" H
  14. #define  GPIO_Speed_25MHz   GPIO_Medium_Speed
    % `& C5 p2 K) C) N
  15. #define  GPIO_Speed_50MHz   GPIO_Fast_Speed + _0 k( H6 G: R# h1 w
  16. #define  GPIO_Speed_100MHz  GPIO_High_Speed  
    : m: N3 b4 h+ w1 t& _1 a
  17. $ s; H; i; a9 S% f
  18. #define IS_GPIO_SPEED(SPEED) (((SPEED) == GPIO_Low_Speed) || ((SPEED) == GPIO_Medium_Speed) || \3 ^0 @: e$ ]/ [# p/ N
  19.                               ((SPEED) == GPIO_Fast_Speed)||  ((SPEED) == GPIO_High_Speed))
复制代码

4 X/ _1 l4 y6 w& iGPIO上下拉
6 V6 g- q6 O% X9 x. o& O8 n7 ^
% R1 n1 o' J4 z0 t' o8 [
  1. /**
    ; W0 j# \. n! n- h
  2.   * @brief  GPIO Configuration PullUp PullDown enumeration 2 M' q# i1 y7 j" V' Q5 b
  3.   */ ; a. [; S9 d; Z8 v6 y2 ~4 m1 X! l$ L
  4. typedef enum. V& V( ?: @' c2 `
  5. {
    3 e) j' e: L" o& d) C  R: F* ?0 J1 F
  6.   GPIO_PuPd_NOPULL = 0x00,
    $ _5 O. T* K% p9 ~# B' L( p$ A# z
  7.   GPIO_PuPd_UP     = 0x01,
    $ d, _+ x# I0 E; e, y
  8.   GPIO_PuPd_DOWN   = 0x02$ V/ K4 a5 ^8 D
  9. }GPIOPuPd_TypeDef;
    8 ?  I' f2 y+ N  Y: C) X6 L  i- T
  10. #define IS_GPIO_PUPD(PUPD) (((PUPD) == GPIO_PuPd_NOPULL) || ((PUPD) == GPIO_PuPd_UP) || \
    0 F& B7 }) s) r7 s
  11.                             ((PUPD) == GPIO_PuPd_DOWN)). q. g0 n. J7 O* R2 y/ v+ m8 x: Q
复制代码

0 R8 ^- z) T$ B8 U- e7 dGPIO置位和复位
# a2 m/ d7 P: U* v2 `

5 d2 O9 d3 E$ j/ N8 g+ b
  1. /** : O. _0 {& j$ Z" H, R# t, l! X/ h
  2.   * @brief  GPIO Bit SET and Bit RESET enumeration 4 x. n# w7 G5 y
  3.   */ & K9 F5 f" r( g' K7 {/ r" [! t
  4. typedef enum5 b- S( P6 `$ U
  5. {
    ) {. a! q: ?! `! V7 {/ [
  6.   Bit_RESET = 0,2 P- h' M0 x% \4 e% h* C
  7.   Bit_SET
      A; h0 v: o- h. p. ?
  8. }BitAction;+ e  W* u( u% P+ I8 ?4 m
  9. #define IS_GPIO_BIT_ACTION(ACTION) (((ACTION) == Bit_RESET) || ((ACTION) == Bit_SET))
复制代码

$ Y- o. ?1 V. yGPIO初始化结构体类型声明. S' K( O6 _" q( B

" a5 e8 o, q, t0 p& }( ^' o2 z
  1. /**
    / V9 a% y: ^, B  t# B$ Q
  2.   * @brief   GPIO Init structure definition  
    4 d) N( d$ g8 [/ c+ L
  3.   */
    , P* }: s1 A1 U  ]% H5 ~4 L
  4. typedef struct
    ; ?6 h, S( H- R5 Q( A0 W7 m
  5. {
    2 Q- F0 [% G" Q( e
  6.   uint32_t GPIO_Pin;              /*!< Specifies the GPIO pins to be configured.; T, t! v8 G; d' N
  7.                                        This parameter can be any value of @ref GPIO_pins_define */
    6 q; W2 }1 n- K8 A2 P) n
  8. - b) e# D- w0 I* @2 f- F
  9.   GPIOMode_TypeDef GPIO_Mode;     /*!< Specifies the operating mode for the selected pins.. n. X( g, p" i
  10.                                        This parameter can be a value of @ref GPIOMode_TypeDef */; d" E( e0 I# E; X% i' o& k
  11. 3 d: u- P' A% [0 F& n* ?
  12.   GPIOSpeed_TypeDef GPIO_Speed;   /*!< Specifies the speed for the selected pins.
    ; ?7 P% J& K( Z1 F0 z$ c
  13.                                        This parameter can be a value of @ref GPIOSpeed_TypeDef */2 L9 L, y/ _* t  C* _1 W, t' r

  14. ' U( r7 T& b% ?+ M9 o9 t. p
  15.   GPIOOType_TypeDef GPIO_OType;   /*!< Specifies the operating output type for the selected pins.: k9 i. E) F! e( n" m+ W
  16.                                        This parameter can be a value of @ref GPIOOType_TypeDef */
    : _. Z, |9 L: m& c

  17. 0 D+ |8 x; j1 ~3 a/ W1 t4 I6 l
  18.   GPIOPuPd_TypeDef GPIO_PuPd;     /*!< Specifies the operating Pull-up/Pull down for the selected pins.
    2 d0 V5 ^  R7 `* j- R( E2 v: t
  19.                                        This parameter can be a value of @ref GPIOPuPd_TypeDef */2 J9 m& |9 @6 V0 _4 K
  20. }GPIO_InitTypeDef;
复制代码

# K7 t+ u( c1 s4 y" r! G03. GPIO相关宏

# a/ m( e3 Q5 x# {9 k# Q判断是否为合法的GPIO外设
8 y3 S; L- F9 z/ E# J9 V' I  b* s9 n- F! x- Y" l- y, Q' {
  1. #define IS_GPIO_ALL_PERIPH(PERIPH) (((PERIPH) == GPIOA) || \- X9 f/ l  k( r$ ~: t1 G
  2.                                     ((PERIPH) == GPIOB) || \
      g, o' r: ^) @$ J+ i
  3.                                     ((PERIPH) == GPIOC) || \3 |& d! u$ |5 |
  4.                                     ((PERIPH) == GPIOD) || \
      s( i/ K' [1 z" ?
  5.                                     ((PERIPH) == GPIOE) || \* Z" T! q6 F& Z
  6.                                     ((PERIPH) == GPIOF) || \
    / F: X/ n, N& [, o* d
  7.                                     ((PERIPH) == GPIOG) || \) u4 x  G  k8 Z. N( F; P: j/ s" \1 o8 I
  8.                                     ((PERIPH) == GPIOH) || \
    " L6 o$ I- g# X2 \
  9.                                     ((PERIPH) == GPIOI) || \9 w0 S9 G  Z3 Y/ i: j
  10.                                     ((PERIPH) == GPIOJ) || \5 ?, F& u9 f: X& O8 d+ r3 z) r8 X! N0 o
  11.                                     ((PERIPH) == GPIOK))
复制代码
/ e( |5 n. I% s' k; K* l# O" Q( S
GPIO合法的引脚
( J) R: j' ^7 b. W
) I: A+ h1 f/ x7 |/ H+ V
  1. /** @defgroup GPIO_pins_define
    , w+ {# ?% O. Q& o2 ~3 O' r
  2.   * @{
    9 [& V/ q7 |  R
  3.   */ 5 A: q' C8 x6 b
  4. #define GPIO_Pin_0                 ((uint16_t)0x0001)  /* Pin 0 selected */+ V* |" A% A( e9 ~& V& ?
  5. #define GPIO_Pin_1                 ((uint16_t)0x0002)  /* Pin 1 selected */
    : O1 \: x7 I7 [7 R& G3 c0 T
  6. #define GPIO_Pin_2                 ((uint16_t)0x0004)  /* Pin 2 selected */2 h% W7 {& R* N8 D0 g  {* m: R# `6 _
  7. #define GPIO_Pin_3                 ((uint16_t)0x0008)  /* Pin 3 selected */
      M4 T8 @7 ?# |& b: M
  8. #define GPIO_Pin_4                 ((uint16_t)0x0010)  /* Pin 4 selected */
    6 X/ |$ I1 U, y. U, _. ^8 t; d) e7 l. a
  9. #define GPIO_Pin_5                 ((uint16_t)0x0020)  /* Pin 5 selected */1 Z! y! O% E( \  ]- V
  10. #define GPIO_Pin_6                 ((uint16_t)0x0040)  /* Pin 6 selected */
    ; i& _7 U9 @. m0 e* X
  11. #define GPIO_Pin_7                 ((uint16_t)0x0080)  /* Pin 7 selected */
    $ [" a' z+ \9 s& F4 d; [
  12. #define GPIO_Pin_8                 ((uint16_t)0x0100)  /* Pin 8 selected */
    % B$ S* o  D  h0 x* Z4 C
  13. #define GPIO_Pin_9                 ((uint16_t)0x0200)  /* Pin 9 selected */( l: I+ q* N0 P2 O: n: H7 a
  14. #define GPIO_Pin_10                ((uint16_t)0x0400)  /* Pin 10 selected */
    : S2 F; O9 w- \
  15. #define GPIO_Pin_11                ((uint16_t)0x0800)  /* Pin 11 selected */
    2 ]( q- W- O; I4 A, L, [
  16. #define GPIO_Pin_12                ((uint16_t)0x1000)  /* Pin 12 selected */
    5 P" E$ Q& P+ ~3 N
  17. #define GPIO_Pin_13                ((uint16_t)0x2000)  /* Pin 13 selected */. B4 I( J7 k4 R, t2 Z, W
  18. #define GPIO_Pin_14                ((uint16_t)0x4000)  /* Pin 14 selected */
    8 j" y! U: R4 K/ A! U0 y
  19. #define GPIO_Pin_15                ((uint16_t)0x8000)  /* Pin 15 selected */: [% R+ E/ l% m, [' t7 u. w
  20. #define GPIO_Pin_All               ((uint16_t)0xFFFF)  /* All pins selected */
    & v$ o9 }8 r) e' z8 @. |8 |! W  _# U

  21. ; F- g, `: M  j7 q: Y, }7 w
  22. #define GPIO_PIN_MASK              ((uint32_t)0x0000FFFF) /* PIN mask for assert test */
    . D% Z; B, }+ Y5 I& ?; I. \
  23. #define IS_GPIO_PIN(PIN)           (((PIN) & GPIO_PIN_MASK ) != (uint32_t)0x00)7 S6 E/ S% y* j0 H9 b) a
  24. #define IS_GET_GPIO_PIN(PIN) (((PIN) == GPIO_Pin_0) || \- L4 K3 I( l' p  v( b3 N  k
  25.                               ((PIN) == GPIO_Pin_1) || \$ S4 ?* D  f$ V; Z) j
  26.                               ((PIN) == GPIO_Pin_2) || \
    * H# x( M7 |" S, O) [9 y  g
  27.                               ((PIN) == GPIO_Pin_3) || \4 \/ S4 W7 S8 W* M: X1 Z8 `6 ?
  28.                               ((PIN) == GPIO_Pin_4) || \
    ! z6 h0 a( Y  _
  29.                               ((PIN) == GPIO_Pin_5) || \; O4 V9 i  o" `+ B4 y! E0 m! L$ Y
  30.                               ((PIN) == GPIO_Pin_6) || \! W9 w3 _& Z$ O$ o: u
  31.                               ((PIN) == GPIO_Pin_7) || \
    8 f2 g9 q7 z) K; N2 ~# A, s
  32.                               ((PIN) == GPIO_Pin_8) || \
    ; Y1 z8 n" ~0 B5 w0 n$ m+ {
  33.                               ((PIN) == GPIO_Pin_9) || \+ `7 G) s1 U; c/ k& H4 i' @9 p
  34.                               ((PIN) == GPIO_Pin_10) || \
    : X' q) }# O6 [4 ~& c+ G7 D
  35.                               ((PIN) == GPIO_Pin_11) || \5 a; S" l0 @+ ?* {2 \4 H' I' h
  36.                               ((PIN) == GPIO_Pin_12) || \2 m& i* Q6 R  Z
  37.                               ((PIN) == GPIO_Pin_13) || \
    ) E2 ~$ n  ]) }+ b( E
  38.                               ((PIN) == GPIO_Pin_14) || \
    + E& M& Q+ p& |/ F- K5 s, X6 g& L
  39.                               ((PIN) == GPIO_Pin_15))
复制代码

/ E. z6 ^$ H" k9 \9 U6 KGPIO合法的引脚源6 R, H1 F! j% |5 N" g
* ]  i$ l# D! \, C
  }# t2 I/ D. Q& D* D3 K* X4 B
  1. /** @defgroup GPIO_Pin_sources
    ) {$ B. L7 Y( H4 E. o
  2.   * @{, [; [4 K4 C8 @+ |. ~: p0 o
  3.   */
    4 P& d! K8 q# ]+ H- g( @
  4. #define GPIO_PinSource0            ((uint8_t)0x00): M" C7 t5 s$ F  a# j; I$ ^2 u# t
  5. #define GPIO_PinSource1            ((uint8_t)0x01)1 Z& d! E! d( H1 h% z7 S
  6. #define GPIO_PinSource2            ((uint8_t)0x02)1 @6 x. c3 c2 Q: p
  7. #define GPIO_PinSource3            ((uint8_t)0x03)
    / \2 v& g4 j2 {* r! D9 V6 h6 U
  8. #define GPIO_PinSource4            ((uint8_t)0x04)3 D/ b! v- e/ m
  9. #define GPIO_PinSource5            ((uint8_t)0x05)0 e) S) H/ Z/ d
  10. #define GPIO_PinSource6            ((uint8_t)0x06)
    * R! ]7 M, U( q- w+ c* ?
  11. #define GPIO_PinSource7            ((uint8_t)0x07)
    ' Z: e$ S. {1 @/ ^
  12. #define GPIO_PinSource8            ((uint8_t)0x08). D% z' w) `0 ^+ g. ~3 O
  13. #define GPIO_PinSource9            ((uint8_t)0x09): P  c/ C* y2 B% K- G. R! Q5 V  i/ h
  14. #define GPIO_PinSource10           ((uint8_t)0x0A)& q0 O# M: m/ ~% E
  15. #define GPIO_PinSource11           ((uint8_t)0x0B)$ F: R7 H4 T# b, ^9 M
  16. #define GPIO_PinSource12           ((uint8_t)0x0C)2 \5 q+ H- c) U! h
  17. #define GPIO_PinSource13           ((uint8_t)0x0D)
    6 I1 ^* E: t1 q: T% r1 }( p
  18. #define GPIO_PinSource14           ((uint8_t)0x0E)9 ?9 D/ g; d% {* M( \% n2 ~+ T, K" c
  19. #define GPIO_PinSource15           ((uint8_t)0x0F)
    - o8 X3 y7 j# c; h$ t
  20.   z2 Z" k. f- ?' f1 Z3 ?
  21. #define IS_GPIO_PIN_SOURCE(PINSOURCE) (((PINSOURCE) == GPIO_PinSource0) || \
    # u( S/ D/ H2 j) t9 b( ^$ G- J
  22.                                        ((PINSOURCE) == GPIO_PinSource1) || \
    " u# ~4 T! T& E1 L! z* j8 |3 T+ d
  23.                                        ((PINSOURCE) == GPIO_PinSource2) || \
    7 f2 M' m4 g- A' ]" _
  24.                                        ((PINSOURCE) == GPIO_PinSource3) || \. g3 ~! O/ y% u2 }% o: q+ \
  25.                                        ((PINSOURCE) == GPIO_PinSource4) || \9 \( h% I' B" [4 Q' c5 D
  26.                                        ((PINSOURCE) == GPIO_PinSource5) || \4 L" n  Q- x4 v( b' ~6 h
  27.                                        ((PINSOURCE) == GPIO_PinSource6) || \
    ! H' c- M$ o/ K# ^5 y* O
  28.                                        ((PINSOURCE) == GPIO_PinSource7) || \
    7 H5 P( ^! u, w; I0 V! C9 Q9 e: x: S
  29.                                        ((PINSOURCE) == GPIO_PinSource8) || \( I  X3 g* d( F4 S
  30.                                        ((PINSOURCE) == GPIO_PinSource9) || \
    $ R$ `) `3 {' B% \- O! m3 ]5 R3 W/ D
  31.                                        ((PINSOURCE) == GPIO_PinSource10) || \
    1 h' M9 u1 C8 ]+ n6 R$ g
  32.                                        ((PINSOURCE) == GPIO_PinSource11) || \
    7 c, R+ s' g4 F
  33.                                        ((PINSOURCE) == GPIO_PinSource12) || \
    : A" C3 D& ~# V% d9 @
  34.                                        ((PINSOURCE) == GPIO_PinSource13) || \
    " A7 U0 u1 E" |& p4 ~
  35.                                        ((PINSOURCE) == GPIO_PinSource14) || \
    3 \2 G2 ]* D1 Y( B% p/ F
  36.                                        ((PINSOURCE) == GPIO_PinSource15))
复制代码

) T6 F+ |; y) n; s1 p2 @3 n! N: i04. GPIO相关函数
" T  Z- b, M4 d
  1. /*  Function used to set the GPIO configuration to the default reset state ****/2 n; m5 s# ^, s9 X. K; S! x
  2. //配置GPIO为默认状态( k8 K- w3 U) r6 ^- C, A
  3. void GPIO_DeInit(GPIO_TypeDef* GPIOx);
    * i8 k- M  V7 ]% S5 p

  4. " Z8 ?2 z9 R% u- ^1 H3 K; A
  5. /* Initialization and Configuration functions *********************************/& U% q9 z, N2 x. z- N
  6. //GPIO初始化; \* L; e3 F* [: {4 Y/ W% P4 W, l& A
  7. void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
    $ G% i3 S5 k* r- q
  8. //GPIO结构体初始化
    2 ]& ^3 q- _( T- }8 G" r
  9. void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);, y1 G" Q8 }2 Z  w- n
  10. //GPIO锁配置/ I8 {6 f0 i) C8 V' r7 L. Z, I
  11. void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    - e! I% }7 H1 H! U

  12. $ V6 a5 c& G7 M& h: a& p" `
  13. /* GPIO Read and Write functions **********************************************/
    ' ~5 Q3 \( i" V0 F% x1 x
  14. //GPIO读写函数- E* N2 f: o, B* ^! P4 Q
  15. uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    5 a+ o, v+ k9 t! W" \4 j
  16. uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);9 i  J4 F- t* ~3 Z
  17. uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    9 ?! _0 }. m" S- l! C
  18. uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
    ! Q9 Q* K; Z) v! H/ }5 L4 n
  19. void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    " x) ^$ b# \. o% A% l% K- |( e, q' g
  20. void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);& v  m4 _% O; _2 Q" X
  21. void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
    ( o* p, s2 s0 U4 ?
  22. void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
    5 M8 [6 `( ~: J* K
  23. void GPIO_ToggleBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    6 }9 l+ }6 S2 |5 s) V

  24. * T) T2 Z, f0 f& c' E4 D
  25. /* GPIO Alternate functions configuration function ****************************/
    / b/ X* h& E& v
  26. void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF);
复制代码

- j1 D4 m/ u$ B6 x9 }05. GPIO其它相关: S9 Z5 b* w" L, U
stm32f4xx.h文件中
7 N* C" i3 n  V+ b/ z$ L" [5 V4 p+ L+ R& a. p
通用GPIO结构体封装
1 E" c6 d( E: o8 x2 S0 w* U
4 Y6 K+ ^9 _' b! j" h0 p2 P
  1. typedef struct! y. E2 c: ]* Z% _0 N, S4 d
  2. {
    4 ^# n# U1 \- Y1 M: p
  3.   __IO uint32_t MODER;    /*!< GPIO port mode register,               Address offset: 0x00      */
    5 f: Z' x& E3 \8 B" o3 ^# R* w1 ]7 Q: h
  4.   __IO uint32_t OTYPER;   /*!< GPIO port output type register,        Address offset: 0x04      */
    * [. p4 X! }2 |: m( R; e& a
  5.   __IO uint32_t OSPEEDR;  /*!< GPIO port output speed register,       Address offset: 0x08      */
    % H' L- a5 V( V5 a2 L" s3 [
  6.   __IO uint32_t PUPDR;    /*!< GPIO port pull-up/pull-down register,  Address offset: 0x0C      */
    / B( n" R# Y8 x/ m) q6 X
  7.   __IO uint32_t IDR;      /*!< GPIO port input data register,         Address offset: 0x10      */
    - j! }# _4 H" X  u
  8.   __IO uint32_t ODR;      /*!< GPIO port output data register,        Address offset: 0x14      */
    6 S2 @: i8 t, S% M8 x8 X
  9.   __IO uint16_t BSRRL;    /*!< GPIO port bit set/reset low register,  Address offset: 0x18      */! z, Q: W) \, N/ v
  10.   __IO uint16_t BSRRH;    /*!< GPIO port bit set/reset high register, Address offset: 0x1A      */
    ! a% m" {- D: z7 j2 r! X2 H2 C
  11.   __IO uint32_t LCKR;     /*!< GPIO port configuration lock register, Address offset: 0x1C      */1 V$ A3 K# O9 o7 I# X2 O
  12.   __IO uint32_t AFR[2];   /*!< GPIO alternate function registers,     Address offset: 0x20-0x24 */' q6 q  [# I3 A  n4 y, |
  13. } GPIO_TypeDef;
复制代码
5 U+ |' s, ]8 d* W$ P* m
GPIO基地址
( S  A. T% u+ ~, W$ B3 z$ ~4 {
7 m7 R* o8 a" ]" r5 ]
  1. /*!< AHB1 peripherals */
    6 p( }3 N0 _5 L! B* ~+ F- P/ M
  2. #define GPIOA_BASE            (AHB1PERIPH_BASE + 0x0000)
    " V+ [4 ~3 M4 ]% u
  3. #define GPIOB_BASE            (AHB1PERIPH_BASE + 0x0400)! ]9 O& `6 j" F/ T; r: b- }7 q
  4. #define GPIOC_BASE            (AHB1PERIPH_BASE + 0x0800)- x, H8 @2 u; X+ Y5 ~4 a6 U4 V/ g
  5. #define GPIOD_BASE            (AHB1PERIPH_BASE + 0x0C00)
      k. @& t* s7 P+ l
  6. #define GPIOE_BASE            (AHB1PERIPH_BASE + 0x1000)9 j! _8 _) m8 ?9 \% e3 q. w3 a
  7. #define GPIOF_BASE            (AHB1PERIPH_BASE + 0x1400)
    " v! o1 C: b9 n6 w$ f* H( n7 \
  8. #define GPIOG_BASE            (AHB1PERIPH_BASE + 0x1800)
    . A! c- T; ]" R9 J9 B6 w. u6 w9 \
  9. #define GPIOH_BASE            (AHB1PERIPH_BASE + 0x1C00)( N( @' S0 d3 B# E% L
  10. #define GPIOI_BASE            (AHB1PERIPH_BASE + 0x2000)9 J1 g3 ]. X7 ?. c- l
  11. #define GPIOJ_BASE            (AHB1PERIPH_BASE + 0x2400)9 T3 l: N$ T& y8 v/ C& ^
  12. #define GPIOK_BASE            (AHB1PERIPH_BASE + 0x2800)
复制代码

+ v/ A- c5 S; x6 E" BGPIO起始地址
$ K7 h4 i6 X. D

6 a! |2 O% |* U( U# F
  1. #define GPIOA               ((GPIO_TypeDef *) GPIOA_BASE)1 ?# i0 i/ _8 d, x) ~
  2. #define GPIOB               ((GPIO_TypeDef *) GPIOB_BASE)# F' ~+ e) w: L# j
  3. #define GPIOC               ((GPIO_TypeDef *) GPIOC_BASE)
    - F! G( B& ]" ^1 n, H0 {: Y0 w2 {
  4. #define GPIOD               ((GPIO_TypeDef *) GPIOD_BASE)
    : S; Y" \! U; q
  5. #define GPIOE               ((GPIO_TypeDef *) GPIOE_BASE)% g7 T2 @& O5 a7 c/ n
  6. #define GPIOF               ((GPIO_TypeDef *) GPIOF_BASE)% a# N$ P4 X7 h% ^( C! d
  7. #define GPIOG               ((GPIO_TypeDef *) GPIOG_BASE)
    0 p$ R: `3 J1 H" o
  8. #define GPIOH               ((GPIO_TypeDef *) GPIOH_BASE)3 g2 ]6 I% i$ s+ m6 L9 p
  9. #define GPIOI               ((GPIO_TypeDef *) GPIOI_BASE)
    0 o1 P+ H: E" A8 d- Z. |: w, ?
  10. #define GPIOJ               ((GPIO_TypeDef *) GPIOJ_BASE)
    & a2 B) l) S9 r0 t3 y
  11. #define GPIOK               ((GPIO_TypeDef *) GPIOK_BASE)
复制代码
2 G% X* V7 K2 t' ?' W) G1 {8 m4 j
GPIO寄存器相关位
% L8 Z% E- l$ e/ n
" H( h5 v8 [( T/ f, M5 z' W
  1. /******************************************************************************/
    6 O1 A' {9 k, D" t0 h
  2. /*                                                                            */8 j% {2 {' w( [
  3. /*                            General Purpose I/O                             */
    9 \8 ]: {* y4 b5 O
  4. /*                                                                            */
    9 O1 ~$ i- c; A4 h9 R/ f1 h5 F! j
  5. /******************************************************************************/
    - H' d( u4 f% J% B7 n
  6. /******************  Bits definition for GPIO_MODER register  *****************/
    & m: w2 l  {$ h: ?& s- V* A$ \
  7. #define GPIO_MODER_MODER0                    ((uint32_t)0x00000003)4 d+ |% a2 r! ^. j# k
  8. #define GPIO_MODER_MODER0_0                  ((uint32_t)0x00000001)
    4 d% ?7 S7 Q9 a4 k8 q. r) ]; C
  9. #define GPIO_MODER_MODER0_1                  ((uint32_t)0x00000002)4 ]% H) ^/ o" k- f) P9 l, Q7 j7 t! q' g
  10. 4 L  Q! q4 n" z7 B
  11. #define GPIO_MODER_MODER1                    ((uint32_t)0x0000000C)9 m, N5 d2 s0 @+ c$ S' Y  k
  12. #define GPIO_MODER_MODER1_0                  ((uint32_t)0x00000004)
    ! F. {) `; {: y- g9 O6 w
  13. #define GPIO_MODER_MODER1_1                  ((uint32_t)0x00000008)
    0 x% X4 D3 h# n0 Z& s
  14. % P; [* `4 V) V2 r8 {
  15. #define GPIO_MODER_MODER2                    ((uint32_t)0x00000030)* @# x& w5 B4 B" f5 F5 H% w+ ?9 L
  16. #define GPIO_MODER_MODER2_0                  ((uint32_t)0x00000010)6 _; [; K; c% U$ E
  17. #define GPIO_MODER_MODER2_1                  ((uint32_t)0x00000020)6 x$ r3 E/ P; P* r1 l( `

  18. ; S: R' q- e+ \/ j9 {
  19. #define GPIO_MODER_MODER3                    ((uint32_t)0x000000C0)
    0 x* b) y" {0 k6 i' T  N
  20. #define GPIO_MODER_MODER3_0                  ((uint32_t)0x00000040)
    & ?$ I! a% R& u- x- l2 G' j+ K9 l" @
  21. #define GPIO_MODER_MODER3_1                  ((uint32_t)0x00000080)
    . b- |4 X! X" j. X) w

  22. ) G1 a( s4 ]9 g* v
  23. #define GPIO_MODER_MODER4                    ((uint32_t)0x00000300)( J2 {9 p) N8 \2 J% x2 {) [
  24. #define GPIO_MODER_MODER4_0                  ((uint32_t)0x00000100), }+ x, v+ r/ q( |3 i* ~% r: z3 t
  25. #define GPIO_MODER_MODER4_1                  ((uint32_t)0x00000200)  b( x* `# k% a

  26. 9 K) B5 A& e" k
  27. #define GPIO_MODER_MODER5                    ((uint32_t)0x00000C00)# m, A8 X8 d" @+ W' }# ~# F
  28. #define GPIO_MODER_MODER5_0                  ((uint32_t)0x00000400)' @" v% I+ f" K- s
  29. #define GPIO_MODER_MODER5_1                  ((uint32_t)0x00000800)3 \5 Q2 k' a- u$ m0 `! G
  30. + A" p+ `0 n" a4 B. ^
  31. #define GPIO_MODER_MODER6                    ((uint32_t)0x00003000)
    4 O7 V* }6 E/ n# w0 c
  32. #define GPIO_MODER_MODER6_0                  ((uint32_t)0x00001000)5 N! Z/ X! Q+ y( i. g% F& n) R" N
  33. #define GPIO_MODER_MODER6_1                  ((uint32_t)0x00002000)
    " }9 y- y8 v1 q" y/ P' a+ J

  34. 1 H, l4 P2 ~2 G' y0 `1 q
  35. #define GPIO_MODER_MODER7                    ((uint32_t)0x0000C000)
    ' |, ~+ b6 K9 v6 Z+ [& Z
  36. #define GPIO_MODER_MODER7_0                  ((uint32_t)0x00004000)
    . o7 ?+ I; ]& g) b& c5 P; E/ I
  37. #define GPIO_MODER_MODER7_1                  ((uint32_t)0x00008000): J* x2 \0 E# A& P

  38. ! C4 G+ O( d+ k- a5 J  K
  39. #define GPIO_MODER_MODER8                    ((uint32_t)0x00030000)# P0 l. o* V2 v: n) b7 p
  40. #define GPIO_MODER_MODER8_0                  ((uint32_t)0x00010000). C1 i" z7 V: ~. n3 A5 R' o
  41. #define GPIO_MODER_MODER8_1                  ((uint32_t)0x00020000)4 Z+ X  K# U$ N- H

  42. 3 A+ e+ B2 k  }) A. {
  43. #define GPIO_MODER_MODER9                    ((uint32_t)0x000C0000)
    9 ?1 g! U2 q+ f& v4 v
  44. #define GPIO_MODER_MODER9_0                  ((uint32_t)0x00040000)
      z4 e% O) {; y% A( z! }
  45. #define GPIO_MODER_MODER9_1                  ((uint32_t)0x00080000)
    6 m$ u$ g- M; ^9 |. ^  @

  46. 5 c5 j  a$ y2 _  Z* j" K1 S% @
  47. #define GPIO_MODER_MODER10                   ((uint32_t)0x00300000)
    7 }/ S4 L, z( p$ }
  48. #define GPIO_MODER_MODER10_0                 ((uint32_t)0x00100000): w0 k$ Z' b: d6 A% z
  49. #define GPIO_MODER_MODER10_1                 ((uint32_t)0x00200000)" m2 E# ^  t" t. e7 \  T, S
  50. % [% w5 R, ]# j' T9 j
  51. #define GPIO_MODER_MODER11                   ((uint32_t)0x00C00000)
    ! [# m5 }5 M- \; {2 _5 u
  52. #define GPIO_MODER_MODER11_0                 ((uint32_t)0x00400000): g3 d9 m' j% J6 K
  53. #define GPIO_MODER_MODER11_1                 ((uint32_t)0x00800000): [, O7 e& D% r7 Q

  54. - X: @& o8 I, ?% t# K2 A0 h
  55. #define GPIO_MODER_MODER12                   ((uint32_t)0x03000000)
    2 Z9 N  F5 V. B, G' {6 c5 w0 `
  56. #define GPIO_MODER_MODER12_0                 ((uint32_t)0x01000000)
    ' B' R! A  C& i, ?* Q. d
  57. #define GPIO_MODER_MODER12_1                 ((uint32_t)0x02000000)( D0 t2 e! D4 F

  58. 0 s7 P; Q- i- Z
  59. #define GPIO_MODER_MODER13                   ((uint32_t)0x0C000000)
    : q2 o9 \; n" y- ~; u8 m
  60. #define GPIO_MODER_MODER13_0                 ((uint32_t)0x04000000)
    . J6 _% O; F0 h6 S2 \8 R
  61. #define GPIO_MODER_MODER13_1                 ((uint32_t)0x08000000)
    1 z# `" S1 Q9 y: B% d
  62. , k5 {+ k$ Q3 f" o: H' S! ?! M
  63. #define GPIO_MODER_MODER14                   ((uint32_t)0x30000000)
    " i0 k* h% O3 V+ d
  64. #define GPIO_MODER_MODER14_0                 ((uint32_t)0x10000000)  Z* Q( \4 f# o+ M2 f* l
  65. #define GPIO_MODER_MODER14_1                 ((uint32_t)0x20000000)" Z, g7 }2 t, q
  66. % t% ]8 X2 i5 `1 z" L  j9 \# d
  67. #define GPIO_MODER_MODER15                   ((uint32_t)0xC0000000)9 S) A9 @2 s1 }/ T* _* `5 M# O
  68. #define GPIO_MODER_MODER15_0                 ((uint32_t)0x40000000)
    6 H4 A# y. _% ?& \+ c
  69. #define GPIO_MODER_MODER15_1                 ((uint32_t)0x80000000)
    " h& B" E" v5 C7 L
  70. , T- g4 x! l% d# M4 F
  71. /******************  Bits definition for GPIO_OTYPER register  ****************/
    ! ~  c6 z) U, Y
  72. #define GPIO_OTYPER_OT_0                     ((uint32_t)0x00000001)
    0 L! u0 u! V" |0 k
  73. #define GPIO_OTYPER_OT_1                     ((uint32_t)0x00000002)
    ; g3 R$ q: V; o
  74. #define GPIO_OTYPER_OT_2                     ((uint32_t)0x00000004)
    0 [' X% e$ N5 _: f# m, s
  75. #define GPIO_OTYPER_OT_3                     ((uint32_t)0x00000008)
    ! q) K, m" R0 x
  76. #define GPIO_OTYPER_OT_4                     ((uint32_t)0x00000010)( l& t( E' x; D/ s9 U- h- q( h' b
  77. #define GPIO_OTYPER_OT_5                     ((uint32_t)0x00000020)* o! `3 K0 G' \$ S/ j
  78. #define GPIO_OTYPER_OT_6                     ((uint32_t)0x00000040)
    $ n6 u  b$ n) U4 I7 L( A1 O. V
  79. #define GPIO_OTYPER_OT_7                     ((uint32_t)0x00000080)
    ( z' ~+ r; r- g$ l
  80. #define GPIO_OTYPER_OT_8                     ((uint32_t)0x00000100)
    % a0 r( L+ j( R% h
  81. #define GPIO_OTYPER_OT_9                     ((uint32_t)0x00000200)$ l' w- ^$ H& z, \$ Y
  82. #define GPIO_OTYPER_OT_10                    ((uint32_t)0x00000400)
    " V) d0 L: c8 x: L6 q2 V  Y
  83. #define GPIO_OTYPER_OT_11                    ((uint32_t)0x00000800)
    & P8 j3 p0 q& J) @' F& {
  84. #define GPIO_OTYPER_OT_12                    ((uint32_t)0x00001000)
    - T( @  b- x7 C2 T
  85. #define GPIO_OTYPER_OT_13                    ((uint32_t)0x00002000)) R8 [0 W; E1 N4 H* c- ?9 R! b  ^5 {: l
  86. #define GPIO_OTYPER_OT_14                    ((uint32_t)0x00004000)# _/ R+ ^5 z* b' {1 L
  87. #define GPIO_OTYPER_OT_15                    ((uint32_t)0x00008000)
    ; X9 C! @6 c: _) {: i' [0 j+ ~+ E) r8 {

  88. 5 |6 n. F! u) z- I2 {
  89. /******************  Bits definition for GPIO_OSPEEDR register  ***************/% b! T1 S: S/ H+ w# T- K
  90. #define GPIO_OSPEEDER_OSPEEDR0               ((uint32_t)0x00000003)- o* `& n8 r; W
  91. #define GPIO_OSPEEDER_OSPEEDR0_0             ((uint32_t)0x00000001)
    0 E# G; N/ Z1 Y! n8 Q
  92. #define GPIO_OSPEEDER_OSPEEDR0_1             ((uint32_t)0x00000002)
    . \3 c5 v2 S! n% }! a" K0 g
  93. ! o1 C; M9 m0 j  x# e6 u" l
  94. #define GPIO_OSPEEDER_OSPEEDR1               ((uint32_t)0x0000000C)
    9 v8 ^4 N& Y- s
  95. #define GPIO_OSPEEDER_OSPEEDR1_0             ((uint32_t)0x00000004)
    - u# ~; K9 z8 y  `9 A6 D- g# T
  96. #define GPIO_OSPEEDER_OSPEEDR1_1             ((uint32_t)0x00000008)! A# v# P0 r7 L% _! _( M- p, [
  97. ) Y% }0 q& X! L8 F( e  v; g
  98. #define GPIO_OSPEEDER_OSPEEDR2               ((uint32_t)0x00000030)4 s/ @* D% z3 r# n( Z/ S
  99. #define GPIO_OSPEEDER_OSPEEDR2_0             ((uint32_t)0x00000010)
    , `* g4 e+ ~4 O/ k) O" a- E# Y
  100. #define GPIO_OSPEEDER_OSPEEDR2_1             ((uint32_t)0x00000020)
    / ^: v! \6 t2 _" `
  101. * v( t" @% ?0 f+ C' q1 S" }0 P4 F7 P
  102. #define GPIO_OSPEEDER_OSPEEDR3               ((uint32_t)0x000000C0)' o: o2 ~1 Q* S  Z
  103. #define GPIO_OSPEEDER_OSPEEDR3_0             ((uint32_t)0x00000040)
    3 _  z. s0 |+ b0 V& S4 G
  104. #define GPIO_OSPEEDER_OSPEEDR3_1             ((uint32_t)0x00000080)
    3 X7 z& |+ K1 X) x1 S

  105. 1 c, b* l1 s# a9 u
  106. #define GPIO_OSPEEDER_OSPEEDR4               ((uint32_t)0x00000300)1 q+ }9 m- U) h, }2 X) ~. y5 ^. M
  107. #define GPIO_OSPEEDER_OSPEEDR4_0             ((uint32_t)0x00000100)" i  d# q2 e! d- m0 @
  108. #define GPIO_OSPEEDER_OSPEEDR4_1             ((uint32_t)0x00000200)% [9 u7 B1 r) K5 t; p$ |6 X6 o9 _
  109. 5 _, Q3 n7 D, {" m
  110. #define GPIO_OSPEEDER_OSPEEDR5               ((uint32_t)0x00000C00); y4 Q3 Z- S0 @! B' w  X
  111. #define GPIO_OSPEEDER_OSPEEDR5_0             ((uint32_t)0x00000400)( X; B& [% r8 \
  112. #define GPIO_OSPEEDER_OSPEEDR5_1             ((uint32_t)0x00000800)
    ) S# l% b! Q( t: V
  113. " V, Q( ]4 O( @/ `, w
  114. #define GPIO_OSPEEDER_OSPEEDR6               ((uint32_t)0x00003000)
    6 J: L0 a  m1 R1 I* V1 E& ?
  115. #define GPIO_OSPEEDER_OSPEEDR6_0             ((uint32_t)0x00001000)
    ' V$ }# }2 H+ s+ r+ g6 U& l
  116. #define GPIO_OSPEEDER_OSPEEDR6_1             ((uint32_t)0x00002000)
    - o  \; f* G, e
  117. 4 U/ k7 L- ?* X- n) n9 G
  118. #define GPIO_OSPEEDER_OSPEEDR7               ((uint32_t)0x0000C000)( W- b' u, _3 h. ?5 t4 h- ?
  119. #define GPIO_OSPEEDER_OSPEEDR7_0             ((uint32_t)0x00004000)
    + j: f8 r: A3 \8 i  J) s3 Z; E! h6 P( \6 o
  120. #define GPIO_OSPEEDER_OSPEEDR7_1             ((uint32_t)0x00008000)
    + M8 L( J1 m9 B0 L" [

  121. : d9 }/ N# L3 Q* f2 k
  122. #define GPIO_OSPEEDER_OSPEEDR8               ((uint32_t)0x00030000)# i; d& e- |3 ]/ j3 Z
  123. #define GPIO_OSPEEDER_OSPEEDR8_0             ((uint32_t)0x00010000)
    - w& p/ p" d7 f+ }2 G% |4 p8 d
  124. #define GPIO_OSPEEDER_OSPEEDR8_1             ((uint32_t)0x00020000)
    8 ?' C3 @2 o' J

  125. & {" ?5 U! \+ r, N) @2 O
  126. #define GPIO_OSPEEDER_OSPEEDR9               ((uint32_t)0x000C0000)1 i% ~3 P% ]( a5 [8 y
  127. #define GPIO_OSPEEDER_OSPEEDR9_0             ((uint32_t)0x00040000)
    : b5 @2 t( p0 y" P. j7 Z
  128. #define GPIO_OSPEEDER_OSPEEDR9_1             ((uint32_t)0x00080000), O" O) i* R! Y* E& n5 x

  129. # F* v7 w4 C) Q" A3 `" E9 u
  130. #define GPIO_OSPEEDER_OSPEEDR10              ((uint32_t)0x00300000)  S  K& Z+ n! f' [7 f& r
  131. #define GPIO_OSPEEDER_OSPEEDR10_0            ((uint32_t)0x00100000)
    , p( l+ Z$ z; g: M0 z, z, C+ B1 _
  132. #define GPIO_OSPEEDER_OSPEEDR10_1            ((uint32_t)0x00200000)( c! S. i+ e$ G$ `

  133. ( e% I0 V9 H- s: U  C
  134. #define GPIO_OSPEEDER_OSPEEDR11              ((uint32_t)0x00C00000)9 h5 r& u" N, ^2 I0 W
  135. #define GPIO_OSPEEDER_OSPEEDR11_0            ((uint32_t)0x00400000)
    2 u/ ?' D- y, N/ P7 l
  136. #define GPIO_OSPEEDER_OSPEEDR11_1            ((uint32_t)0x00800000)
    , _! ]7 O- d1 C
  137. / b1 n& v3 l/ A" H
  138. #define GPIO_OSPEEDER_OSPEEDR12              ((uint32_t)0x03000000)
    ' U( i/ D. D9 }4 [4 B* f; @/ Z
  139. #define GPIO_OSPEEDER_OSPEEDR12_0            ((uint32_t)0x01000000)
    6 T; x, N+ _) i* X0 {+ T$ q
  140. #define GPIO_OSPEEDER_OSPEEDR12_1            ((uint32_t)0x02000000)
    $ m. d5 Z8 |8 [8 {9 p' t) P6 ]: u

  141. ) f6 z, L) K8 n2 V8 R: U
  142. #define GPIO_OSPEEDER_OSPEEDR13              ((uint32_t)0x0C000000)
    - y* Z/ ?4 y3 r6 L0 K6 e; j- d
  143. #define GPIO_OSPEEDER_OSPEEDR13_0            ((uint32_t)0x04000000)3 _1 C! ]( b% i, m
  144. #define GPIO_OSPEEDER_OSPEEDR13_1            ((uint32_t)0x08000000)
    / Z& K$ ]3 e( G8 ~  i6 J/ K6 s
  145. 8 B2 Y$ |' P$ s9 N
  146. #define GPIO_OSPEEDER_OSPEEDR14              ((uint32_t)0x30000000)
    5 O4 Z/ d* c2 v
  147. #define GPIO_OSPEEDER_OSPEEDR14_0            ((uint32_t)0x10000000)
    , u: j. [; ]6 }
  148. #define GPIO_OSPEEDER_OSPEEDR14_1            ((uint32_t)0x20000000)( I2 N9 s) d9 s7 j/ i' y) L

  149. # F/ A- m6 z+ k6 e$ P
  150. #define GPIO_OSPEEDER_OSPEEDR15              ((uint32_t)0xC0000000); o% ]# L- `/ o& B; y+ c* ]  I
  151. #define GPIO_OSPEEDER_OSPEEDR15_0            ((uint32_t)0x40000000)% L8 ]( u/ r7 g6 S
  152. #define GPIO_OSPEEDER_OSPEEDR15_1            ((uint32_t)0x80000000)
    9 V3 Q4 u9 k" i! _0 G& T5 [* R2 P9 m

  153. , j7 C9 |/ I4 f# |, c
  154. /******************  Bits definition for GPIO_PUPDR register  *****************/
    % P! H+ @. G. b' y
  155. #define GPIO_PUPDR_PUPDR0                    ((uint32_t)0x00000003)* a$ N) _0 Z% I3 Z+ {
  156. #define GPIO_PUPDR_PUPDR0_0                  ((uint32_t)0x00000001)
    7 I* l1 p8 R+ P: y9 A1 q
  157. #define GPIO_PUPDR_PUPDR0_1                  ((uint32_t)0x00000002)4 [5 G) r. R9 S; E& N' b$ D8 s; V

  158. 0 V2 J  S5 D3 ~0 n6 \
  159. #define GPIO_PUPDR_PUPDR1                    ((uint32_t)0x0000000C): x3 @% o" j0 j- {
  160. #define GPIO_PUPDR_PUPDR1_0                  ((uint32_t)0x00000004)9 ]/ h3 _; |+ c% u$ `' t
  161. #define GPIO_PUPDR_PUPDR1_1                  ((uint32_t)0x00000008)
    7 \% L5 Z: F# _' F/ P' V% i- e

  162. # p% v! X( z9 b% b
  163. #define GPIO_PUPDR_PUPDR2                    ((uint32_t)0x00000030); e; G) p2 u3 ~: c+ Y! m+ i. T
  164. #define GPIO_PUPDR_PUPDR2_0                  ((uint32_t)0x00000010)
    / p- _  w6 j( d3 t) }& ]
  165. #define GPIO_PUPDR_PUPDR2_1                  ((uint32_t)0x00000020)+ K  j+ Q! \/ X# v1 M! k5 z5 P* t

  166. ; t: ]. F% ]3 W6 g
  167. #define GPIO_PUPDR_PUPDR3                    ((uint32_t)0x000000C0)4 y; W; l  [6 W2 P0 p, i5 r! N
  168. #define GPIO_PUPDR_PUPDR3_0                  ((uint32_t)0x00000040)6 \- y# t" l" q% y/ C: J5 n" p0 K1 \
  169. #define GPIO_PUPDR_PUPDR3_1                  ((uint32_t)0x00000080)
    / h4 r  [' F7 N9 `) `3 z3 n; `
  170. 3 K1 N# h5 C) f5 m  _7 @
  171. #define GPIO_PUPDR_PUPDR4                    ((uint32_t)0x00000300)
    / O; b& a4 [0 ]' H4 o" e
  172. #define GPIO_PUPDR_PUPDR4_0                  ((uint32_t)0x00000100)2 Q4 d6 ~2 k" b, \4 @/ A( a/ l
  173. #define GPIO_PUPDR_PUPDR4_1                  ((uint32_t)0x00000200)6 W* @/ N/ y+ X+ s4 x7 v. n# M
  174. " n2 h. N0 I( |: b- z
  175. #define GPIO_PUPDR_PUPDR5                    ((uint32_t)0x00000C00)
    % A. h6 l  g" N) Q- s, K
  176. #define GPIO_PUPDR_PUPDR5_0                  ((uint32_t)0x00000400)2 R3 R9 d# ], Z7 U8 ?3 C# B2 H
  177. #define GPIO_PUPDR_PUPDR5_1                  ((uint32_t)0x00000800)
    $ l3 k9 U+ L8 x% X

  178. 4 g( ]: t1 y4 A! L) E
  179. #define GPIO_PUPDR_PUPDR6                    ((uint32_t)0x00003000). l( Z! r/ b2 y
  180. #define GPIO_PUPDR_PUPDR6_0                  ((uint32_t)0x00001000)
    4 ], Z6 ^( {+ J% m
  181. #define GPIO_PUPDR_PUPDR6_1                  ((uint32_t)0x00002000)
    * n- O( I. N3 z9 P
  182. " x. B1 w. P- `7 j4 v. A% E! Z0 v' j
  183. #define GPIO_PUPDR_PUPDR7                    ((uint32_t)0x0000C000)+ N! {9 |( O1 A7 O- a5 n9 ~& q
  184. #define GPIO_PUPDR_PUPDR7_0                  ((uint32_t)0x00004000); v- ^4 i7 ]- \) l$ i
  185. #define GPIO_PUPDR_PUPDR7_1                  ((uint32_t)0x00008000)) f# Z# i6 n( G# t% U. k5 S; D$ y; }- \

  186. ( s7 P! x+ N2 R+ g
  187. #define GPIO_PUPDR_PUPDR8                    ((uint32_t)0x00030000)
    % z: A5 M) a1 ~% Z$ d
  188. #define GPIO_PUPDR_PUPDR8_0                  ((uint32_t)0x00010000)4 o2 J( t/ ~8 Q9 s) a
  189. #define GPIO_PUPDR_PUPDR8_1                  ((uint32_t)0x00020000)
    - F! R' |9 n/ j  s+ n% z( {4 S6 Q, [9 K

  190. 1 f: ^$ |1 y' Z
  191. #define GPIO_PUPDR_PUPDR9                    ((uint32_t)0x000C0000)
    ; {* s; V2 a; s$ ?+ }" m& H
  192. #define GPIO_PUPDR_PUPDR9_0                  ((uint32_t)0x00040000). P; ^5 r  E8 F9 D! c- N
  193. #define GPIO_PUPDR_PUPDR9_1                  ((uint32_t)0x00080000)
    0 d' C4 t& p0 v' h: G+ s6 k: s
  194. : W- J6 T" m( Y
  195. #define GPIO_PUPDR_PUPDR10                   ((uint32_t)0x00300000)
    1 c1 i7 [, g3 f0 P) ^
  196. #define GPIO_PUPDR_PUPDR10_0                 ((uint32_t)0x00100000)
    # E$ }& i; t8 P6 u' i
  197. #define GPIO_PUPDR_PUPDR10_1                 ((uint32_t)0x00200000)( A% K0 w) l/ U3 M1 X
  198. " p% y4 E6 q, t, Z
  199. #define GPIO_PUPDR_PUPDR11                   ((uint32_t)0x00C00000). l4 m8 C, }0 X/ E4 o  q
  200. #define GPIO_PUPDR_PUPDR11_0                 ((uint32_t)0x00400000)
    % h% K$ D' H- ?7 c" b) K
  201. #define GPIO_PUPDR_PUPDR11_1                 ((uint32_t)0x00800000)
    ' W7 d! t  Z* s" c2 d  U. d
  202. 6 e3 e6 j# ]. a. f* ~; }* ^! x6 V
  203. #define GPIO_PUPDR_PUPDR12                   ((uint32_t)0x03000000)
    # k- q* H4 E4 q9 D
  204. #define GPIO_PUPDR_PUPDR12_0                 ((uint32_t)0x01000000); M4 r* N# ?! @
  205. #define GPIO_PUPDR_PUPDR12_1                 ((uint32_t)0x02000000)
    " E$ A3 r9 Y" i

  206. 1 H1 p/ N8 S, n' d. j
  207. #define GPIO_PUPDR_PUPDR13                   ((uint32_t)0x0C000000)1 s& ^0 m+ ^3 m- }
  208. #define GPIO_PUPDR_PUPDR13_0                 ((uint32_t)0x04000000)
    / o. p  ~+ w% C
  209. #define GPIO_PUPDR_PUPDR13_1                 ((uint32_t)0x08000000)
    4 Z- ^0 `4 O0 C% \8 P, c7 Y
  210. ' R3 b3 d: @3 ~
  211. #define GPIO_PUPDR_PUPDR14                   ((uint32_t)0x30000000)
    8 X- M3 J9 m) j% g) m( m
  212. #define GPIO_PUPDR_PUPDR14_0                 ((uint32_t)0x10000000)2 Q2 G! Q# }8 c4 E' c( X
  213. #define GPIO_PUPDR_PUPDR14_1                 ((uint32_t)0x20000000)
    $ C' A- [2 F" ~4 M
  214. 3 [+ M( A% W, U$ U) G
  215. #define GPIO_PUPDR_PUPDR15                   ((uint32_t)0xC0000000)
    / d: o% k  Q5 h0 n. g8 b4 l
  216. #define GPIO_PUPDR_PUPDR15_0                 ((uint32_t)0x40000000)
    % y3 v. _7 B* o  |# e% |
  217. #define GPIO_PUPDR_PUPDR15_1                 ((uint32_t)0x80000000)
    / A) |$ m8 E+ f2 S

  218. " g) N' g% n2 U3 @; K* L3 a
  219. /******************  Bits definition for GPIO_IDR register  *******************/# Y3 o# z/ k3 a* u
  220. #define GPIO_IDR_IDR_0                       ((uint32_t)0x00000001)
    8 ^6 e. L! y9 L
  221. #define GPIO_IDR_IDR_1                       ((uint32_t)0x00000002)
    1 N5 z! ]) ~+ y7 A
  222. #define GPIO_IDR_IDR_2                       ((uint32_t)0x00000004)9 B  r& V  ]7 b4 E
  223. #define GPIO_IDR_IDR_3                       ((uint32_t)0x00000008)
    " E, D" g) x8 K) Z8 }* q7 w
  224. #define GPIO_IDR_IDR_4                       ((uint32_t)0x00000010); j3 r2 B$ d0 ]  M) J- X  I3 m" a8 ~
  225. #define GPIO_IDR_IDR_5                       ((uint32_t)0x00000020)
    & Z6 g$ o$ L/ S& K+ ^
  226. #define GPIO_IDR_IDR_6                       ((uint32_t)0x00000040)+ }) {$ v% u1 W7 G6 [
  227. #define GPIO_IDR_IDR_7                       ((uint32_t)0x00000080)# f8 G$ u# q1 k$ L. \/ q' R) t
  228. #define GPIO_IDR_IDR_8                       ((uint32_t)0x00000100)
    $ U  L3 @% Y5 g% G; }+ n0 B- g
  229. #define GPIO_IDR_IDR_9                       ((uint32_t)0x00000200)) T5 b& K2 @; `/ H8 ~4 {
  230. #define GPIO_IDR_IDR_10                      ((uint32_t)0x00000400)( M+ }" u/ S7 E2 g( ?5 C9 o
  231. #define GPIO_IDR_IDR_11                      ((uint32_t)0x00000800)
    5 |6 Y# x0 b, _: K+ ~9 [( }
  232. #define GPIO_IDR_IDR_12                      ((uint32_t)0x00001000). R$ s" n1 ^- A; U( I; U
  233. #define GPIO_IDR_IDR_13                      ((uint32_t)0x00002000)& [9 b) J, o/ S3 t: C
  234. #define GPIO_IDR_IDR_14                      ((uint32_t)0x00004000); `0 j5 B# K# i6 y0 \9 [" z
  235. #define GPIO_IDR_IDR_15                      ((uint32_t)0x00008000)
    , b- p7 ]0 _0 t8 T
  236. /* Old GPIO_IDR register bits definition, maintained for legacy purpose */7 D# E% h2 L% y) P) f
  237. #define GPIO_OTYPER_IDR_0                    GPIO_IDR_IDR_0
    0 W! N4 H8 D- [
  238. #define GPIO_OTYPER_IDR_1                    GPIO_IDR_IDR_1) E4 i, P" w2 j  G$ D$ E* R
  239. #define GPIO_OTYPER_IDR_2                    GPIO_IDR_IDR_22 V! ?2 \8 y, b
  240. #define GPIO_OTYPER_IDR_3                    GPIO_IDR_IDR_3: [, v8 }! I/ O2 O
  241. #define GPIO_OTYPER_IDR_4                    GPIO_IDR_IDR_4
    - w6 G5 z3 e' C
  242. #define GPIO_OTYPER_IDR_5                    GPIO_IDR_IDR_5
    ' c1 _* G5 ~6 _! y- \
  243. #define GPIO_OTYPER_IDR_6                    GPIO_IDR_IDR_6
    ' u5 }" X( X( U- Y3 C4 U2 r- Y% e
  244. #define GPIO_OTYPER_IDR_7                    GPIO_IDR_IDR_7
    & B/ @" q' u& G0 m
  245. #define GPIO_OTYPER_IDR_8                    GPIO_IDR_IDR_81 S% |! J. d/ Y6 _+ n$ [
  246. #define GPIO_OTYPER_IDR_9                    GPIO_IDR_IDR_9
    " I' ^* F8 v, A" _7 e9 ^9 |% ?/ p
  247. #define GPIO_OTYPER_IDR_10                   GPIO_IDR_IDR_10
      _) C7 ^' j7 ~0 C2 F; F
  248. #define GPIO_OTYPER_IDR_11                   GPIO_IDR_IDR_11- o' O% Y# j" A$ `8 D' [* |  d1 x
  249. #define GPIO_OTYPER_IDR_12                   GPIO_IDR_IDR_12" i0 Z+ R7 P' j" L  R
  250. #define GPIO_OTYPER_IDR_13                   GPIO_IDR_IDR_136 E. V4 ]. X2 b. y* |% E
  251. #define GPIO_OTYPER_IDR_14                   GPIO_IDR_IDR_148 x  G; [6 l5 b4 j2 d* S
  252. #define GPIO_OTYPER_IDR_15                   GPIO_IDR_IDR_158 {- ?! @/ M' |0 j
  253. ' Q5 \* m$ e( d
  254. /******************  Bits definition for GPIO_ODR register  *******************/
    8 S, q" P- \; ]4 j) X
  255. #define GPIO_ODR_ODR_0                       ((uint32_t)0x00000001)- o" W  H* q1 H* d
  256. #define GPIO_ODR_ODR_1                       ((uint32_t)0x00000002); W7 ~4 V) G+ c, L
  257. #define GPIO_ODR_ODR_2                       ((uint32_t)0x00000004)
    ! ^3 Q& r$ r& G' F4 ^/ m
  258. #define GPIO_ODR_ODR_3                       ((uint32_t)0x00000008)
    6 h4 r" [  {1 Y) G( n1 V( I* W
  259. #define GPIO_ODR_ODR_4                       ((uint32_t)0x00000010)9 T9 M3 X6 i3 d2 ?' V
  260. #define GPIO_ODR_ODR_5                       ((uint32_t)0x00000020)
    3 N" ?  W* z, \$ I1 Y+ z
  261. #define GPIO_ODR_ODR_6                       ((uint32_t)0x00000040)1 p9 U/ n; _  Q& E/ t: U
  262. #define GPIO_ODR_ODR_7                       ((uint32_t)0x00000080)- c. s4 f+ M1 B8 `2 H4 Z2 S) w: n/ Q/ @
  263. #define GPIO_ODR_ODR_8                       ((uint32_t)0x00000100)
    1 s% u. [+ P" `, p5 ?
  264. #define GPIO_ODR_ODR_9                       ((uint32_t)0x00000200)) w: D# p. W2 n+ D7 a" P
  265. #define GPIO_ODR_ODR_10                      ((uint32_t)0x00000400)
    $ G: j( O9 \% L0 Y0 I' J
  266. #define GPIO_ODR_ODR_11                      ((uint32_t)0x00000800)$ |0 R1 Y1 ~% m; h6 F$ ?6 i
  267. #define GPIO_ODR_ODR_12                      ((uint32_t)0x00001000)$ [/ X2 I+ S7 d! x7 v
  268. #define GPIO_ODR_ODR_13                      ((uint32_t)0x00002000): ~+ j! L/ J1 y( C8 |: g0 S
  269. #define GPIO_ODR_ODR_14                      ((uint32_t)0x00004000)0 R' n& Z- U' }( B+ V
  270. #define GPIO_ODR_ODR_15                      ((uint32_t)0x00008000)" R5 e% T3 T6 S. U- t
  271. /* Old GPIO_ODR register bits definition, maintained for legacy purpose */# V, G' F- v/ W- V8 J2 A
  272. #define GPIO_OTYPER_ODR_0                    GPIO_ODR_ODR_0
    & k  @7 l# a; v# @
  273. #define GPIO_OTYPER_ODR_1                    GPIO_ODR_ODR_1
    6 B, T7 q7 q+ b; S
  274. #define GPIO_OTYPER_ODR_2                    GPIO_ODR_ODR_2
    5 o. t2 {1 y% q
  275. #define GPIO_OTYPER_ODR_3                    GPIO_ODR_ODR_3+ G. Z2 V3 F7 @, \; H
  276. #define GPIO_OTYPER_ODR_4                    GPIO_ODR_ODR_4! @: Z) F! r) u$ q! u2 I" f
  277. #define GPIO_OTYPER_ODR_5                    GPIO_ODR_ODR_5
    - C5 `: Y7 M% E3 T3 e5 ?4 J
  278. #define GPIO_OTYPER_ODR_6                    GPIO_ODR_ODR_6
      Q& l2 N; o! J. r/ C( ^
  279. #define GPIO_OTYPER_ODR_7                    GPIO_ODR_ODR_7
    ) p4 j# A5 d. `' b# T0 q; G1 ]% |
  280. #define GPIO_OTYPER_ODR_8                    GPIO_ODR_ODR_8
    6 G/ C8 k9 e4 K1 m8 A! i& y4 z. ]
  281. #define GPIO_OTYPER_ODR_9                    GPIO_ODR_ODR_93 Y6 N: M0 x& H, n, Y. u
  282. #define GPIO_OTYPER_ODR_10                   GPIO_ODR_ODR_10
    4 e- X& ?7 e7 q- m$ N1 K
  283. #define GPIO_OTYPER_ODR_11                   GPIO_ODR_ODR_11, U0 Y/ o, W$ E% c$ ?$ M" I
  284. #define GPIO_OTYPER_ODR_12                   GPIO_ODR_ODR_124 b  W; Y  E: \& C3 d9 C
  285. #define GPIO_OTYPER_ODR_13                   GPIO_ODR_ODR_13
    ' q0 b1 W& ]+ I
  286. #define GPIO_OTYPER_ODR_14                   GPIO_ODR_ODR_147 m3 E' b; B' X! R9 l8 }& N
  287. #define GPIO_OTYPER_ODR_15                   GPIO_ODR_ODR_15
    5 d* z! X( c  O) D3 a
  288. : _1 c' r# z5 P  r2 j4 P1 ]/ J
  289. /******************  Bits definition for GPIO_BSRR register  ******************/
    $ N7 v1 e' ^) R- B/ f5 X
  290. #define GPIO_BSRR_BS_0                       ((uint32_t)0x00000001)
    6 n' f& q5 k4 y7 i3 c' J
  291. #define GPIO_BSRR_BS_1                       ((uint32_t)0x00000002)( x2 g" Z2 T; Z( j
  292. #define GPIO_BSRR_BS_2                       ((uint32_t)0x00000004)+ u- ]5 E6 g$ f7 o4 h4 _3 |; ]
  293. #define GPIO_BSRR_BS_3                       ((uint32_t)0x00000008). i2 o" c7 h# X! H1 l7 |5 T
  294. #define GPIO_BSRR_BS_4                       ((uint32_t)0x00000010)
    ; O) \" G% q0 i* U
  295. #define GPIO_BSRR_BS_5                       ((uint32_t)0x00000020)# O, d( o$ e# v- h3 Y" u
  296. #define GPIO_BSRR_BS_6                       ((uint32_t)0x00000040)" `6 h8 C7 a( k: ?1 I
  297. #define GPIO_BSRR_BS_7                       ((uint32_t)0x00000080)0 k0 G1 i, v1 Y) D5 m- C
  298. #define GPIO_BSRR_BS_8                       ((uint32_t)0x00000100)2 G( Z* D5 `  D9 c" H
  299. #define GPIO_BSRR_BS_9                       ((uint32_t)0x00000200)
    / k7 g- {$ N6 x( Z
  300. #define GPIO_BSRR_BS_10                      ((uint32_t)0x00000400)
    2 r' ^+ g* j, Q: x* I
  301. #define GPIO_BSRR_BS_11                      ((uint32_t)0x00000800)) O8 X) `  \$ L0 p0 w
  302. #define GPIO_BSRR_BS_12                      ((uint32_t)0x00001000)
    " ?) @9 Y) j/ o4 R9 W
  303. #define GPIO_BSRR_BS_13                      ((uint32_t)0x00002000)$ a! ?2 r: _, l, a
  304. #define GPIO_BSRR_BS_14                      ((uint32_t)0x00004000), p8 Q% ]9 `7 G# O4 i. N2 u  D
  305. #define GPIO_BSRR_BS_15                      ((uint32_t)0x00008000)
    * E, A2 `( |: F# ^6 B  a
  306. #define GPIO_BSRR_BR_0                       ((uint32_t)0x00010000)
    4 c2 r* M3 m/ G: p& ?# k
  307. #define GPIO_BSRR_BR_1                       ((uint32_t)0x00020000)
    # U% [4 J& d% ?' R" l3 Z  G
  308. #define GPIO_BSRR_BR_2                       ((uint32_t)0x00040000)
    : a' _+ A8 v& G  U  T% h
  309. #define GPIO_BSRR_BR_3                       ((uint32_t)0x00080000)
    $ F0 [! d9 H: D1 c3 K1 U
  310. #define GPIO_BSRR_BR_4                       ((uint32_t)0x00100000)2 D/ u! n  [( [2 N0 R
  311. #define GPIO_BSRR_BR_5                       ((uint32_t)0x00200000)1 \0 p  }9 @, x: O& x  l
  312. #define GPIO_BSRR_BR_6                       ((uint32_t)0x00400000)
    + X. x" ]. z& b5 ~2 \4 h) F
  313. #define GPIO_BSRR_BR_7                       ((uint32_t)0x00800000)
    . \! Z" \7 h+ o  y) p6 R
  314. #define GPIO_BSRR_BR_8                       ((uint32_t)0x01000000)) \9 L; u8 Q3 p
  315. #define GPIO_BSRR_BR_9                       ((uint32_t)0x02000000)
    % w: M2 C8 ~* ~0 R/ Y
  316. #define GPIO_BSRR_BR_10                      ((uint32_t)0x04000000)& @6 x+ B" k% d$ N  R
  317. #define GPIO_BSRR_BR_11                      ((uint32_t)0x08000000)
    " y2 a$ D* F" g/ V$ m2 X4 c' T
  318. #define GPIO_BSRR_BR_12                      ((uint32_t)0x10000000)
    6 j) G8 v6 {2 e% s3 e
  319. #define GPIO_BSRR_BR_13                      ((uint32_t)0x20000000)) }9 C* K9 l  n3 ?
  320. #define GPIO_BSRR_BR_14                      ((uint32_t)0x40000000). L1 K* w" G' E( H( `. ^) y3 {
  321. #define GPIO_BSRR_BR_15                      ((uint32_t)0x80000000)
复制代码
' B6 b( Z! U. _8 P
GPIO全部挂载AHB1总线上
$ i% P+ q8 Y! K% Z9 ~8 D+ F3 p& `8 W2 I- S4 i9 \; Y' t$ _
  1. /********************  Bit definition for RCC_AHB1ENR register  ***************/
    / U1 u5 X/ Z- ]- O, T
  2. #define  RCC_AHB1ENR_GPIOAEN                 ((uint32_t)0x00000001)# b8 y: t! J, M
  3. #define  RCC_AHB1ENR_GPIOBEN                 ((uint32_t)0x00000002)
    . E3 r8 t$ f) u" m8 X
  4. #define  RCC_AHB1ENR_GPIOCEN                 ((uint32_t)0x00000004)
    4 K$ n  N$ I4 u( w! R. G+ `
  5. #define  RCC_AHB1ENR_GPIODEN                 ((uint32_t)0x00000008): ^# M& P9 M3 w; d) R2 i
  6. #define  RCC_AHB1ENR_GPIOEEN                 ((uint32_t)0x00000010)
    : X% A2 n. R5 c- p# G8 U
  7. #define  RCC_AHB1ENR_GPIOFEN                 ((uint32_t)0x00000020)
    2 ?% \; f1 y& T3 m  M
  8. #define  RCC_AHB1ENR_GPIOGEN                 ((uint32_t)0x00000040)' ]4 z! e" S. W5 C* G7 ~
  9. #define  RCC_AHB1ENR_GPIOHEN                 ((uint32_t)0x00000080)
    % V8 Y, h, i1 w6 y* ~* Y
  10. #define  RCC_AHB1ENR_GPIOIEN                 ((uint32_t)0x00000100)
    3 u! K2 t6 c" ]4 T- U
  11. #define  RCC_AHB1ENR_GPIOJEN                 ((uint32_t)0x00000200)- O( ?! |) z- D0 B6 [( w9 u
  12. #define  RCC_AHB1ENR_GPIOKEN                 ((uint32_t)0x00000400)
复制代码
+ g9 x/ J9 N6 O% B: W" u
; e- A8 \% L& g5 H9 q/ h
- [- g' [# s6 T" R* M: A4 h6 t8 C
收藏 评论0 发布时间:2022-6-11 21:38

举报

0个回答

所属标签

相似分享

官网相关资源

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