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

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

[复制链接]
STMCU小助手 发布时间:2022-6-11 21:38
01. GPIO固件库概述4 p/ Y2 E. E" b) ?& \5 ~
stm32f4xx_gpio.h GPIO相关函数和类型的声明
# E% J# u# ^6 z" X: M
. E1 s& P7 {& k4 k6 @1 ustm32f4xx_gpio.c GPIO相关函数具体实现。
. U; H$ F" _! Z0 t' K' E$ j+ k
9 d2 z6 t& G! c! k5 h! T* D3 K& L02. GPIO相关类型# B7 u! i- T+ q+ k5 S1 t, E
GPIO相关的类型几乎都在stm32f4xx_gpio.h文件中。
9 o# x- |7 @" u+ w1 J5 K! O( s+ E1 W8 T8 C  B- P8 J  \) l
GPIO的模式
( w/ c6 K- @& k0 m! p! ^; D2 F
8 r& P3 X: c8 F" p4 w5 l/ E
  1. /**
    2 R7 t; a4 \. Z, K; R& Q: p
  2.   * @brief  GPIO Configuration Mode enumeration
    0 `/ t- X. r. \* p9 ], _* c2 {
  3.   */   
    ! B; g# g/ n, d& m. o5 q
  4. typedef enum
    + d& H6 I% P  t, O& i, K
  5. { & [6 V/ [; d) o: x) R! p9 ^2 d/ J
  6.   GPIO_Mode_IN   = 0x00, /*!< GPIO Input Mode */
    $ X! \: I5 u$ i1 k2 l% F, ~
  7.   GPIO_Mode_OUT  = 0x01, /*!< GPIO Output Mode */! }" r- L6 a3 m. @
  8.   GPIO_Mode_AF   = 0x02, /*!< GPIO Alternate function Mode */0 M; ^) ]5 C/ O; |3 J9 x
  9.   GPIO_Mode_AN   = 0x03  /*!< GPIO Analog Mode */2 k6 Q, _+ D) R- @: c' i
  10. }GPIOMode_TypeDef;# f* v; ~2 l3 H7 t
  11. #define IS_GPIO_MODE(MODE) (((MODE) == GPIO_Mode_IN)  || ((MODE) == GPIO_Mode_OUT) || \7 ^! F: X: r0 x5 s& i5 b3 \
  12.                             ((MODE) == GPIO_Mode_AF)|| ((MODE) == GPIO_Mode_AN))
复制代码

, j, `/ ^- }0 q' p; V8 SGPIO输出类型
7 @6 E, m! [% G8 }2 G

& ?* C4 B9 @) ?
  1. /**
    # w. t: A& ]: h; @
  2.   * @brief  GPIO Output type enumeration % |, f! c% S# O5 X
  3.   */  4 z4 f4 q5 `- B$ ^
  4. typedef enum2 A0 u3 I' F1 k( ]+ _6 T& D# N
  5. {
    4 K# b5 q. v/ z& {3 Y
  6.   GPIO_OType_PP = 0x00,
    9 g, l" @/ `; L; _
  7.   GPIO_OType_OD = 0x01* l: u/ c$ w( N# n5 z9 Y0 t
  8. }GPIOOType_TypeDef;( ?# _" F& [7 ]
  9. #define IS_GPIO_OTYPE(OTYPE) (((OTYPE) == GPIO_OType_PP) || ((OTYPE) == GPIO_OType_OD))
复制代码

- H3 a1 h8 m$ ~* \) \3 GGPIO输出速度
2 w3 p: w6 F6 l0 E) X. j; j
) a0 y/ ?8 t, q3 B7 _& H& ?
  1. /**
    3 x- G) p/ X/ o; K& k
  2.   * @brief  GPIO Output Maximum frequency enumeration % ?" h" b# t8 }3 P
  3.   */  
    ( U/ y! D4 s  ~  R$ b+ W# d3 j3 K
  4. typedef enum3 E( `7 s0 k3 P) J7 d3 Q0 l
  5. { 8 k, X$ W& Y- o; F- |
  6.   GPIO_Low_Speed     = 0x00, /*!< Low speed    */
    $ }# X' v5 M# w
  7.   GPIO_Medium_Speed  = 0x01, /*!< Medium speed */5 S+ ~4 h/ e. B. o# \- s' M( ^
  8.   GPIO_Fast_Speed    = 0x02, /*!< Fast speed   */6 Z. P0 e# p5 ]4 {0 o9 |1 H
  9.   GPIO_High_Speed    = 0x03  /*!< High speed   */
    5 I3 _8 `( ~4 E( B& V: r5 m9 f
  10. }GPIOSpeed_TypeDef;& Y  Z' O& i1 X- d, ]

  11. 3 W' _$ c4 P9 {4 X' z$ p% t+ Z
  12. /* Add legacy definition */
    9 N2 I% m$ a  D  x" d
  13. #define  GPIO_Speed_2MHz    GPIO_Low_Speed   
    6 s0 ?" W( W. h, O! w
  14. #define  GPIO_Speed_25MHz   GPIO_Medium_Speed 5 F) e/ Z, i1 h1 w3 q. Y, V( J
  15. #define  GPIO_Speed_50MHz   GPIO_Fast_Speed / S) S) ~4 p' B: T
  16. #define  GPIO_Speed_100MHz  GPIO_High_Speed  9 C+ z! W4 B$ Z

  17. + g& W/ K9 d0 a% C8 T! G3 h+ J  q
  18. #define IS_GPIO_SPEED(SPEED) (((SPEED) == GPIO_Low_Speed) || ((SPEED) == GPIO_Medium_Speed) || \
    % S2 y. _8 z: V$ Z
  19.                               ((SPEED) == GPIO_Fast_Speed)||  ((SPEED) == GPIO_High_Speed))
复制代码

9 H4 h8 ^: K! XGPIO上下拉
: C6 f: W  A$ O8 B" _8 @. x/ j

/ S9 y  o4 T$ F) r
  1. /**
    : X& b" V2 T$ M3 B: B# C% U2 E. D  J/ S
  2.   * @brief  GPIO Configuration PullUp PullDown enumeration 2 }9 y* ^8 q: }  L" A/ d
  3.   */
    $ @' Z  x  y# M$ H7 |9 ?; D1 q
  4. typedef enum0 d3 r) D& C. K) Y
  5. { # w% x2 M7 ]( o" G2 D5 ]0 H  o9 r
  6.   GPIO_PuPd_NOPULL = 0x00,
    # n' M2 O7 O7 H# Q/ O
  7.   GPIO_PuPd_UP     = 0x01,
    & ]+ V2 d7 N. B- V) e
  8.   GPIO_PuPd_DOWN   = 0x02* y: ^: a. B$ K' v6 E
  9. }GPIOPuPd_TypeDef;4 x3 r6 A5 e# ^# v' D
  10. #define IS_GPIO_PUPD(PUPD) (((PUPD) == GPIO_PuPd_NOPULL) || ((PUPD) == GPIO_PuPd_UP) || \
    2 L) c  G/ S* [- E0 A2 ~- [  I
  11.                             ((PUPD) == GPIO_PuPd_DOWN)), g. w  W8 c  S' X/ j/ A
复制代码
) {/ V7 y; I+ t4 q+ d" V# F. @
GPIO置位和复位; M  ?: W8 B! S  Y6 O/ f) A. c, ~

