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

【经验分享】STM32F1 GPIO工作原理

[复制链接]
STMCU小助手 发布时间:2021-11-26 18:00

9 y4 |  E, Z, N; V5 H( C
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2tyMmtLNThDemU0UGx6bFUucG5nIXRodW1ibmFpbA.png
; `; [# v+ |3 r0 {, |
5 ~% J* U8 J8 i0 K$ J5 N
STM32F103ZET6(144脚芯片)
4 W3 P( ]: k0 V1 d2 ~3 B, a; i3 a' I5 n1 q
7组IO,每组16个,一共112个IO口。
$ a/ E: _# T5 y4 X( ]7 q8 N2 E- N$ O7 K  M3 ?+ p
GPIOA,GPIOB…GPIOG
0 l6 d* P6 C8 ]+ b/ H4 q5 B1 h0 ~
GPIOAA0~PA15(A,B,C,D,E,F,G均是16个IO口)
" H0 F* L1 y! i+ a, ~# P3 }* {
8 ^7 e; b: N% Z# B' g: R& |FT表示可以容忍5V
/ ]5 m* ]* o' g4 C( O+ d) v
8 J8 f/ }% Z4 m+ W一、4种输入模式:输入浮空,输入上拉,输入下拉,模拟输入
! @* r& C! d  l( |( _/ V3 C( E1 v( A
5 w1 F) Q4 {, _  w0 F. H1.GPIO的输入工作模式1—输入浮空模式  M8 B$ T6 y) f
0 [& X# d( ^- }, H$ w. M
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mLzJRMkhacVhKb0hRQ3hEUHQucG5nIXRodW1ibmFpbA.png

" U& b1 }( c8 P9 N0 w: N0 t4 M) _
, ~  {4 w- P8 p9 |4 W: B2.GPIO的输入工作模式2—输入上拉模式
& p4 L" ?! f; H+ j" R* n9 h) P" x' e" p  W9 R
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mLzZWNWtYY1VtSjEwTmRiRm4ucG5nIXRodW1ibmFpbA.png

6 ]. a" u* d  A- q- a0 @1 H
' K0 |, n: P9 b  a9 S8 v3.GPIO的输入工作模式3—输入下拉模式4 n; b& E4 k/ d, S4 T3 [
* {" H# F, g$ S% M9 W0 z$ H( `& e
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2VQbVR4NGE1NTBZaEtkcUkucG5nIXRodW1ibmFpbA.png

; a7 e, I% a9 r5 d$ {) a: ]- O; A. M( s. i
4.GPIO的输入工作模式4—模拟模式
; d6 |+ f4 e3 S! S6 T: z/ `& e( v2 G4 Q* a; I
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL1R1V2NzUDV4VzRzamJFQXQucG5nIXRodW1ibmFpbA.png
0 X0 W5 f& a: ?( m2 I% b# n
2 K0 X; m* f& V
二、4种输出模式:开漏输出,开漏复用功能,推挽式输出,推挽式复用功能
* T; a0 @* o* T! }3 u& ~+ A9 c- I! A8 q9 N6 ]
1.GPIO的输出工作模式1—开漏输出模式' Y# ^$ t" }7 e5 K
2.GPIO的输出工作模式2—开漏复用输出模式. O( M) B+ Z, J* \- D/ w: G9 E. F
3 i9 b# Q- b5 [% `* \
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2Y2UWIxMUV3cnBVTElUaEEucG5nIXRodW1ibmFpbA.png
) Y1 B3 ~; h% `9 X* U& M0 w' B* Q

, }3 J3 A( x3 K- A5 S; a3.GPIO的输出工作模式3—推挽输出模式
3 W+ \( n. f' J, ], |
5 i+ o6 j8 t6 E9 l4 d+ V& I
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2pGMUJyVTdSTWY4MGVNV3gucG5nIXRodW1ibmFpbA.png

' I, {1 O+ z' m5 u. j5 G% b
6 M5 z* ?- ]# ~1 |+ a4.GPIO的输出工作模式4—推挽复用输出模式
) d# a! S9 O) m, ?/ Z1 r, w+ ~% z% L# l1 k1 ?+ w
% |0 N  J6 @2 ]7 \
" {* M2 P& q3 X# w) `
三、3种最大翻转速度:2MHZ,10MHZ,50MHZ1 H! @( j8 ~( l: T

0 J$ [. T; j. b四、GPIO工作方式7 `: m5 R' G9 b9 P
+ @9 C* n* E2 k7 |
推挽输出:可以输出强高低电平,连接数字器件 。) N8 k9 r9 `1 D  v
/ Q, D, q2 \' H- P7 `5 y- a
开漏输出:只可以输出强低电平,高电平得靠外部电阻拉高。
4 }: L/ ~" y3 ]6 S7 p% Z- s  l& o& |, d# Q& x! D& w& B
每组GPIO端口的寄存器包括:
* O2 M% ^0 O0 M  T& |$ f0 J
6 C" B4 `% S# S& }7 [% d) e! x. r两个32位配置寄存器(GPIOx_CRL ,GPIOx_CRH)4 y; {( e: A" l$ V* f! `! A" @

/ n- |- J7 _/ t; N3 f$ b6 }- j两个32位数据寄存器 (GPIOx_IDR和GPIOx_ODR)
2 z, C" W7 s) r6 t5 u' d/ e. Z9 a' x7 T& s
一个32位置位/ 复位寄存器(GPIOx_BSRR)
0 f. [/ }  H& |$ U
9 h7 {1 J9 h4 K一个16位复位寄存器(GPIOx_BRR)
" ^0 }6 d: f6 e$ `0 Z6 w" S5 s+ X6 U8 B  M6 }/ o
一个32位锁定寄存器(GPIOx_LCKR)" H% U1 L: a/ Y; p; v' F
* w/ L. M0 G& f0 C7 g
每个I/O端口位可以自由编程,然而I/O端口寄存器必须按32位字被访问(不允许半字或字节访问) 。
3 G5 Q/ _* J( ]1 o( U' c& T8 p2 T! N( R' I( p
每组IO口含下面7个寄存器。也就是7个寄存器,一共可以控制一组GPIO的16个IO口。1 f) Q' |( f; r0 G

5 v3 E4 ?/ b3 O5 z# BGPIOx_CRL :端口配置低寄存器
" O6 D! T8 X$ u4 I( D3 s% s9 y0 S+ J
GPIOx_CRH:端口配置高寄存器
4 k* ]8 q# Y2 y
1 g& Y5 f  ^+ m6 k+ N2 W: UGPIOx_IDR:端口输入寄存器4 C1 v% r! \" j) L
% C& z! z/ m& y) H" [1 ?
GPIOx_ODR:端口输出寄存器
6 V! R. `2 [! D' K2 N
; t1 V/ q/ a/ L: y7 BGPIOx_BSRR:端口位设置/清除寄存器  h, F" c, h( ~" q3 C

7 v1 _0 V) F3 LGPIOx_BRR :端口位清除寄存器/ b$ l) `, i5 a! _' T: |  d

/ r5 h: j3 `% _; A& uGPIOx_LCKR:端口配置锁存寄存器$ ], M, Y6 I( k4 J

& E: j/ Z& ]- [( a; p. @+ a1.端口配置低寄存器(GPIOx_CRL)和端口配置高寄存器(GPIOx_CRH)6 e" q* V/ B7 J0 r

' P1 p( @# S5 Q8 N! f+ n' B
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL1BhT0JSTGNqVE1vRkQ5c3oucG5nIXRodW1ibmFpbA.png
0 f' @  E* Z) J% K
: p5 V. M' x5 F& j6 G4 m
2.端口输入数据寄存器(GPIOx_IDR)
% X, y3 Z9 a6 _: e8 c
2 b. M  {1 P& L4 A
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL3BxcG1UTjV5cUowYVd3TEEucG5nIXRodW1ibmFpbA.png

" E: L5 I# l1 d, R
  b% k0 n& [5 U端口输出数据寄存器(GPIOx_ODR): D- l4 m" G' N  x5 U

5 Q2 j) g3 [/ i1 ~0 u

* ^* ^8 ~1 G: h0 P* b+ m$ t( U! y
3.通过设置ODR控制端口位为上拉还是下拉输出模式4 o* W4 O3 ?' t: Y: c- {
% X; U* B+ l3 V$ R( W
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL0VyV1RRYTFtM3NNVHR3TXEucG5nIXRodW1ibmFpbA.png
3 w) Z, b  _4 d

1 |3 C* g+ b- p: i* e+ E3 K% DODRx设置为0就是下列输入,ODRx设置为1就是上拉输入。
) P7 M0 Q' j( Y  }  ?. h- C: |3 y4 d  Q# d, G7 X3 l/ v5 j
4.端口位设置/清除寄存器(GPIOx_BSRR)$ m  D/ k, s* d# t
9 c0 }) M, a/ X/ ~9 U2 O) r* @& d1 q
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL3htWllNTVAzbVVJd2JTU04ucG5nIXRodW1ibmFpbA.png
2 ]& E* ^% @- C1 D+ p" G
) N+ u$ \+ R( C' ]: m3 j
端口位清除寄存器(GPIOx_BRR)4 v, }* i* e( ^. H- C+ j4 H+ ^6 z  W- Z

( u  }+ v, B# [# _  i( ^+ X通常就采用BSRR的低16位和BRR的低16位,因为BRR的低16位与BSRR的高16位作用类似。6 s+ i6 O  ^3 v2 }1 f! Q+ @
0 f# S1 y& v; t$ J; o1 ]% I% k7 \1 D
5.端口复用功能: STM32的大部分端口都具有复用功能。 所谓复用,就是一些端口不仅仅可以做为通用IO口,还可以复用为一些外设引脚。" K7 \1 Z5 O' Y7 t% E4 {3 j" _
7 n4 |5 a) z' h1 ~9 x1 K
6.端口重映射功能:就是可以把某些功能引脚映射到其他引脚。比如串口1默认引脚是PA9,PA10可以通过配置重映射映射到PB6,PB7。
/ x4 l9 A1 W. _: Z& s0 N+ k! S) `7 P$ S5 ]
和51单片机相比,32所有的IO口都可以作为中断输入。
" N+ o! R1 M9 C# A* ~" ~: Y. D& S- x2 j0 a

' M: ?$ o: _- P4 r* e7 \
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2Y3UjRKRWhXMVM4U0M5NVQucG5nIXRodW1ibmFpbA.png
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL3N6SUlKOGR2UldRWmJZTmEucG5nIXRodW1ibmFpbA.png
收藏 评论1 发布时间:2021-11-26 18:00

举报

1个回答
tianqi911 回答时间:2024-5-11 11:06:41

非常清楚 感谢。

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