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

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

[复制链接]
STMCU小助手 发布时间:2021-11-26 18:00
0 ~: r) @# J  s; O3 C, i& }
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2tyMmtLNThDemU0UGx6bFUucG5nIXRodW1ibmFpbA.png
6 e4 @; e6 G. D3 X/ T: w
( ^/ d% \+ ^/ I, g+ v3 X, w
STM32F103ZET6(144脚芯片)
3 {2 B. D' [* r/ Q* ]3 t( I
, k- p2 ?/ f4 V  l: ^( \2 l7组IO,每组16个,一共112个IO口。
: R( _. a$ l( w* b, O
4 ]) ~% V  R+ Q2 D( {, @6 ^0 Q; E1 |GPIOA,GPIOB…GPIOG2 E/ [& ^* |; ^2 x. Y

4 Z+ [) K' D% gGPIOAA0~PA15(A,B,C,D,E,F,G均是16个IO口)
0 p/ N5 T8 ]& v3 x0 d7 a9 g) u+ }& w* y% z) p; y% e, ^
FT表示可以容忍5V
6 Z; o0 ~8 I6 \/ f, _  m" Q' |* H& G0 f/ }  F! y
一、4种输入模式:输入浮空,输入上拉,输入下拉,模拟输入
* _0 G5 T6 T; q& o6 j; @! X1 @; `- E1 {  ^5 u; [
1.GPIO的输入工作模式1—输入浮空模式$ ]* Q, W; B* m, s$ w+ G4 P& `& K

) x  H8 `' _4 g) |
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mLzJRMkhacVhKb0hRQ3hEUHQucG5nIXRodW1ibmFpbA.png
% n! Y0 ^; J  m, M9 k5 u3 Z6 y$ p" Z$ V

) ^7 [$ J: \: b6 P2.GPIO的输入工作模式2—输入上拉模式
! e9 ^1 O' `9 p$ r& g) L8 E( s" L/ K) }- `
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mLzZWNWtYY1VtSjEwTmRiRm4ucG5nIXRodW1ibmFpbA.png

7 O; ^  \+ |. A6 q: H6 g- `
6 N7 ^0 \( _! ^7 @3 r3.GPIO的输入工作模式3—输入下拉模式
! l  v- d/ s% j3 P7 d5 G& a4 M5 M
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2VQbVR4NGE1NTBZaEtkcUkucG5nIXRodW1ibmFpbA.png

* O9 O; u8 [% m1 N, \
/ {( F1 {1 u: @7 a2 t" f4 }3 c4.GPIO的输入工作模式4—模拟模式0 W" Z3 }- a2 j4 Z4 g1 i) r% ~5 N
1 _+ R. B8 _5 n- n" v! k
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL1R1V2NzUDV4VzRzamJFQXQucG5nIXRodW1ibmFpbA.png
3 c" z! n! a! G3 {5 e! F' f

+ ~1 m( N6 d. ~" P, C) `二、4种输出模式:开漏输出,开漏复用功能,推挽式输出,推挽式复用功能- M0 p! M2 z+ v4 J1 x! _% C3 Z

2 X$ ^. n, Q$ r% C) L1.GPIO的输出工作模式1—开漏输出模式
2 z5 `6 R3 b: d+ Y2 G( h( K6 M' c2.GPIO的输出工作模式2—开漏复用输出模式
2 C* _0 Q3 a5 ]8 L( t. A; e5 G, {
( p' N3 l! u; Z' ?, d: E* m* ?
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2Y2UWIxMUV3cnBVTElUaEEucG5nIXRodW1ibmFpbA.png
/ y, W9 z; B( q) @3 S8 |7 O. A

; u7 ^1 f/ g. G5 A, @4 t3.GPIO的输出工作模式3—推挽输出模式
0 e, V  h* M" e. u+ S, s- _2 J' x% y
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2pGMUJyVTdSTWY4MGVNV3gucG5nIXRodW1ibmFpbA.png
3 `! x3 ~& j) f9 z* d. c7 Y' h6 H
6 q* S  B3 k5 R  \5 _0 q4 B
4.GPIO的输出工作模式4—推挽复用输出模式
& d% l5 Z: q5 Z
- @' r6 f) o: _; P7 [# q: y- y- W