% m0 C+ o$ Z# {( M
  1. /**
    0 R0 x- B2 M! R( k/ r- T, K/ N
  2.   * @brief  GPIO Bit SET and Bit RESET enumeration : N' O! F6 x3 Z! ~$ _
  3.   */ - A% X& A% K2 v  F. U
  4. typedef enum
    $ {; O9 G: u) f
  5. {
    " h7 L# ~+ {: V  K2 N
  6.   Bit_RESET = 0,/ F6 ]( t  {0 Z" X. s* Y
  7.   Bit_SET1 c( N; w! p) K
  8. }BitAction;
    9 ?: [* _4 d, w  P
  9. #define IS_GPIO_BIT_ACTION(ACTION) (((ACTION) == Bit_RESET) || ((ACTION) == Bit_SET))
复制代码

( C; Y$ v4 {# e% E/ _) `GPIO初始化结构体类型声明, ]" `3 j& E) C
! u8 S( b8 V, g6 Q
  1. /**
    / R6 R+ i& o4 u4 c6 h! V
  2.   * @brief   GPIO Init structure definition  - M: l" N0 `- d( v5 n
  3.   */ ! k, _+ O4 ?6 |3 B
  4. typedef struct' h/ u# W! T/ W6 D7 c4 a
  5. {! K6 Y6 W6 A" N
  6.   uint32_t GPIO_Pin;              /*!< Specifies the GPIO pins to be configured.
    8 q! b& I  n6 k3 F
  7.                                        This parameter can be any value of @ref GPIO_pins_define */
    4 c. C* d9 t. q% P

  8. 6 B* M; ]  ?) c
  9.   GPIOMode_TypeDef GPIO_Mode;     /*!< Specifies the operating mode for the selected pins." s  U. v# u) H( B& `* r
  10.                                        This parameter can be a value of @ref GPIOMode_TypeDef */
    / t+ g% y& w4 A
  11. ( T' p4 y* y" g; @
  12.   GPIOSpeed_TypeDef GPIO_Speed;   /*!< Specifies the speed for the selected pins.
    ! S8 a$ F/ I5 j5 ^& W
  13.                                        This parameter can be a value of @ref GPIOSpeed_TypeDef */6 O3 X6 s. T; z  k) ]* m; W

  14. ' U* g% \. A8 O9 n; e, S
  15.   GPIOOType_TypeDef GPIO_OType;   /*!< Specifies the operating output type for the selected pins.0 d  Q1 ^, O7 d- ^  L; y4 Z+ c- r
  16.                                        This parameter can be a value of @ref GPIOOType_TypeDef */
    6 ]+ L; i. j8 R$ T

  17. 3 b4 i5 K* a. b7 `  X: z' O
  18.   GPIOPuPd_TypeDef GPIO_PuPd;     /*!< Specifies the operating Pull-up/Pull down for the selected pins.$ q+ z7 O' R6 j' A$ N! X! c
  19.                                        This parameter can be a value of @ref GPIOPuPd_TypeDef */
    : u7 |7 }4 J5 p
  20. }GPIO_InitTypeDef;
复制代码
  F) p% `& L% U) L( [
03. GPIO相关宏

# b9 B& M* X' x- F/ U+ p* r判断是否为合法的GPIO外设
( q6 S: X7 H9 a  e7 C4 E) p; G, P( B" I$ t* x1 h1 p; ?
  1. #define IS_GPIO_ALL_PERIPH(PERIPH) (((PERIPH) == GPIOA) || \
    0 d& Y4 ?  M. Y, {7 Z- Q: }
  2.                                     ((PERIPH) == GPIOB) || \
    & @& M* i* j: a- u/ P
  3.                                     ((PERIPH) == GPIOC) || \
    4 B8 T  p( T6 m" z  S' J
  4.                                     ((PERIPH) == GPIOD) || \- \( p7 m2 R5 w; g# r" W
  5.                                     ((PERIPH) == GPIOE) || \. ~9 D+ B8 Y/ w* B% a
  6.                                     ((PERIPH) == GPIOF) || \
    0 i3 m! ^7 V5 s8 [1 g" v3 ]4 B
  7.                                     ((PERIPH) == GPIOG) || \/ P1 Q# L+ P1 d9 @9 k" h
  8.                                     ((PERIPH) == GPIOH) || \
    8 K5 a0 I' h  H0 R2 i
  9.                                     ((PERIPH) == GPIOI) || \
    ( _. g  ^, s) n" B" W) a
  10.                                     ((PERIPH) == GPIOJ) || \
    : ?! l+ ]; [, w
  11.                                     ((PERIPH) == GPIOK))
复制代码

5 i9 p; \6 W/ w. b+ AGPIO合法的引脚
- E, B' @, r* Y5 P

3 s+ I6 p3 n4 N- V+ X! Q
  1. /** @defgroup GPIO_pins_define
    1 A+ F, C9 N) a$ E9 @; Z8 W, J# j
  2.   * @{
    4 h$ s& N  [! |
  3.   */
    # S# T4 n: B1 Z9 z, c
  4. #define GPIO_Pin_0                 ((uint16_t)0x0001)  /* Pin 0 selected */" ~/ ~3 k( w, @- Y$ t
  5. #define GPIO_Pin_1                 ((uint16_t)0x0002)  /* Pin 1 selected */) c  u9 ?" a1 `1 o
  6. #define GPIO_Pin_2                 ((uint16_t)0x0004)  /* Pin 2 selected */
    ; k* F/ b9 {5 |
  7. #define GPIO_Pin_3                 ((uint16_t)0x0008)  /* Pin 3 selected */
    ; S( H" o0 x0 \
  8. #define GPIO_Pin_4                 ((uint16_t)0x0010)  /* Pin 4 selected */, J: ?& J1 w3 C( k
  9. #define GPIO_Pin_5                 ((uint16_t)0x0020)  /* Pin 5 selected */- z4 u9 @$ L7 g5 ^: [
  10. #define GPIO_Pin_6                 ((uint16_t)0x0040)  /* Pin 6 selected */
    * v$ v+ `# I3 w8 j9 c: S
  11. #define GPIO_Pin_7                 ((uint16_t)0x0080)  /* Pin 7 selected */4 o9 ?* i% h1 y. N: K  g( V
  12. #define GPIO_Pin_8                 ((uint16_t)0x0100)  /* Pin 8 selected */- w3 d3 g0 }  w$ Y3 N! N
  13. #define GPIO_Pin_9                 ((uint16_t)0x0200)  /* Pin 9 selected */
    $ Q2 Q5 ^, q/ T6 c4 W
  14. #define GPIO_Pin_10                ((uint16_t)0x0400)  /* Pin 10 selected */
    7 s, i) n" a5 m% |4 x: n3 L
  15. #define GPIO_Pin_11                ((uint16_t)0x0800)  /* Pin 11 selected */' A6 ^$ ^4 j5 ]8 t9 k/ N
  16. #define GPIO_Pin_12                ((uint16_t)0x1000)  /* Pin 12 selected */
    4 R" F# l) a3 l1 {# F
  17. #define GPIO_Pin_13                ((uint16_t)0x2000)  /* Pin 13 selected */6 o3 }3 ^2 I% D4 c# K
  18. #define GPIO_Pin_14                ((uint16_t)0x4000)  /* Pin 14 selected */
    4 F9 h& p4 i4 C, ~4 l+ @
  19. #define GPIO_Pin_15                ((uint16_t)0x8000)  /* Pin 15 selected */- ]3 c, e! K4 |. o. w; @9 n- _3 M" {
  20. #define GPIO_Pin_All               ((uint16_t)0xFFFF)  /* All pins selected */: t7 q# H" R. O

  21. " N7 k# y# x2 J, y& A& S
  22. #define GPIO_PIN_MASK              ((uint32_t)0x0000FFFF) /* PIN mask for assert test */4 }  A3 S3 Y$ p7 u1 v  v
  23. #define IS_GPIO_PIN(PIN)           (((PIN) & GPIO_PIN_MASK ) != (uint32_t)0x00): j! h( E, w& E0 c3 _
  24. #define IS_GET_GPIO_PIN(PIN) (((PIN) == GPIO_Pin_0) || \( [+ X( ^, O$ ~- P1 x/ P6 E
  25.                               ((PIN) == GPIO_Pin_1) || \
    ) o- [' _: Q2 a
  26.                               ((PIN) == GPIO_Pin_2) || \' n4 K' u5 d/ ~0 Q8 o
  27.                               ((PIN) == GPIO_Pin_3) || \+ ]; x2 N7 k( j" l$ T( ~- b
  28.                               ((PIN) == GPIO_Pin_4) || \
    + J! C  f# |" U( Y( V& r. }8 u
  29.                               ((PIN) == GPIO_Pin_5) || \# i3 P: b$ x- R2 u: {+ }
  30.                               ((PIN) == GPIO_Pin_6) || \
    ; B2 Y. V8 Z/ o' R8 @* m
  31.                               ((PIN) == GPIO_Pin_7) || \: H/ q( W0 ?8 J- B* g" y
  32.                               ((PIN) == GPIO_Pin_8) || \
    8 t6 H5 L4 x% g* P
  33.                               ((PIN) == GPIO_Pin_9) || \6 m$ g( d" g* i
  34.                               ((PIN) == GPIO_Pin_10) || \
    3 l6 ]8 C4 j% @8 `
  35.                               ((PIN) == GPIO_Pin_11) || \& J# N: g$ A9 P) f: C' Q% y; x2 J
  36.                               ((PIN) == GPIO_Pin_12) || \
    6 U3 e9 ^/ K2 V( J1 {
  37.                               ((PIN) == GPIO_Pin_13) || \
    6 Z# f2 g7 ]8 ~/ _8 F; e, X
  38.                               ((PIN) == GPIO_Pin_14) || \
      o% g: z$ M" u/ G2 A
  39.                               ((PIN) == GPIO_Pin_15))
复制代码

  y% p1 V& \4 `/ X( a  T1 i; `4 ~GPIO合法的引脚源9 S: d# M  v2 Q6 x/ E' \9 F

7 s3 U! J- x2 V3 t& I+ P% O$ U% d/ k  R, W( U
  1. /** @defgroup GPIO_Pin_sources $ d* r. C: I) Y+ O( ?: R& l, V
  2.   * @{
    " E, k; y1 f. u
  3.   */
    % z; y8 B  ~: `1 d" S
  4. #define GPIO_PinSource0            ((uint8_t)0x00); F0 }5 s) p! J( I5 [
  5. #define GPIO_PinSource1            ((uint8_t)0x01)+ w- W5 o% k" h
  6. #define GPIO_PinSource2            ((uint8_t)0x02)6 r  N3 {9 M1 |) ~) l: U
  7. #define GPIO_PinSource3            ((uint8_t)0x03)
    0 |% o2 e( R0 {
  8. #define GPIO_PinSource4            ((uint8_t)0x04)
    8 C3 r9 {3 g. W" q: u
  9. #define GPIO_PinSource5            ((uint8_t)0x05)! ?* O+ P- P, a( l; {/ n
  10. #define GPIO_PinSource6            ((uint8_t)0x06)
    & l+ p7 \6 Y( O1 `1 X, e: {  q
  11. #define GPIO_PinSource7            ((uint8_t)0x07)
    : x. ?5 h  t$ p9 R3 C
  12. #define GPIO_PinSource8            ((uint8_t)0x08)2 |# M+ ^5 c( n3 J, D, j4 w
  13. #define GPIO_PinSource9            ((uint8_t)0x09)
    & X/ d: d& ]: i  C
  14. #define GPIO_PinSource10           ((uint8_t)0x0A)8 F1 W' C* z0 @
  15. #define GPIO_PinSource11           ((uint8_t)0x0B); B8 w7 E. g9 [8 O6 ~3 _
  16. #define GPIO_PinSource12           ((uint8_t)0x0C)
    # N; {/ R. v: ~9 U* f9 L
  17. #define GPIO_PinSource13           ((uint8_t)0x0D)- R5 A5 y+ \% S& F4 t; J
  18. #define GPIO_PinSource14           ((uint8_t)0x0E)* |% P( c/ N3 J+ Y  l& q
  19. #define GPIO_PinSource15           ((uint8_t)0x0F): b6 z. `7 _6 T( t/ v& k7 P" S; c

  20. 9 B  P2 [1 x: E  y5 `/ F5 F
  21. #define IS_GPIO_PIN_SOURCE(PINSOURCE) (((PINSOURCE) == GPIO_PinSource0) || \
    + [( U9 z2 K& D, z
  22.                                        ((PINSOURCE) == GPIO_PinSource1) || \
    " U" T4 x% i5 t
  23.                                        ((PINSOURCE) == GPIO_PinSource2) || \
    8 [4 z3 v- v+ |! l
  24.                                        ((PINSOURCE) == GPIO_PinSource3) || \
    ' w4 D' o: d6 E  ~
  25.                                        ((PINSOURCE) == GPIO_PinSource4) || \
    4 B3 v1 V0 }3 N) _! [/ C4 {
  26.                                        ((PINSOURCE) == GPIO_PinSource5) || \/ o4 h( B6 N# e; g
  27.                                        ((PINSOURCE) == GPIO_PinSource6) || \0 y% d, A+ H" A& J% ^1 a2 s
  28.                                        ((PINSOURCE) == GPIO_PinSource7) || \, g8 E. y$ s! R, A; }! b3 `
  29.                                        ((PINSOURCE) == GPIO_PinSource8) || \
    9 z% T) Z- v+ @  _
  30.                                        ((PINSOURCE) == GPIO_PinSource9) || \, m( R* f5 s: R  Q
  31.                                        ((PINSOURCE) == GPIO_PinSource10) || \$ g" @+ r# Q, n  B, ?, W2 K- R, i
  32.                                        ((PINSOURCE) == GPIO_PinSource11) || \) A0 W/ W" Q' ^+ i+ J+ Z
  33.                                        ((PINSOURCE) == GPIO_PinSource12) || \9 ]# z- T: p; c& @2 r3 c% n" n
  34.                                        ((PINSOURCE) == GPIO_PinSource13) || \/ @5 W. j4 M/ y4 u, p0 E* \9 s
  35.                                        ((PINSOURCE) == GPIO_PinSource14) || \
    8 c0 }  t- Y) M* Q) `: L' c
  36.                                        ((PINSOURCE) == GPIO_PinSource15))
复制代码
# B* u& l# n. M% _) ]
04. GPIO相关函数; Y! L. d: B; ~, {
  1. /*  Function used to set the GPIO configuration to the default reset state ****/
    , h& X) v/ g1 D
  2. //配置GPIO为默认状态: ]4 p3 a( G. [0 ?+ Z* z" G
  3. void GPIO_DeInit(GPIO_TypeDef* GPIOx);
    # S  Y0 B. @" s# D) H: i

  4. ; E% e" `4 A/ B5 Y* o
  5. /* Initialization and Configuration functions *********************************/
    7 H. A  x) q4 A0 M; ~1 I
  6. //GPIO初始化' Z" `$ j; o4 ?; z2 B# b
  7. void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
    ; q- w6 D, g0 `2 ?  Q$ \) Q, L
  8. //GPIO结构体初始化. R: W# \" j) G5 g3 E
  9. void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);7 {% Z7 \- O+ L+ k1 R8 u$ w
  10. //GPIO锁配置& ^5 H9 t  h' _
  11. void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    1 w/ Q9 `# B' U3 p

  12. - u# ?, E8 e) C6 t4 z
  13. /* GPIO Read and Write functions **********************************************/
    0 ?# {: e6 W2 ^( V5 H
  14. //GPIO读写函数" W# n: w: P2 L- g" }7 h+ f4 f
  15. uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    # u& M, c8 E4 S7 i3 U7 b# x
  16. uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
    . p5 D8 U. V4 W: X
  17. uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);! `' e9 ]: A1 T- k4 T& G6 v
  18. uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
    ! A; S! |' }6 D1 ~& l$ p
  19. void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);5 P/ b: E$ f, Q
  20. void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    $ I3 P. i" G" G
  21. void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);9 ]9 A1 Q9 `& G* ]
  22. void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
      P6 N* t7 {; }! H0 o# v7 n. i% |
  23. void GPIO_ToggleBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);) P* H3 P8 C3 P1 s' ^
  24. ( [. {/ ]7 R  C
  25. /* GPIO Alternate functions configuration function ****************************/9 s% v4 x4 Z0 i- C* E4 Z" ?
  26. void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF);
复制代码

& H, \% v, N1 H$ ]05. GPIO其它相关3 W1 D2 V7 r& L& w1 K
stm32f4xx.h文件中
2 ?! Z8 ^1 T' T3 W1 T7 a* b( Q
5 ~0 Z1 S3 W2 q. Q0 I* Q通用GPIO结构体封装/ \; @+ a- ?0 u% j1 U' c6 R# {

