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

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

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

, C( b' e( ~2 ^3 i2 O
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2tyMmtLNThDemU0UGx6bFUucG5nIXRodW1ibmFpbA.png

  l2 r/ B( G6 {' k! G5 p# D  Y1 J* r
STM32F103ZET6(144脚芯片)
7 B* _7 C9 V2 C8 Y7 t1 F! i: u
; ]* X  ]% F- Y6 |! h9 n) b9 w7组IO,每组16个,一共112个IO口。9 N# r, w9 ^+ q9 y

' v+ u" f0 g4 ]* ^, K8 X% w; G! SGPIOA,GPIOB…GPIOG
- J9 [1 U2 b% H3 e0 I
8 a0 S1 J* W4 t1 |$ X( M2 GGPIOAA0~PA15(A,B,C,D,E,F,G均是16个IO口)
# F% A% h8 P3 d) A. l2 ~: q6 A( F- ~+ f1 E  s
FT表示可以容忍5V
. g4 I7 h; H+ n" e+ |) B- U& w1 w8 ^
一、4种输入模式:输入浮空,输入上拉,输入下拉,模拟输入
1 o, U( y# @: W% E# j( B5 g8 M. h; l2 V$ L& `
1.GPIO的输入工作模式1—输入浮空模式
# {: s, A- [' I8 t3 C' }
8 `. `( u' W) f8 _( M: A8 Q
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mLzJRMkhacVhKb0hRQ3hEUHQucG5nIXRodW1ibmFpbA.png
: I$ U. Y) O1 P) M3 z

7 h- @: a; B6 ~  H. n2.GPIO的输入工作模式2—输入上拉模式
. y+ n' F" S/ [
8 I1 f! K  M& B! Z0 D- W2 V
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mLzZWNWtYY1VtSjEwTmRiRm4ucG5nIXRodW1ibmFpbA.png

* H6 R! v1 h$ A# X/ f5 Z% p2 s/ M) L9 y1 A. U+ ]" Y  D5 p: l$ T! O
3.GPIO的输入工作模式3—输入下拉模式0 |& a3 s* ~% K7 W3 g+ W. ]0 l. ^

  P' \4 u& o4 v5 G
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2VQbVR4NGE1NTBZaEtkcUkucG5nIXRodW1ibmFpbA.png

7 t* z# b- r8 o5 O6 r! x( j* P1 g3 F" w( `, `2 e
4.GPIO的输入工作模式4—模拟模式
" ]6 f4 r5 h. A" @7 H& m4 m8 ~/ ^8 h$ T) l) }# ^
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL1R1V2NzUDV4VzRzamJFQXQucG5nIXRodW1ibmFpbA.png
0 Y1 A& y5 w( `5 V: A' w
% g! w/ H+ I  _; E
二、4种输出模式:开漏输出,开漏复用功能,推挽式输出,推挽式复用功能4 Y3 }" ^9 _3 I- S  p$ `
  P; C- `( s! d. ~
1.GPIO的输出工作模式1—开漏输出模式
' B2 U' q+ x# y$ ^8 |4 f% f6 W2.GPIO的输出工作模式2—开漏复用输出模式2 W9 K- ^! Z& Y

2 V. _) o9 a0 S8 m* i' v
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2Y2UWIxMUV3cnBVTElUaEEucG5nIXRodW1ibmFpbA.png

- I  i! a' _1 ]6 N+ t; ]$ |8 A8 q7 ~' E, [; ^! \
3.GPIO的输出工作模式3—推挽输出模式
% s9 e% I$ e$ ?; N: B, ?4 j& C, m- k/ ~$ s6 S& g
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2pGMUJyVTdSTWY4MGVNV3gucG5nIXRodW1ibmFpbA.png

+ C$ N! G' i: K/ ?0 B6 H7 g
+ `- x  T7 |9 [3 `* t4.GPIO的输出工作模式4—推挽复用输出模式
  g, r, t1 p: u* V5 z8 I& }" z
2 t: F6 \8 p/ K6 |. r2 k
# J* c+ A) c& S  D9 q

8 }8 t! G% s' o$ f三、3种最大翻转速度:2MHZ,10MHZ,50MHZ
" G8 j+ D# Y# ]! s/ x: k5 Q3 s6 w& z1 P) r6 O
四、GPIO工作方式! h; }" U5 y4 H- _
8 L4 v; ?/ z( {+ b/ p7 K  I
推挽输出:可以输出强高低电平,连接数字器件 。
( |7 }) r( `/ b& t. G8 j( I
- K% N( n3 x" Z  O5 w开漏输出:只可以输出强低电平,高电平得靠外部电阻拉高。" S9 h7 A* [* q3 y# b* l% J

' G2 g1 z( d( C! o2 }每组GPIO端口的寄存器包括:
0 M: G% i; o, [1 P+ i5 B8 m" |- y. m
两个32位配置寄存器(GPIOx_CRL ,GPIOx_CRH)6 \$ h2 F' t: G  F: x
0 @( [! _$ k4 l
两个32位数据寄存器 (GPIOx_IDR和GPIOx_ODR)- F  E# Q$ }0 E, G" a* j2 E9 i

0 ]$ p1 O' z/ e1 E" P1 E. ^一个32位置位/ 复位寄存器(GPIOx_BSRR)
5 y5 _, O" b3 I& o* L/ l
! @  m6 x3 `1 l3 `一个16位复位寄存器(GPIOx_BRR)1 \9 x0 u2 C; ?" Y$ J( x/ g7 I
+ W, {9 |; x2 i0 A& e/ \
一个32位锁定寄存器(GPIOx_LCKR)
' N3 B0 M0 U7 |9 B; a$ @  b9 m5 C" v
1 H; K# j+ m! S: q8 Z( I每个I/O端口位可以自由编程,然而I/O端口寄存器必须按32位字被访问(不允许半字或字节访问) 。- ]9 u/ r9 N+ Q4 j
! b! v6 X3 ~+ d( x6 F3 i; c8 p
每组IO口含下面7个寄存器。也就是7个寄存器,一共可以控制一组GPIO的16个IO口。
# b7 W! e! Z4 N* x1 Z1 t. g8 `$ K0 e: I! n4 T9 g
GPIOx_CRL :端口配置低寄存器
+ i, U0 j) i+ e! x
9 j1 Z# Z3 k! G9 ]GPIOx_CRH:端口配置高寄存器! F5 X/ P5 V1 M: R6 l- v+ t7 b
; ?. b& E+ ?7 v0 z  M/ z
GPIOx_IDR:端口输入寄存器
/ @2 ^0 r0 T8 D6 \$ ]/ Y8 _" x
6 X; p' Z* B; Q9 Y4 _GPIOx_ODR:端口输出寄存器3 B7 a  j$ j3 ^9 b4 ^
# E4 @0 `% K- H& a: r' {; R' _3 @8 c  E
GPIOx_BSRR:端口位设置/清除寄存器
, H3 y& _# h% D/ G+ q, g& f, |
% F: A8 D/ @3 X0 U$ v, @GPIOx_BRR :端口位清除寄存器
) J# v/ L4 U& P$ I9 P( U& u- z( V: N! e1 \) z$ w5 q" Y4 H/ D( ?* C
GPIOx_LCKR:端口配置锁存寄存器
9 S. z* `2 Y) ?5 t. D3 T7 `) t$ t. ^2 o. k7 [. F1 o! o+ K
1.端口配置低寄存器(GPIOx_CRL)和端口配置高寄存器(GPIOx_CRH)5 a% ~) C7 K: z) Z# w2 n5 F  `

; y) `3 Q/ K8 `  g# b; b
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL1BhT0JSTGNqVE1vRkQ5c3oucG5nIXRodW1ibmFpbA.png
% D3 ^. k2 J1 n  j9 U) V
: j$ g+ g4 K3 s6 F8 l6 x/ A
2.端口输入数据寄存器(GPIOx_IDR)
% O8 `) |- W3 E- ~1 {
( P% V' O0 |. M6 x! w; c& S+ u8 p
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL3BxcG1UTjV5cUowYVd3TEEucG5nIXRodW1ibmFpbA.png
+ g: M% ~! V) i7 t$ Z2 M

, s' H, k- n! ~/ r  w7 ~端口输出数据寄存器(GPIOx_ODR)  p5 ^5 u" r  q, o
1 m' b. W4 ~2 l  K5 a1 K$ I' f

/ f/ |6 ^9 {/ e
7 t- s& r7 K, q5 J* X/ g1 A2 p3.通过设置ODR控制端口位为上拉还是下拉输出模式- M0 Z* j, X) Z0 F( Y

, D# g5 D+ \- [8 I$ v$ Y7 a
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL0VyV1RRYTFtM3NNVHR3TXEucG5nIXRodW1ibmFpbA.png

) w  X7 @# T5 W; {) b
3 w3 P/ h, U3 d% I! ?( g+ CODRx设置为0就是下列输入,ODRx设置为1就是上拉输入。
! }. Q$ W; k) |9 [+ ?$ V) D% f2 y8 |' \5 W! B1 h
4.端口位设置/清除寄存器(GPIOx_BSRR)
& F/ C  \6 K' J# @" V1 k. F' _9 Y0 P$ _* D# ^+ b+ `9 A- {4 n
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL3htWllNTVAzbVVJd2JTU04ucG5nIXRodW1ibmFpbA.png

) u' B( j7 ?9 p; P, r3 N) `: L- f
4 R- \; T- K2 ~) |* d端口位清除寄存器(GPIOx_BRR)8 e5 z$ W! P8 v- j

7 W% w# D4 I: X8 \* b$ @7 V通常就采用BSRR的低16位和BRR的低16位,因为BRR的低16位与BSRR的高16位作用类似。# D2 T- k; U. i) y' j  U9 r- Q
- W" \, Z" H) s7 G0 e
5.端口复用功能: STM32的大部分端口都具有复用功能。 所谓复用,就是一些端口不仅仅可以做为通用IO口,还可以复用为一些外设引脚。
- e. t* C! V- G. Q: |- Z- x
( ?5 f* B7 z: f  S+ X  B5 ?0 b* `6.端口重映射功能:就是可以把某些功能引脚映射到其他引脚。比如串口1默认引脚是PA9,PA10可以通过配置重映射映射到PB6,PB7。0 ?+ R4 K; r, Q9 d, k& J

9 G  |( W+ E, _和51单片机相比,32所有的IO口都可以作为中断输入。4 ]' w7 N' J4 M' L
/ _* B5 K* H' e! l( L" E

0 v" R9 ]; I( H+ B$ ^
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 手机版