8 ~! N/ \) A' U! ^* G0 i" _
3 T8 J* W+ s8 g6 A% Y2 v三、3种最大翻转速度:2MHZ,10MHZ,50MHZ
' T8 {, i1 Y% U, y6 _* a: ^
& g/ _5 d' O! E5 s: o0 G* j9 [四、GPIO工作方式) R6 B6 B4 d! ]; B5 {6 F

) C6 q9 F8 X4 {  @( @推挽输出:可以输出强高低电平,连接数字器件 。
) a$ B6 m5 l& M- j* R9 W7 M& r- }
& W: ^# G# A; L% W. H- @+ }) Y4 ~7 s开漏输出:只可以输出强低电平,高电平得靠外部电阻拉高。9 H/ v/ x3 K. E
% H% }- }6 U& f( w3 J' ]" s
每组GPIO端口的寄存器包括:0 s4 Z. v% a& f5 @

9 T3 R% V! r4 ^- o! H  n5 R& u7 k  N两个32位配置寄存器(GPIOx_CRL ,GPIOx_CRH)
# [7 Z" q3 j% V* Q$ L2 |. R. [9 T3 r2 k
两个32位数据寄存器 (GPIOx_IDR和GPIOx_ODR)
- }8 A3 ^9 t& W6 p
( P' x) L$ s. ^7 l6 K一个32位置位/ 复位寄存器(GPIOx_BSRR)
; c' N3 N9 x9 O
" u. [; |. V6 W7 G8 E& @' O4 U$ ~7 O一个16位复位寄存器(GPIOx_BRR)
8 `# l2 D0 c# u4 _* z9 ~" z8 X( H' |2 ?- k6 x* B# O, o
一个32位锁定寄存器(GPIOx_LCKR): }+ P4 \# J# e4 _; b6 B
) S2 P8 r$ e% B% Q5 s( h+ Y+ M" E5 k
每个I/O端口位可以自由编程,然而I/O端口寄存器必须按32位字被访问(不允许半字或字节访问) 。9 m- V; K; C- P+ q- B

+ V1 S' ?, H- t+ N每组IO口含下面7个寄存器。也就是7个寄存器,一共可以控制一组GPIO的16个IO口。
$ q: a7 z8 n1 u3 N) ^  Z
2 K3 a# \& I4 R  v+ P9 wGPIOx_CRL :端口配置低寄存器+ l9 ?  Y+ F3 T* ]* ^4 Z

' a& [% g& e, z0 @GPIOx_CRH:端口配置高寄存器
& R8 c8 \7 z! j# L2 [
( F9 K& k* Y* f8 a- T& t9 JGPIOx_IDR:端口输入寄存器
+ [' ^& t& X' |( o* b$ h: [
( {$ r1 }' q3 D# a5 [GPIOx_ODR:端口输出寄存器% ^- w0 N# P+ w! Q9 C

4 z! O9 `* o) ]/ nGPIOx_BSRR:端口位设置/清除寄存器
0 U( l3 f7 ]7 _5 q2 l. P# p9 I* t) n3 M( x' P' D0 N
GPIOx_BRR :端口位清除寄存器: D% x; C( Q( y9 k
+ r2 C2 u* p; Y7 f/ r$ X
GPIOx_LCKR:端口配置锁存寄存器
7 p& V" z0 S/ z( j7 E! R# A: i( o5 B1 a6 w; z( P8 K4 l! N( D
1.端口配置低寄存器(GPIOx_CRL)和端口配置高寄存器(GPIOx_CRH)
4 G1 \) ^8 X' ~3 _, W& @, k6 P
8 e+ i  d! K, a* \6 a1 M
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL1BhT0JSTGNqVE1vRkQ5c3oucG5nIXRodW1ibmFpbA.png
8 I  z: F7 W: ~

+ Y1 G% |3 H6 ^* u6 Q8 b# Z% q0 K2.端口输入数据寄存器(GPIOx_IDR)4 @7 F" `  n7 F. |$ K7 p7 b! ~
* Z% c9 ^* w0 Z8 H
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL3BxcG1UTjV5cUowYVd3TEEucG5nIXRodW1ibmFpbA.png
# j' y1 i$ g+ U: E+ Y

) C8 T! g; L! r7 e1 g% u/ u! D端口输出数据寄存器(GPIOx_ODR)
* N( s5 `  a8 k3 I" G' I' s" P2 ^# w, m( A3 U# j

2 u. L4 W7 ?: e8 ]6 N
3 N0 V, S& @' `2 C( q- g3 X3.通过设置ODR控制端口位为上拉还是下拉输出模式
7 D! j" s$ ]# N$ N
2 ]0 j" o! Q7 \( g' \. d
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL0VyV1RRYTFtM3NNVHR3TXEucG5nIXRodW1ibmFpbA.png
6 A" S  e/ c) _2 \
& C  ?% m. `- b, @6 E; H/ s6 l
ODRx设置为0就是下列输入,ODRx设置为1就是上拉输入。
  y6 m4 A0 a, e3 `3 d( q! w* d) ?" f* d0 @3 d5 F( G
4.端口位设置/清除寄存器(GPIOx_BSRR); F8 f4 E- M( h1 r% C, S

  n) Z; g. Y) J# H" z
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL3htWllNTVAzbVVJd2JTU04ucG5nIXRodW1ibmFpbA.png
* r# q$ J, V) o( r) S
2 E/ i, P4 M4 C& z/ b9 o
端口位清除寄存器(GPIOx_BRR)
9 V/ i( Q& \+ S5 J: B3 `
; O, h0 \) ~: R8 r通常就采用BSRR的低16位和BRR的低16位,因为BRR的低16位与BSRR的高16位作用类似。
! T, s0 G+ a6 R! J! g7 W4 ~6 q7 y' |
5.端口复用功能: STM32的大部分端口都具有复用功能。 所谓复用,就是一些端口不仅仅可以做为通用IO口,还可以复用为一些外设引脚。
! y# T( {4 U- @0 u/ x8 ?! B$ B5 y; j+ g9 f7 q
6.端口重映射功能:就是可以把某些功能引脚映射到其他引脚。比如串口1默认引脚是PA9,PA10可以通过配置重映射映射到PB6,PB7。& g+ z' n% L6 C) y+ Z

' y! ^' {5 Q8 u8 D  h: R$ r! h. W, @和51单片机相比,32所有的IO口都可以作为中断输入。  u$ R+ e  C3 u/ a+ t
2 }/ g6 ~. F: y& D
7 o5 t3 `! Z+ [  J+ m5 ^
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2Y3UjRKRWhXMVM4U0M5NVQucG5nIXRodW1ibmFpbA.png
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL3N6SUlKOGR2UldRWmJZTmEucG5nIXRodW1ibmFpbA.png
收藏 评论1 发布时间:2021-11-26 18:00

举报

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

非常清楚 感谢。

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版