2 a2 K( i& ^# m* S
  1. typedef struct
    # C7 q0 h* W# I  t7 c
  2. {: a3 h* k4 j) H* U6 M1 Y- V9 K! ~
  3.   __IO uint32_t MODER;    /*!< GPIO port mode register,               Address offset: 0x00      */* R% r/ h  D( o+ N. m3 a
  4.   __IO uint32_t OTYPER;   /*!< GPIO port output type register,        Address offset: 0x04      */1 W! T# o$ ]: R: H
  5.   __IO uint32_t OSPEEDR;  /*!< GPIO port output speed register,       Address offset: 0x08      */4 D; i& `( ~. W: G  d$ M# |
  6.   __IO uint32_t PUPDR;    /*!< GPIO port pull-up/pull-down register,  Address offset: 0x0C      */
    ' S* t2 v6 Q) h) T, C( V+ v
  7.   __IO uint32_t IDR;      /*!< GPIO port input data register,         Address offset: 0x10      */
    2 N0 S3 F$ W0 B2 j
  8.   __IO uint32_t ODR;      /*!< GPIO port output data register,        Address offset: 0x14      */
    - m# P/ P! e( `) p' X
  9.   __IO uint16_t BSRRL;    /*!< GPIO port bit set/reset low register,  Address offset: 0x18      */
    ; o7 [- c/ T! Z
  10.   __IO uint16_t BSRRH;    /*!< GPIO port bit set/reset high register, Address offset: 0x1A      */
    ; T! _  |/ I; K- T5 J9 i
  11.   __IO uint32_t LCKR;     /*!< GPIO port configuration lock register, Address offset: 0x1C      */* c" h. P/ X) K1 r% V0 X, ~1 w" P$ G
  12.   __IO uint32_t AFR[2];   /*!< GPIO alternate function registers,     Address offset: 0x20-0x24 */
    6 \% I. Q/ ]' k& [. |$ {# E
  13. } GPIO_TypeDef;
复制代码

