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

stm32初始化gpio步骤

[复制链接]
Canly 发布时间:2017-8-24 13:32
1、用函数RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOx, ENABLE)使能所有GPIO的时钟
( h: k, n, E# K: X  p' d! v5 S+ H% ^4 F& p+ P: L
2、普通IO口的配置% F8 t# \( q  y7 k# X0 y
(1)声明 GPIO_InitTypeDef GPIO_InitStructure. P+ I% l1 [: X7 Z# C/ \% T
(2)配置引脚* V. t5 j. Z) M1 C1 S
  1. GPIO_InitStructure.GPIO_Pin = CLK595_PIN | LOCK595_PIN | EN595_PIN | DATA595_PIN;7 l7 Q8 B& d( |, p
  2. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    1 \: O2 x  `: m6 T5 I. C4 _
  3. GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;) c6 c- m6 h: V7 X/ w8 [
  4. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    2 w$ l' R' ?+ X! s. q
  5. GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
复制代码

0 ?. j: t& N/ \3 \1 T. h(3)初始化# D: w' M6 F  b6 T
GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);# |% y+ K7 @+ A7 D; d
3、IO口备用功能的配置
, S# Q8 M2 S- X, f(1)、先定义备用功能+ U1 T+ K8 t5 [2 I9 z4 \  A
  1. #define SPI1_CLK RCC_APB2Periph_SPI17 d' ~: Y# T- i) U9 e0 v

  2. ; a: O8 v% m( c* V9 J7 T! O
  3. #define SPI1_CS_Pin GPIO_Pin15
    ! i7 w# ]& O5 R6 F4 ?( d  J3 U
  4. #define SPI1_CS_SourceGPIO_PinSource15
    + x# \4 h. {: |7 [- ]
  5. #define SPI1_CS_Port GPIOA' p* D5 a2 [, Q) i& D
  6. #define SPI1_CS_AF GPIO_AF_SPI1
    * Q2 S7 b! b0 s( W
  7. 0 t9 ]& c0 z' w) m$ ], Q- R5 i
  8. #define SPI1_CLK_Pin GPIO_Pin3( F' T  R7 h/ L, V
  9. #define SPI1_CLK_SourceGPIO_PinSource3% D  U  I1 b( c3 d* U7 }! Y
  10. #define SPI1_CLK_Port GPIOB
      t, a2 f8 U/ H! l' ^
  11. #define SPI1_CLK_AF GPIO_AF_SPI1
    $ E$ K: b+ n* Z! Q- _% ^
  12. ) v) L* C  D, {1 d6 a
  13. #define SPI1_MISO_PinGPIO_Pin4
    + K3 W3 i: |/ A& R" J6 A
  14. #define SPI1_MISO_SourceGPIO_PinSource4: c' f$ d4 h: ?" U& }  J% I, ]
  15. #define SPI1_MISO_Port GPIOB3 s0 |- _& K) ?, u& b" h- `
  16. #define SPI1_MISO_AF GPIO_AF_SPI1
    ( [; D3 u0 {+ |, d* {- V/ z2 |2 a. E
  17. ! O& x. P, p1 N$ v/ ?5 V6 [
  18. #define SPI1_MOSI_Pin GPIO_Pin5$ T2 M! D9 Z) G. h/ k( b
  19. #define SPI1_MOSI_SourceGPIO_PinSource5
    ; b/ x& Y) ]" a
  20. #define SPI1_MOSI_Port GPIOB
    , l  N/ \& R- h2 m6 P, P# f
  21. #define SPI1_MOSI_AF GPIO_AF_SPI1
复制代码

- M4 g# h  F  J5 {( N7 X(2)、使能备用功能的时钟  z; x8 T7 l5 x# |. g
  1. RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE) for SPI1
复制代码
% L, @7 \) C& x/ U8 u
( U  s* L- f* w8 {! e; ~; {
(3)、配置引脚及初始化
! Q8 l7 S0 d! L+ K: `0 C
  1. GPIO_InitTypeDef GPIO_InitStructure
    & C& d8 T% h/ E3 N  n# F2 Z

  2. - m1 n" j' {& S* T: ?, S
  3. GPIO_InitStructure.GPIO_Pin = SPI1_MOSI_Pin ;
    : G% }4 k* Y0 E/ s$ e$ P
  4. ( z/ {% V* e+ w  ?9 L0 R0 D
  5. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //GPIO_Mode必须配置为GPIO_Mode_AF(备用功能)
    3 V- q, p" P0 p, K4 o  u0 A
  6. GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    3 M1 p$ G: _& u+ Q" f% n
  7. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
    $ c7 m" g% Q- A( I- p& x
  8. GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
    5 J) i6 e$ W/ @$ B4 t- N% @

  9. 5 s  E( J" n( W1 |4 I; D# N  h
  10. GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
复制代码
" u" ^& r3 o- a' a/ y3 W  F
(4)、连接引脚到备用功能
% I8 W, j% P& W
  1. GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF)
复制代码

$ \6 I) x  H' u2 ~( O9 r* [1 q. J, q7 g

7 s3 R* I1 g( j' H& Z/ s
赞 收藏 评论0 发布时间:2017-8-24 13:32

举报

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