2 {( m& S& v: l  Z  |4 b$ C$ qGPIO基地址
( \. t) x- k9 E/ ~* X- p/ V" [* q
; h  ?  ]' y4 d! V8 x& @
  1. /*!< AHB1 peripherals */" N4 z% D7 s' D1 V8 U
  2. #define GPIOA_BASE            (AHB1PERIPH_BASE + 0x0000)
    4 a. }* [( M8 z: P' q* m1 ?
  3. #define GPIOB_BASE            (AHB1PERIPH_BASE + 0x0400)
    % x2 P$ }/ S, ^
  4. #define GPIOC_BASE            (AHB1PERIPH_BASE + 0x0800)( K! j. A4 O  V% p4 c. h
  5. #define GPIOD_BASE            (AHB1PERIPH_BASE + 0x0C00)
    0 p$ e7 x2 u8 @  c, {5 V
  6. #define GPIOE_BASE            (AHB1PERIPH_BASE + 0x1000): O4 r  {9 d8 x& i) f  {* U
  7. #define GPIOF_BASE            (AHB1PERIPH_BASE + 0x1400)
    + Y1 j" y! z" w3 ]6 D
  8. #define GPIOG_BASE            (AHB1PERIPH_BASE + 0x1800)
    / a( m+ x  o8 g9 `4 ]  z" e
  9. #define GPIOH_BASE            (AHB1PERIPH_BASE + 0x1C00)2 v" q: f9 I, ]4 ~0 I
  10. #define GPIOI_BASE            (AHB1PERIPH_BASE + 0x2000)
    + |, m7 }/ d/ o4 h6 `6 }- Y
  11. #define GPIOJ_BASE            (AHB1PERIPH_BASE + 0x2400)
      l8 v1 z$ w1 Q% C5 ~/ Y
  12. #define GPIOK_BASE            (AHB1PERIPH_BASE + 0x2800)
复制代码
! U# ?0 U7 ~$ w7 H( J% L5 J/ ]
GPIO起始地址
. Z, @8 \, Q. k4 B* j0 e
0 L8 {& |5 T* X! m' e
  1. #define GPIOA               ((GPIO_TypeDef *) GPIOA_BASE)
    9 e$ J$ C) }/ V1 V. \5 r, z
  2. #define GPIOB               ((GPIO_TypeDef *) GPIOB_BASE)* E0 Y! ]. O( H% ^* A$ \1 O
  3. #define GPIOC               ((GPIO_TypeDef *) GPIOC_BASE)- H, J7 Y) D6 _% @5 W
  4. #define GPIOD               ((GPIO_TypeDef *) GPIOD_BASE), W; \, \5 Y2 V( F5 o9 a
  5. #define GPIOE               ((GPIO_TypeDef *) GPIOE_BASE)) {. \0 h+ d, s( m7 ?
  6. #define GPIOF               ((GPIO_TypeDef *) GPIOF_BASE)* S7 k' U/ y  u
  7. #define GPIOG               ((GPIO_TypeDef *) GPIOG_BASE)
    5 l2 \8 N  t: F0 }' ^; U6 Y
  8. #define GPIOH               ((GPIO_TypeDef *) GPIOH_BASE)
    ( Z8 v& i/ r% l0 [4 k- F, e! N+ L
  9. #define GPIOI               ((GPIO_TypeDef *) GPIOI_BASE)
      R2 a0 s6 B* Z! T) Q" z
  10. #define GPIOJ               ((GPIO_TypeDef *) GPIOJ_BASE): M6 u0 y  \- K7 o. Q: }! h3 W
  11. #define GPIOK               ((GPIO_TypeDef *) GPIOK_BASE)
复制代码
$ L, o2 u1 ?4 e' n
GPIO寄存器相关位
5 K& U* n6 M" O+ {* ^9 Y# Y% Z
# X0 L6 K5 l* @1 C9 g; @
  1. /******************************************************************************/
    2 A! Q2 K  k& l1 F8 X: |
  2. /*                                                                            */3 T/ f% B1 v8 f1 D9 [. y/ h. b
  3. /*                            General Purpose I/O                             */
    # l7 M4 }+ _7 b% V; R0 i
  4. /*                                                                            */
    / U/ X" \$ y$ x2 k" O
  5. /******************************************************************************/
    # c( ]! {- `# }& V7 v; Y9 ?2 t
  6. /******************  Bits definition for GPIO_MODER register  *****************/; ?% r8 a- ?/ Y7 @7 t# ]2 u+ J
  7. #define GPIO_MODER_MODER0                    ((uint32_t)0x00000003)
    ' Z, V+ O, t' L  l$ ]3 w" d; U
  8. #define GPIO_MODER_MODER0_0                  ((uint32_t)0x00000001)
    3 a8 D! u" Z+ x5 b0 r) K' E
  9. #define GPIO_MODER_MODER0_1                  ((uint32_t)0x00000002)* ^3 P. \' H+ r$ B
  10. 8 H. K3 F0 Z6 U8 q* Z7 A
  11. #define GPIO_MODER_MODER1                    ((uint32_t)0x0000000C)
    . a' P: k+ C  G/ t$ ~  O
  12. #define GPIO_MODER_MODER1_0                  ((uint32_t)0x00000004)$ M" K8 o2 I$ j
  13. #define GPIO_MODER_MODER1_1                  ((uint32_t)0x00000008)
    " H  u# k+ ~$ T
  14. . \& C6 w  Y! m- u; z) ]6 z, ?) `
  15. #define GPIO_MODER_MODER2                    ((uint32_t)0x00000030)
    ! p9 ~5 q2 Q  E5 k3 b" g" D! B4 |
  16. #define GPIO_MODER_MODER2_0                  ((uint32_t)0x00000010), b$ Y- k' c% F( x' h# Z
  17. #define GPIO_MODER_MODER2_1                  ((uint32_t)0x00000020)+ K( s3 x) S9 b2 N( L

  18. 1 p4 q+ r$ I7 G4 Z
  19. #define GPIO_MODER_MODER3                    ((uint32_t)0x000000C0)
    ' D7 f, d0 f- [$ I! n5 g% [
  20. #define GPIO_MODER_MODER3_0                  ((uint32_t)0x00000040)* }! t+ m( r: _. g
  21. #define GPIO_MODER_MODER3_1                  ((uint32_t)0x00000080); {; q* H" t1 x' E; S9 D
  22. / }1 D# F5 G. @7 W8 v
  23. #define GPIO_MODER_MODER4                    ((uint32_t)0x00000300)) W1 U3 G% w; R4 |
  24. #define GPIO_MODER_MODER4_0                  ((uint32_t)0x00000100)
    5 h" r0 v- Y: O% Y4 H
  25. #define GPIO_MODER_MODER4_1                  ((uint32_t)0x00000200)' ?; n7 T: C; k! Z1 g
  26. ; C3 Y7 p. E3 _
  27. #define GPIO_MODER_MODER5                    ((uint32_t)0x00000C00)
    # _8 n, g  i" o( h/ l7 Q
  28. #define GPIO_MODER_MODER5_0                  ((uint32_t)0x00000400)7 z* k" ?. r! z6 A& M
  29. #define GPIO_MODER_MODER5_1                  ((uint32_t)0x00000800)
    ( b( c) q6 `& R1 }/ i' [6 ~- o+ D
  30. 4 s2 k2 q$ _% R( m2 z  K- n
  31. #define GPIO_MODER_MODER6                    ((uint32_t)0x00003000)5 i5 u$ L0 c$ z# O
  32. #define GPIO_MODER_MODER6_0                  ((uint32_t)0x00001000)
    * l! \) d2 t0 I7 A( W6 Z+ Q3 p
  33. #define GPIO_MODER_MODER6_1                  ((uint32_t)0x00002000)0 e. k( O$ K/ ^+ X1 b
  34. 7 `1 r! s3 x, S8 H& P6 Z0 C
  35. #define GPIO_MODER_MODER7                    ((uint32_t)0x0000C000)# Q, H: L( H! [" E5 _
  36. #define GPIO_MODER_MODER7_0                  ((uint32_t)0x00004000)
    . I7 b$ f4 s& v& e# X0 g
  37. #define GPIO_MODER_MODER7_1                  ((uint32_t)0x00008000)
    % s9 Q* |/ K3 y' O9 o- i# r) l- V
  38. ; S: Q( b( j( s: s% B
  39. #define GPIO_MODER_MODER8                    ((uint32_t)0x00030000)
    * ~6 i) L9 Y% g) l
  40. #define GPIO_MODER_MODER8_0                  ((uint32_t)0x00010000)
    / `# p2 O4 f5 b* v
  41. #define GPIO_MODER_MODER8_1                  ((uint32_t)0x00020000)
    9 L- W, W" }, E4 I+ g& t' |, I! j9 h
  42. " L& W. t- T& Y% G
  43. #define GPIO_MODER_MODER9                    ((uint32_t)0x000C0000); o$ E1 W- e( B+ T/ ]. |
  44. #define GPIO_MODER_MODER9_0                  ((uint32_t)0x00040000)6 D" c5 l/ N) \6 j# d
  45. #define GPIO_MODER_MODER9_1                  ((uint32_t)0x00080000)
    7 S1 \0 ?# D! B$ C  P$ ?; I8 y

  46. , N# k5 S2 {: m4 c- `
  47. #define GPIO_MODER_MODER10                   ((uint32_t)0x00300000)
    7 F6 L$ J5 e0 Y4 K- @/ t
  48. #define GPIO_MODER_MODER10_0                 ((uint32_t)0x00100000)
    . G" ]- h' B- }0 Z& }* G, T0 U
  49. #define GPIO_MODER_MODER10_1                 ((uint32_t)0x00200000)( _5 A" B1 V2 s/ V; |& \: k

  50. % L* ~* E1 y. Y% h  ]/ m4 u
  51. #define GPIO_MODER_MODER11                   ((uint32_t)0x00C00000)
    & E8 n8 g$ I; M
  52. #define GPIO_MODER_MODER11_0                 ((uint32_t)0x00400000)
    ! ]9 L- b  b$ N
  53. #define GPIO_MODER_MODER11_1                 ((uint32_t)0x00800000)0 v( ~1 b* ~+ g/ d

  54. 9 L/ M! p" U& V! L' @+ H+ }
  55. #define GPIO_MODER_MODER12                   ((uint32_t)0x03000000)" F/ U5 M! ^; q% P. V
  56. #define GPIO_MODER_MODER12_0                 ((uint32_t)0x01000000): \1 q" Z- |' C6 j! \6 S
  57. #define GPIO_MODER_MODER12_1                 ((uint32_t)0x02000000)
    / u4 `) h4 z$ b; M

  58. - i* x% d6 x7 I8 \  P
  59. #define GPIO_MODER_MODER13                   ((uint32_t)0x0C000000)
    / _: B' O3 _6 J1 g! z5 Q* |3 O
  60. #define GPIO_MODER_MODER13_0                 ((uint32_t)0x04000000)% v; A( s$ W: ^+ f2 Q; G: N
  61. #define GPIO_MODER_MODER13_1                 ((uint32_t)0x08000000), M. x3 T. f! U' u3 J. k

  62. " W3 w  {8 F/ U3 \+ `3 b
  63. #define GPIO_MODER_MODER14                   ((uint32_t)0x30000000)8 N. R1 K- z% [8 Q; s. b7 |2 s- d
  64. #define GPIO_MODER_MODER14_0                 ((uint32_t)0x10000000)7 o8 {/ S8 n+ O7 H2 G7 n7 B
  65. #define GPIO_MODER_MODER14_1                 ((uint32_t)0x20000000)
    7 a5 J4 g# P) `
  66.   `* l: b3 U/ t, m- W. E
  67. #define GPIO_MODER_MODER15                   ((uint32_t)0xC0000000)
    * w$ z. X5 E: J( o7 [
  68. #define GPIO_MODER_MODER15_0                 ((uint32_t)0x40000000)# i% S' S2 Q9 A. X* P: n
  69. #define GPIO_MODER_MODER15_1                 ((uint32_t)0x80000000)
    4 i" \0 q) L! x* F4 Z9 X

  70. : t% B1 {  T$ n) a* g: S) \) B
  71. /******************  Bits definition for GPIO_OTYPER register  ****************/
    ( E! h, O! _$ C" r  m% F6 ^
  72. #define GPIO_OTYPER_OT_0                     ((uint32_t)0x00000001)
    ( ]% b; g- I8 K2 @8 U' {7 g+ P
  73. #define GPIO_OTYPER_OT_1                     ((uint32_t)0x00000002)1 s3 k; e2 A, ?$ X6 V8 h) I
  74. #define GPIO_OTYPER_OT_2                     ((uint32_t)0x00000004)
    ) S" \" D3 K: U' n9 f4 e6 ]
  75. #define GPIO_OTYPER_OT_3                     ((uint32_t)0x00000008)2 n/ D7 S" b8 v) y
  76. #define GPIO_OTYPER_OT_4                     ((uint32_t)0x00000010)
    & k9 K- P4 B& [- y7 m
  77. #define GPIO_OTYPER_OT_5                     ((uint32_t)0x00000020)) t, K$ [$ \6 L5 ^
  78. #define GPIO_OTYPER_OT_6                     ((uint32_t)0x00000040)  H: e! @  B0 k) }
  79. #define GPIO_OTYPER_OT_7                     ((uint32_t)0x00000080)8 @# w$ l: b' Q  U* B. Y7 a2 J8 S1 E! C
  80. #define GPIO_OTYPER_OT_8                     ((uint32_t)0x00000100)
    3 M( {3 {' X; d4 N  w; g5 D" s. K
  81. #define GPIO_OTYPER_OT_9                     ((uint32_t)0x00000200)  ?$ A; Q+ u# Z! [# I
  82. #define GPIO_OTYPER_OT_10                    ((uint32_t)0x00000400)) Q1 ~0 h. `( ^
  83. #define GPIO_OTYPER_OT_11                    ((uint32_t)0x00000800)
    + i: C% b% G2 h+ _) a9 ^$ w
  84. #define GPIO_OTYPER_OT_12                    ((uint32_t)0x00001000)
    3 A' h  a0 K) d+ V' B; B
  85. #define GPIO_OTYPER_OT_13                    ((uint32_t)0x00002000)
    : B. r. C9 z, G  K7 ^
  86. #define GPIO_OTYPER_OT_14                    ((uint32_t)0x00004000)  v/ w) `% i9 m# `4 v7 y
  87. #define GPIO_OTYPER_OT_15                    ((uint32_t)0x00008000)% [" t1 G, c1 E2 v& _' r6 y" a3 ?6 G
  88. 4 x8 w! k% v) |( b0 \" d& Q/ T5 \' {
  89. /******************  Bits definition for GPIO_OSPEEDR register  ***************/
    ) |% j( h5 e. N
  90. #define GPIO_OSPEEDER_OSPEEDR0               ((uint32_t)0x00000003)
    2 Y% Z  P9 V: t
  91. #define GPIO_OSPEEDER_OSPEEDR0_0             ((uint32_t)0x00000001)( H& U7 y5 j0 m7 `& j+ N+ Z
  92. #define GPIO_OSPEEDER_OSPEEDR0_1             ((uint32_t)0x00000002)9 a8 F" Z6 }+ V0 E: S9 Q( u* F4 [# l

  93. ) w- [( A! N" Q. D( Q- T; b) |# L8 [; p
  94. #define GPIO_OSPEEDER_OSPEEDR1               ((uint32_t)0x0000000C)
    % [8 q  E4 x4 m9 \* w
  95. #define GPIO_OSPEEDER_OSPEEDR1_0             ((uint32_t)0x00000004)
    # ?, D2 Z; }( t7 c  X: D
  96. #define GPIO_OSPEEDER_OSPEEDR1_1             ((uint32_t)0x00000008)
    ! r0 }  _3 f/ L" r/ V* ^

  97. * A9 I" r& I% h2 A
  98. #define GPIO_OSPEEDER_OSPEEDR2               ((uint32_t)0x00000030)
    ! p% b9 X: U, ]+ y+ `, w& T
  99. #define GPIO_OSPEEDER_OSPEEDR2_0             ((uint32_t)0x00000010)' G7 M% d+ M( t, d7 G3 \
  100. #define GPIO_OSPEEDER_OSPEEDR2_1             ((uint32_t)0x00000020)7 X$ _9 h9 K) h' Z* f+ X6 ^

  101. 5 W) l: @* _+ H; k* {
  102. #define GPIO_OSPEEDER_OSPEEDR3               ((uint32_t)0x000000C0)
    1 b2 |0 B2 ]5 A& [& C" J; I3 d
  103. #define GPIO_OSPEEDER_OSPEEDR3_0             ((uint32_t)0x00000040)
    ) A, v3 `) b. e3 @7 ^
  104. #define GPIO_OSPEEDER_OSPEEDR3_1             ((uint32_t)0x00000080)
    7 |& `) ]0 k, T# g/ P6 e% P
  105.   y% f, V3 U6 ]- M- x
  106. #define GPIO_OSPEEDER_OSPEEDR4               ((uint32_t)0x00000300)
    4 \9 a3 F- B) Q
  107. #define GPIO_OSPEEDER_OSPEEDR4_0             ((uint32_t)0x00000100)# i! c/ t( V, K, F. i6 k! J1 q/ i
  108. #define GPIO_OSPEEDER_OSPEEDR4_1             ((uint32_t)0x00000200). s0 `5 \9 L, [

  109. : D- [. ]7 G0 ^# a
  110. #define GPIO_OSPEEDER_OSPEEDR5               ((uint32_t)0x00000C00)' n+ i) G9 a5 |
  111. #define GPIO_OSPEEDER_OSPEEDR5_0             ((uint32_t)0x00000400)
    . Z' }& ^9 h2 `
  112. #define GPIO_OSPEEDER_OSPEEDR5_1             ((uint32_t)0x00000800)
    7 d  b+ Q# W# s3 e1 N) L) u& q

  113. ( I2 Z* S1 y: d! b% r5 P. N
  114. #define GPIO_OSPEEDER_OSPEEDR6               ((uint32_t)0x00003000)
    9 c8 |8 h. {% E) ~
  115. #define GPIO_OSPEEDER_OSPEEDR6_0             ((uint32_t)0x00001000)5 M% ?5 w, w& C/ l6 j( O% `. n' X% S
  116. #define GPIO_OSPEEDER_OSPEEDR6_1             ((uint32_t)0x00002000)- v& o3 o" A1 h

  117. " G2 L* A" A) F5 N' V( ?6 d1 c7 C
  118. #define GPIO_OSPEEDER_OSPEEDR7               ((uint32_t)0x0000C000); O& I* K" B/ b) a/ C
  119. #define GPIO_OSPEEDER_OSPEEDR7_0             ((uint32_t)0x00004000)
    % u4 Z; X, O$ d4 o1 \
  120. #define GPIO_OSPEEDER_OSPEEDR7_1             ((uint32_t)0x00008000)
    8 j0 A  j6 P3 T) H4 ]3 S  B
  121. : t8 x8 @( y  t7 h
  122. #define GPIO_OSPEEDER_OSPEEDR8               ((uint32_t)0x00030000)# \, z8 q: O! j, i
  123. #define GPIO_OSPEEDER_OSPEEDR8_0             ((uint32_t)0x00010000)
    " b; A2 w$ j- r7 E. H" n% E, Y
  124. #define GPIO_OSPEEDER_OSPEEDR8_1             ((uint32_t)0x00020000)
    6 m/ L8 u4 A) g( }9 E
  125. ; c0 [& {. o$ `; }0 C8 O
  126. #define GPIO_OSPEEDER_OSPEEDR9               ((uint32_t)0x000C0000)
    " C- ]8 N7 A4 e$ h
  127. #define GPIO_OSPEEDER_OSPEEDR9_0             ((uint32_t)0x00040000)5 a3 N6 x# Z- Z6 m2 c# x  s
  128. #define GPIO_OSPEEDER_OSPEEDR9_1             ((uint32_t)0x00080000)
    & ]3 ^3 E( V, L$ q% K

  129. , W( z8 ~. r+ g2 B
  130. #define GPIO_OSPEEDER_OSPEEDR10              ((uint32_t)0x00300000)
    $ `, \  p' y: n9 {: i" e, m
  131. #define GPIO_OSPEEDER_OSPEEDR10_0            ((uint32_t)0x00100000)# H! r9 Q* O( D  e8 o' o4 ^
  132. #define GPIO_OSPEEDER_OSPEEDR10_1            ((uint32_t)0x00200000)
    " H- p* O* B( T; D

  133. / t1 {5 N- `0 r% \% d. c' M& ~0 s
  134. #define GPIO_OSPEEDER_OSPEEDR11              ((uint32_t)0x00C00000)( V$ o4 C( S3 n" U- T  i
  135. #define GPIO_OSPEEDER_OSPEEDR11_0            ((uint32_t)0x00400000)
    ( F6 O" `1 p: q) o4 Z) D" Z
  136. #define GPIO_OSPEEDER_OSPEEDR11_1            ((uint32_t)0x00800000)
    0 n. Z% X! O4 \
  137. 2 A# d3 l, r. n: T8 M( ^
  138. #define GPIO_OSPEEDER_OSPEEDR12              ((uint32_t)0x03000000)
    - e3 T9 k0 _) H% h; i: J6 }$ g
  139. #define GPIO_OSPEEDER_OSPEEDR12_0            ((uint32_t)0x01000000)$ c. a$ L, D/ b
  140. #define GPIO_OSPEEDER_OSPEEDR12_1            ((uint32_t)0x02000000)% {" _/ }7 [; M. j: H* Q) z& Y

  141. , K0 ~$ ~3 F" X9 Y4 s5 h: ^4 P6 E
  142. #define GPIO_OSPEEDER_OSPEEDR13              ((uint32_t)0x0C000000)
    7 W7 f. m6 x) D4 j9 K
  143. #define GPIO_OSPEEDER_OSPEEDR13_0            ((uint32_t)0x04000000)
    7 p( x0 Y% K: ?0 U6 l4 a
  144. #define GPIO_OSPEEDER_OSPEEDR13_1            ((uint32_t)0x08000000), c; @1 ~9 K( `: i  q/ G7 U
  145. 8 h! T$ Y  c: o) X
  146. #define GPIO_OSPEEDER_OSPEEDR14              ((uint32_t)0x30000000)0 X: n+ \& S2 V
  147. #define GPIO_OSPEEDER_OSPEEDR14_0            ((uint32_t)0x10000000)
    0 ^/ V! i' S8 V5 j7 v2 k( y
  148. #define GPIO_OSPEEDER_OSPEEDR14_1            ((uint32_t)0x20000000)2 S; _+ ^1 z5 q  _% ~( I
  149. % K  P: h" z: E* q: _
  150. #define GPIO_OSPEEDER_OSPEEDR15              ((uint32_t)0xC0000000), T; X; z* @# {4 D6 f: o
  151. #define GPIO_OSPEEDER_OSPEEDR15_0            ((uint32_t)0x40000000)
    : W6 s' C3 ~1 @2 I$ q& E
  152. #define GPIO_OSPEEDER_OSPEEDR15_1            ((uint32_t)0x80000000)
    6 p  k* S) {( }* P6 g/ o, E
  153. $ _4 S* ?! m. G; o- ^/ o
  154. /******************  Bits definition for GPIO_PUPDR register  *****************/. o; K* z* D+ r5 _+ u0 O
  155. #define GPIO_PUPDR_PUPDR0                    ((uint32_t)0x00000003)
    ( x' g3 S* X: r4 Z- t! F# ?/ m
  156. #define GPIO_PUPDR_PUPDR0_0                  ((uint32_t)0x00000001)% ]5 H3 c" M+ [9 N# \9 k7 T: j
  157. #define GPIO_PUPDR_PUPDR0_1                  ((uint32_t)0x00000002)1 g+ h+ [1 T3 s7 C" R# w
  158. ' p. [* x$ B- X- r
  159. #define GPIO_PUPDR_PUPDR1                    ((uint32_t)0x0000000C)* ?" D4 I( k- s, v8 S9 {
  160. #define GPIO_PUPDR_PUPDR1_0                  ((uint32_t)0x00000004)) \0 i" w8 E$ W1 I' p/ K
  161. #define GPIO_PUPDR_PUPDR1_1                  ((uint32_t)0x00000008)/ |/ K3 P0 o& D% \

  162. ) w7 r/ a, N" o6 g6 G
  163. #define GPIO_PUPDR_PUPDR2                    ((uint32_t)0x00000030)
    1 j1 {1 R' l$ s( N1 Z
  164. #define GPIO_PUPDR_PUPDR2_0                  ((uint32_t)0x00000010)9 d( u2 U9 @" L: t& }
  165. #define GPIO_PUPDR_PUPDR2_1                  ((uint32_t)0x00000020)# D# F; O' Y$ I1 A5 A1 _( _

  166. ' P* S% O8 \6 u$ g
  167. #define GPIO_PUPDR_PUPDR3                    ((uint32_t)0x000000C0)3 [; I1 j8 N& I; m+ f& B: }: I% y
  168. #define GPIO_PUPDR_PUPDR3_0                  ((uint32_t)0x00000040)
    , X9 U1 G8 z5 S: D
  169. #define GPIO_PUPDR_PUPDR3_1                  ((uint32_t)0x00000080)
    : l6 ~3 L5 y. ^* X. I4 v$ ^, E* n* Q
  170. * I* V$ U3 F2 S4 I  t8 b9 j, ]0 T
  171. #define GPIO_PUPDR_PUPDR4                    ((uint32_t)0x00000300)
    # N+ a7 |! B1 l3 f
  172. #define GPIO_PUPDR_PUPDR4_0                  ((uint32_t)0x00000100)" v, K0 `5 ^1 H) w  `
  173. #define GPIO_PUPDR_PUPDR4_1                  ((uint32_t)0x00000200)4 q+ A3 r  [, O# m; S% j

  174. - @$ g! T* a$ v5 S* ?$ V
  175. #define GPIO_PUPDR_PUPDR5                    ((uint32_t)0x00000C00)
    ' Z$ @" J& N* i* x8 g
  176. #define GPIO_PUPDR_PUPDR5_0                  ((uint32_t)0x00000400)9 u" j5 v+ N3 ~3 |9 w7 d8 Q% T7 G
  177. #define GPIO_PUPDR_PUPDR5_1                  ((uint32_t)0x00000800)- R: A8 ~* M8 z3 h: v' h
  178. , H+ g/ F2 I0 ~5 |5 h
  179. #define GPIO_PUPDR_PUPDR6                    ((uint32_t)0x00003000)
    6 D) D6 e% s$ J9 n* u
  180. #define GPIO_PUPDR_PUPDR6_0                  ((uint32_t)0x00001000)
    " d# H, e: {. J  ^' }
  181. #define GPIO_PUPDR_PUPDR6_1                  ((uint32_t)0x00002000)
    ( [) `$ E0 q) h& z4 C: ^4 I% E
  182. 9 T+ H( V+ T4 g6 P" w  v4 l1 D! `
  183. #define GPIO_PUPDR_PUPDR7                    ((uint32_t)0x0000C000)5 D# s2 t: L) O) N- ?6 v. b( r
  184. #define GPIO_PUPDR_PUPDR7_0                  ((uint32_t)0x00004000)
    / F, d0 m+ j$ i' ]. T
  185. #define GPIO_PUPDR_PUPDR7_1                  ((uint32_t)0x00008000)
    / z1 p/ A( i" m! a, G3 [3 E

  186. / z# S/ A0 ^. H' U2 k
  187. #define GPIO_PUPDR_PUPDR8                    ((uint32_t)0x00030000)
    0 Q' Z0 _1 U! X1 w0 c: s
  188. #define GPIO_PUPDR_PUPDR8_0                  ((uint32_t)0x00010000)
    & S+ h( ]: `/ d+ `0 T0 f2 |% n
  189. #define GPIO_PUPDR_PUPDR8_1                  ((uint32_t)0x00020000)
    / e9 A  t2 [' h7 [3 L
  190. & d: X7 j6 @1 j
  191. #define GPIO_PUPDR_PUPDR9                    ((uint32_t)0x000C0000)' }7 s3 t/ q( S. K9 w$ c
  192. #define GPIO_PUPDR_PUPDR9_0                  ((uint32_t)0x00040000)
    / q0 X5 ~% e4 ]  m
  193. #define GPIO_PUPDR_PUPDR9_1                  ((uint32_t)0x00080000). ^# |" a( d5 R2 r' S' p
  194. ( L; I- ^$ x$ ]5 Y. G
  195. #define GPIO_PUPDR_PUPDR10                   ((uint32_t)0x00300000)
    4 b4 E' `0 J% r! A. R) i; y
  196. #define GPIO_PUPDR_PUPDR10_0                 ((uint32_t)0x00100000)6 q; Y2 S( ?' N2 T0 @- ?0 b3 S
  197. #define GPIO_PUPDR_PUPDR10_1                 ((uint32_t)0x00200000)
    ( l' W' X8 x3 k! h; h# H9 U
  198. ! r+ [3 f$ a' c0 S6 A, d
  199. #define GPIO_PUPDR_PUPDR11                   ((uint32_t)0x00C00000)% s  _2 M3 e4 L  p2 t2 }' }+ b
  200. #define GPIO_PUPDR_PUPDR11_0                 ((uint32_t)0x00400000)
      M  F. B$ J) h" Q0 |' C- P, h  S
  201. #define GPIO_PUPDR_PUPDR11_1                 ((uint32_t)0x00800000): l6 E, p3 A! o! y  C  ]* i1 k4 _
  202. - I, Q; v2 `5 f7 `0 R9 ?9 b4 j
  203. #define GPIO_PUPDR_PUPDR12                   ((uint32_t)0x03000000)
    3 @2 ^# x# J7 H0 G$ P
  204. #define GPIO_PUPDR_PUPDR12_0                 ((uint32_t)0x01000000)" s+ t0 Q" u- G, @, ~
  205. #define GPIO_PUPDR_PUPDR12_1                 ((uint32_t)0x02000000)
    8 g9 v' W, Z1 O. U/ D% s7 H
  206. + [$ i  W3 D9 t) s' e7 [
  207. #define GPIO_PUPDR_PUPDR13                   ((uint32_t)0x0C000000)! Z! n" A1 B* W# I1 C1 E7 k
  208. #define GPIO_PUPDR_PUPDR13_0                 ((uint32_t)0x04000000)' A) k9 ]& S9 p/ P
  209. #define GPIO_PUPDR_PUPDR13_1                 ((uint32_t)0x08000000)
    / L. g; y  t- V/ ?3 @) w+ G
  210. $ Y) m1 n9 K3 s$ _/ Q0 E
  211. #define GPIO_PUPDR_PUPDR14                   ((uint32_t)0x30000000)% \  v; t/ W9 E
  212. #define GPIO_PUPDR_PUPDR14_0                 ((uint32_t)0x10000000)* _/ @! C$ l6 J  d. M% R4 N, T: t
  213. #define GPIO_PUPDR_PUPDR14_1                 ((uint32_t)0x20000000)8 }4 J. n; I1 h- B

  214. * i' }# V( T& b2 [, T( n1 j! |
  215. #define GPIO_PUPDR_PUPDR15                   ((uint32_t)0xC0000000)# d1 a+ l6 ]% _% v
  216. #define GPIO_PUPDR_PUPDR15_0                 ((uint32_t)0x40000000)! ^4 K: z6 _2 a
  217. #define GPIO_PUPDR_PUPDR15_1                 ((uint32_t)0x80000000)
    ' q# P9 T+ l! N3 t1 o& s/ e4 y; G
  218. 0 x2 @/ f& _. M
  219. /******************  Bits definition for GPIO_IDR register  *******************/5 J, E) B5 y& J% P! K$ |
  220. #define GPIO_IDR_IDR_0                       ((uint32_t)0x00000001)6 m. X" D7 T. w& R7 ~$ |
  221. #define GPIO_IDR_IDR_1                       ((uint32_t)0x00000002)
    , R7 n; t" D# H; V2 m) a
  222. #define GPIO_IDR_IDR_2                       ((uint32_t)0x00000004)1 p$ _" P& l  j* }' n( a' _
  223. #define GPIO_IDR_IDR_3                       ((uint32_t)0x00000008)
    $ k% S7 s4 u* A
  224. #define GPIO_IDR_IDR_4                       ((uint32_t)0x00000010)
    6 i( B8 r. T; y3 W
  225. #define GPIO_IDR_IDR_5                       ((uint32_t)0x00000020)) Z& S) A6 p6 |0 m$ q, Y% O. q/ ^
  226. #define GPIO_IDR_IDR_6                       ((uint32_t)0x00000040)
    - i# o) D* K, I6 f9 x
  227. #define GPIO_IDR_IDR_7                       ((uint32_t)0x00000080)
    . [# C* f" ^& V/ w1 V
  228. #define GPIO_IDR_IDR_8                       ((uint32_t)0x00000100)# U5 F1 J5 f" k( C1 e) Q
  229. #define GPIO_IDR_IDR_9                       ((uint32_t)0x00000200)
    # i4 \! x7 T3 ]/ _! b8 c2 `
  230. #define GPIO_IDR_IDR_10                      ((uint32_t)0x00000400): B6 x$ Y5 C/ l8 V2 B: G4 o3 \! ?
  231. #define GPIO_IDR_IDR_11                      ((uint32_t)0x00000800), e4 y! Z5 A: D' {+ A
  232. #define GPIO_IDR_IDR_12                      ((uint32_t)0x00001000)' U- a$ A4 A9 A/ d
  233. #define GPIO_IDR_IDR_13                      ((uint32_t)0x00002000)
    % Z1 r2 O9 v% Y* e) M2 p- ~
  234. #define GPIO_IDR_IDR_14                      ((uint32_t)0x00004000)6 T- S! U. C( Y* E* z# A
  235. #define GPIO_IDR_IDR_15                      ((uint32_t)0x00008000)% l! L/ D. j9 ]" i9 j' f
  236. /* Old GPIO_IDR register bits definition, maintained for legacy purpose */; d' K2 }' e+ z+ h& o/ l: e
  237. #define GPIO_OTYPER_IDR_0                    GPIO_IDR_IDR_0
    ; h4 R- E  N3 n- W4 y  e; o
  238. #define GPIO_OTYPER_IDR_1                    GPIO_IDR_IDR_1
    + V# C  E' J8 C/ ^  z4 Z! r
  239. #define GPIO_OTYPER_IDR_2                    GPIO_IDR_IDR_2
    2 X. W0 W6 M3 M
  240. #define GPIO_OTYPER_IDR_3                    GPIO_IDR_IDR_3* v% ?. r0 x2 \9 H9 v! h
  241. #define GPIO_OTYPER_IDR_4                    GPIO_IDR_IDR_47 i5 S% c" E0 Z. f4 x
  242. #define GPIO_OTYPER_IDR_5                    GPIO_IDR_IDR_51 b4 J5 {4 `8 s2 \, R+ `
  243. #define GPIO_OTYPER_IDR_6                    GPIO_IDR_IDR_6
    6 D- Q9 N! _9 |% [$ C
  244. #define GPIO_OTYPER_IDR_7                    GPIO_IDR_IDR_7: s; A  e: U1 i# M8 A
  245. #define GPIO_OTYPER_IDR_8                    GPIO_IDR_IDR_85 l% C; m: l+ F; D2 t% e
  246. #define GPIO_OTYPER_IDR_9                    GPIO_IDR_IDR_9
    & j/ ]) H+ S$ m2 l8 S' z- a! N# B' G
  247. #define GPIO_OTYPER_IDR_10                   GPIO_IDR_IDR_10
    ( c+ z) l9 O7 l
  248. #define GPIO_OTYPER_IDR_11                   GPIO_IDR_IDR_11  z. l0 u0 W& T8 |' _
  249. #define GPIO_OTYPER_IDR_12                   GPIO_IDR_IDR_12# y% |9 M+ z3 u' E
  250. #define GPIO_OTYPER_IDR_13                   GPIO_IDR_IDR_13
    / o& y6 D! F6 Z$ y5 Y
  251. #define GPIO_OTYPER_IDR_14                   GPIO_IDR_IDR_14$ z: ?# ?5 V2 S% Q1 C
  252. #define GPIO_OTYPER_IDR_15                   GPIO_IDR_IDR_15- G( t/ q0 n$ J

  253. - j6 a- j# s, _3 `8 B
  254. /******************  Bits definition for GPIO_ODR register  *******************/
    ( ~4 u1 s* y2 ]1 b* N
  255. #define GPIO_ODR_ODR_0                       ((uint32_t)0x00000001)
    , k% L* c0 m& l- x
  256. #define GPIO_ODR_ODR_1                       ((uint32_t)0x00000002)9 t2 W; @, ]! U: ?/ B
  257. #define GPIO_ODR_ODR_2                       ((uint32_t)0x00000004)
    / w$ {7 y. v6 A  A2 z% E
  258. #define GPIO_ODR_ODR_3                       ((uint32_t)0x00000008)
    5 v* g6 j6 g1 y% k
  259. #define GPIO_ODR_ODR_4                       ((uint32_t)0x00000010); I9 V" i- W8 w6 l- x/ ^# ?6 \
  260. #define GPIO_ODR_ODR_5                       ((uint32_t)0x00000020)8 x! F! J/ i8 C( m" H/ O
  261. #define GPIO_ODR_ODR_6                       ((uint32_t)0x00000040)* q) R) g5 e- {& M1 h
  262. #define GPIO_ODR_ODR_7                       ((uint32_t)0x00000080)* N3 y  A# R2 j1 J' |) n
  263. #define GPIO_ODR_ODR_8                       ((uint32_t)0x00000100)
    . I* U6 _! X! _( a& l2 K
  264. #define GPIO_ODR_ODR_9                       ((uint32_t)0x00000200)
    5 {: V3 f+ T& T  f+ J4 G
  265. #define GPIO_ODR_ODR_10                      ((uint32_t)0x00000400)) c( n$ v4 O" i0 u: |% b
  266. #define GPIO_ODR_ODR_11                      ((uint32_t)0x00000800)% C6 z+ Y- S/ J" l2 G
  267. #define GPIO_ODR_ODR_12                      ((uint32_t)0x00001000)9 S2 y7 ~/ A5 q' m3 _: O
  268. #define GPIO_ODR_ODR_13                      ((uint32_t)0x00002000)
    # p( L) [& O4 z7 M; @
  269. #define GPIO_ODR_ODR_14                      ((uint32_t)0x00004000)+ j& @2 {6 Z9 W  x4 y* ^
  270. #define GPIO_ODR_ODR_15                      ((uint32_t)0x00008000)$ R% o. R0 e2 A* C
  271. /* Old GPIO_ODR register bits definition, maintained for legacy purpose */
    / |8 V+ m  w+ }
  272. #define GPIO_OTYPER_ODR_0                    GPIO_ODR_ODR_0
    $ g1 s! C# o0 @" q! e. s6 a
  273. #define GPIO_OTYPER_ODR_1                    GPIO_ODR_ODR_1
    ; H9 v4 O+ _* k% V
  274. #define GPIO_OTYPER_ODR_2                    GPIO_ODR_ODR_2
    / h( _+ x, U1 v
  275. #define GPIO_OTYPER_ODR_3                    GPIO_ODR_ODR_35 P! t6 ?# s% @4 w, G0 ^) u
  276. #define GPIO_OTYPER_ODR_4                    GPIO_ODR_ODR_4; g. p8 F4 F$ V# H! ~
  277. #define GPIO_OTYPER_ODR_5                    GPIO_ODR_ODR_5
    . q2 y) q/ `& Z$ D& K* f3 J
  278. #define GPIO_OTYPER_ODR_6                    GPIO_ODR_ODR_68 ~- T4 `; L- _7 `7 k! Q2 V. i
  279. #define GPIO_OTYPER_ODR_7                    GPIO_ODR_ODR_7; \5 ~" S' ]  P/ O3 x
  280. #define GPIO_OTYPER_ODR_8                    GPIO_ODR_ODR_8
    7 C0 H; g0 u8 u! n
  281. #define GPIO_OTYPER_ODR_9                    GPIO_ODR_ODR_9) n( {: i% s1 M5 e9 W4 G! O
  282. #define GPIO_OTYPER_ODR_10                   GPIO_ODR_ODR_109 I/ O( O4 o- _& j
  283. #define GPIO_OTYPER_ODR_11                   GPIO_ODR_ODR_11
    , w6 l. h" s1 [8 t8 A
  284. #define GPIO_OTYPER_ODR_12                   GPIO_ODR_ODR_12
    : T  e  A* ]! y- a0 ?5 f4 w
  285. #define GPIO_OTYPER_ODR_13                   GPIO_ODR_ODR_13
    / T# F4 G* ~2 A2 N
  286. #define GPIO_OTYPER_ODR_14                   GPIO_ODR_ODR_14
    * q, O1 q7 h7 [; K. j
  287. #define GPIO_OTYPER_ODR_15                   GPIO_ODR_ODR_15
    1 l( K+ |9 i: c* Q
  288.   B( p& h- N) t
  289. /******************  Bits definition for GPIO_BSRR register  ******************/5 j/ M% c) X' ^0 r7 z: H( |6 B
  290. #define GPIO_BSRR_BS_0                       ((uint32_t)0x00000001)
    % }# Q7 u/ K- F3 J# e
  291. #define GPIO_BSRR_BS_1                       ((uint32_t)0x00000002)( b3 q9 e  Y/ h) ~% C) D  e
  292. #define GPIO_BSRR_BS_2                       ((uint32_t)0x00000004)
    ( S( Z/ N7 N5 x2 @0 c+ a* \3 ?8 z
  293. #define GPIO_BSRR_BS_3                       ((uint32_t)0x00000008)
    0 y5 S0 c" H/ ~# W
  294. #define GPIO_BSRR_BS_4                       ((uint32_t)0x00000010)1 X1 p5 L: S& N! ?
  295. #define GPIO_BSRR_BS_5                       ((uint32_t)0x00000020)  f# h+ c; s7 N4 f( ?" H
  296. #define GPIO_BSRR_BS_6                       ((uint32_t)0x00000040)
    2 {; _# I" a. a# ?$ T/ C# K
  297. #define GPIO_BSRR_BS_7                       ((uint32_t)0x00000080)
    5 L: z3 C$ [% x) a; H1 l6 P: @' e" V" j5 ?
  298. #define GPIO_BSRR_BS_8                       ((uint32_t)0x00000100)$ a% w5 a5 D! @, @$ k/ C, [  {
  299. #define GPIO_BSRR_BS_9                       ((uint32_t)0x00000200)0 x. Y- G$ p% Y' l
  300. #define GPIO_BSRR_BS_10                      ((uint32_t)0x00000400)! e( g& X) R6 e4 l7 }1 D% q3 U/ B
  301. #define GPIO_BSRR_BS_11                      ((uint32_t)0x00000800)
    5 `  u* @  z: {9 l2 u* w# z
  302. #define GPIO_BSRR_BS_12                      ((uint32_t)0x00001000)
    + C: x+ d7 o: Z: ]
  303. #define GPIO_BSRR_BS_13                      ((uint32_t)0x00002000)2 y0 ~' g: N4 Z$ I+ p( z  O5 `
  304. #define GPIO_BSRR_BS_14                      ((uint32_t)0x00004000)/ }2 w! Q! _. H
  305. #define GPIO_BSRR_BS_15                      ((uint32_t)0x00008000)
    . C; ~& q8 z4 x% E1 |" R
  306. #define GPIO_BSRR_BR_0                       ((uint32_t)0x00010000)4 X' G" A" Q$ w/ B6 N
  307. #define GPIO_BSRR_BR_1                       ((uint32_t)0x00020000)
    $ U* F! W2 U9 j, k
  308. #define GPIO_BSRR_BR_2                       ((uint32_t)0x00040000)% e4 q3 L! t* `) s7 E+ o* P- m& j
  309. #define GPIO_BSRR_BR_3                       ((uint32_t)0x00080000)
    , U! f# B% o( D
  310. #define GPIO_BSRR_BR_4                       ((uint32_t)0x00100000)
    7 F( R9 n( a9 E. m
  311. #define GPIO_BSRR_BR_5                       ((uint32_t)0x00200000)/ }5 f6 s2 H, g5 p7 [
  312. #define GPIO_BSRR_BR_6                       ((uint32_t)0x00400000)
    9 L! d0 X8 i+ M" G
  313. #define GPIO_BSRR_BR_7                       ((uint32_t)0x00800000)
    $ b1 ?& b/ G% d7 J4 Z  I" G
  314. #define GPIO_BSRR_BR_8                       ((uint32_t)0x01000000)  M% y% Y; a/ X& V2 O( c% V
  315. #define GPIO_BSRR_BR_9                       ((uint32_t)0x02000000)
    4 M$ Z& J& c9 p
  316. #define GPIO_BSRR_BR_10                      ((uint32_t)0x04000000)1 ~2 L3 z/ N- |
  317. #define GPIO_BSRR_BR_11                      ((uint32_t)0x08000000)
    4 `( f* _* N: Q+ h; U
  318. #define GPIO_BSRR_BR_12                      ((uint32_t)0x10000000)  i4 f- X* o/ ]* `
  319. #define GPIO_BSRR_BR_13                      ((uint32_t)0x20000000)0 {: q$ t$ F& c, O2 j3 c  U
  320. #define GPIO_BSRR_BR_14                      ((uint32_t)0x40000000)
    / f. B) c% u( J, Z; U. I
  321. #define GPIO_BSRR_BR_15                      ((uint32_t)0x80000000)
复制代码
; A5 {, L( b& \
GPIO全部挂载AHB1总线上
, t7 I; j; _6 X/ N" M! l* Y, q
  1. /********************  Bit definition for RCC_AHB1ENR register  ***************/
    + b3 h2 n8 X. }# N" u. B9 r
  2. #define  RCC_AHB1ENR_GPIOAEN                 ((uint32_t)0x00000001)
    0 X. M& s- \. G! P% D& h( u: z4 k
  3. #define  RCC_AHB1ENR_GPIOBEN                 ((uint32_t)0x00000002)5 n4 g' L4 }* C$ d
  4. #define  RCC_AHB1ENR_GPIOCEN                 ((uint32_t)0x00000004)6 l- {3 c/ k* ~" w. k: n- ~  T/ }
  5. #define  RCC_AHB1ENR_GPIODEN                 ((uint32_t)0x00000008)$ T7 {3 k1 i$ U
  6. #define  RCC_AHB1ENR_GPIOEEN                 ((uint32_t)0x00000010)+ w3 \7 [$ y" y1 b5 _7 K# x/ c+ R: D
  7. #define  RCC_AHB1ENR_GPIOFEN                 ((uint32_t)0x00000020)
    3 c' Z' a1 D0 O0 p* Z
  8. #define  RCC_AHB1ENR_GPIOGEN                 ((uint32_t)0x00000040), g( q% f2 d3 D0 f2 ]3 G
  9. #define  RCC_AHB1ENR_GPIOHEN                 ((uint32_t)0x00000080)5 C. p. p' |* p! t7 V/ A# v
  10. #define  RCC_AHB1ENR_GPIOIEN                 ((uint32_t)0x00000100)1 d% |% I1 a6 u
  11. #define  RCC_AHB1ENR_GPIOJEN                 ((uint32_t)0x00000200)9 n2 }, K! ?  W
  12. #define  RCC_AHB1ENR_GPIOKEN                 ((uint32_t)0x00000400)
复制代码

/ \9 T( W9 l; n9 q2 @$ S$ ^' k6 T$ k, G7 T4 _. G: r5 i

& I8 \5 b8 J/ [
赞 收藏 评论0 发布时间:2022-6-11 21:38

举报

0个回答

所属标签

相似技术帖

官网相关资源

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