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

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

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

  T  @4 z; N' ~7 f# i. h
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2tyMmtLNThDemU0UGx6bFUucG5nIXRodW1ibmFpbA.png

! Z  b. D& o4 J9 O
) Q/ Y% E4 m8 y. _8 r' U0 xSTM32F103ZET6(144脚芯片)3 `$ }1 x+ H; m: E* o
+ ~1 t/ N* l* g7 Y; `2 ]
7组IO,每组16个,一共112个IO口。3 O0 B6 g! N" r/ m8 o  a& S

1 @3 C( G! E" v8 _GPIOA,GPIOB…GPIOG$ B( ]7 U, E* l, [: [& g% _! R
# {. C  U# j- m
GPIOAA0~PA15(A,B,C,D,E,F,G均是16个IO口)
( \, f1 H* J' e/ R% P$ n: C8 H3 F' P! m. N
FT表示可以容忍5V
/ @1 p1 }( l  s& m4 s
6 t: P" F( _1 Q& b一、4种输入模式:输入浮空,输入上拉,输入下拉,模拟输入; E) H( z' H7 C( w* a8 @: V- B5 s2 Q0 n
0 j# S7 l  F5 j9 n  c7 s
1.GPIO的输入工作模式1—输入浮空模式
. p% j+ D: _6 ?6 |
' v7 ^2 t, u- I7 z- p) _5 b
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mLzJRMkhacVhKb0hRQ3hEUHQucG5nIXRodW1ibmFpbA.png

. v8 l1 f# E- q+ S
4 K2 ?2 l& y+ Q' E/ L2.GPIO的输入工作模式2—输入上拉模式
8 D$ ^. L3 Y" {6 w9 o: M
- m& O/ Y3 I0 j0 }) P$ i) ^0 F' r
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mLzZWNWtYY1VtSjEwTmRiRm4ucG5nIXRodW1ibmFpbA.png

& o' h' U! o1 c" ~7 q$ ^' G7 r
7 I; V2 p$ B7 X) b6 @" U- S3.GPIO的输入工作模式3—输入下拉模式
5 ?. J$ c1 d+ O% F4 {. B( i- H1 ?
0 Z, }% i6 T( z; C
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2VQbVR4NGE1NTBZaEtkcUkucG5nIXRodW1ibmFpbA.png

) i% L' Z$ ~- `! j
% V0 q3 I8 K" ]4.GPIO的输入工作模式4—模拟模式
) @  p) ~8 S* B5 t
* q: ]) `4 B: L% ]3 n9 X: X
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL1R1V2NzUDV4VzRzamJFQXQucG5nIXRodW1ibmFpbA.png

2 m+ p8 S) s6 W" P) @
6 M; q4 p) \5 {& P- B1 z- d0 i二、4种输出模式:开漏输出,开漏复用功能,推挽式输出,推挽式复用功能4 k! h% F  c7 K) ?9 K7 h) |

/ d- }8 R. F  |! O1.GPIO的输出工作模式1—开漏输出模式
9 y. a2 N: [' P6 s# S4 A4 m2.GPIO的输出工作模式2—开漏复用输出模式
1 @3 ]% n# \* o% N, H* d1 d8 P" h( h
# ]; m! n8 }" q6 v- ]
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2Y2UWIxMUV3cnBVTElUaEEucG5nIXRodW1ibmFpbA.png
- A0 m, R- p: M- x4 {
1 F( ^! q- g$ s* n
3.GPIO的输出工作模式3—推挽输出模式% K+ F( D3 {2 J  p3 |, {/ q
8 @2 `) I) ^9 v4 E: O9 P
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2pGMUJyVTdSTWY4MGVNV3gucG5nIXRodW1ibmFpbA.png

& \5 X* k8 R( L6 |5 B2 [7 p( c  f5 i4 t+ N: M7 }% @; d3 E
4.GPIO的输出工作模式4—推挽复用输出模式
- J  Z8 X8 O' T1 F! A" P/ E9 @9 Y' Z! s

$ ^) K9 M( ^. m+ {+ c' @2 M( P9 P) B( _5 W, |
三、3种最大翻转速度:2MHZ,10MHZ,50MHZ6 F! I. D1 ]; x$ M" l, m" Y$ B1 m

! R0 V/ H/ H2 u+ m+ q$ x四、GPIO工作方式/ h2 ~( ^1 C8 P" L: b5 B9 s

: C( U9 ~5 {" i# k- x( ]( B/ I: r推挽输出:可以输出强高低电平,连接数字器件 。6 I& B# I0 m7 g- M/ ~& A

$ Y8 y& M8 w- h3 F: l& q0 k1 `开漏输出:只可以输出强低电平,高电平得靠外部电阻拉高。5 x$ v* w! @; @7 K' C6 @7 A

; ]. Q3 A% a1 \6 J0 d每组GPIO端口的寄存器包括:
+ Z5 U6 L3 d4 F- V: h
5 H/ Y/ T2 B/ ]1 o6 i/ C两个32位配置寄存器(GPIOx_CRL ,GPIOx_CRH)) o' g, N7 o3 L

( J/ b- {. G% r# m两个32位数据寄存器 (GPIOx_IDR和GPIOx_ODR)/ t+ x4 W6 g6 _) o3 n2 p
% _7 \& ^  N( F" D4 I: v/ E
一个32位置位/ 复位寄存器(GPIOx_BSRR)
- ^- ~: a; H  w  p" R/ V
. u: p% J7 @  `; A9 o) Z& y一个16位复位寄存器(GPIOx_BRR)
. m$ Q6 I9 h& p( f- o, p
; f0 A6 ?/ P; c' E一个32位锁定寄存器(GPIOx_LCKR)
" B' @. y: S% u6 I* t$ m3 V  \9 R3 U( L% h, `
每个I/O端口位可以自由编程,然而I/O端口寄存器必须按32位字被访问(不允许半字或字节访问) 。8 }6 Q# J9 l; ~- w

0 b1 f. D* a3 ~( @0 r% g- r" `每组IO口含下面7个寄存器。也就是7个寄存器,一共可以控制一组GPIO的16个IO口。" y9 j: }( S- G4 m& t+ F4 a: L8 x

+ g+ F0 t. e7 h- ^' R* qGPIOx_CRL :端口配置低寄存器/ |! X% r) U3 Y3 M

4 W% O  Y6 Z4 b, @: g/ d) H" n3 [GPIOx_CRH:端口配置高寄存器5 _, k7 q! N! `+ K0 V/ I5 n6 \

' H8 f+ L& t+ {0 M6 b5 ^GPIOx_IDR:端口输入寄存器
. x4 e" L1 @6 @# a' r2 ~, @& |6 P
GPIOx_ODR:端口输出寄存器
3 z) x6 M' y2 y5 k. W$ u6 T3 h* N) ~+ b5 |1 G& G* o
GPIOx_BSRR:端口位设置/清除寄存器3 B. c  G# l. Z, C& d4 b- i
! b1 R, A8 s7 M
GPIOx_BRR :端口位清除寄存器
4 K! J. h! a; ]( r9 p- K% m( p
GPIOx_LCKR:端口配置锁存寄存器
. W0 ?4 Y$ S! D8 b
9 @: e6 G. L3 X1.端口配置低寄存器(GPIOx_CRL)和端口配置高寄存器(GPIOx_CRH)
" V+ S2 L7 B5 v- M2 P* x9 R, i' B
# j/ F/ D4 [( X
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL1BhT0JSTGNqVE1vRkQ5c3oucG5nIXRodW1ibmFpbA.png
; o- {" }% I( f

. w8 u5 _* O6 k- O2 o5 W2.端口输入数据寄存器(GPIOx_IDR)4 L: \" U: K7 F9 B2 R5 H
( y# Z, _2 o3 i3 A# t) |2 Y9 t
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL3BxcG1UTjV5cUowYVd3TEEucG5nIXRodW1ibmFpbA.png

) g# U' ]% z; v' U/ |8 \5 N% d. I& Z4 Q- ~* m$ O: g# h$ M
端口输出数据寄存器(GPIOx_ODR)
, C* M6 M6 Z# a3 [' N! R0 E
0 T0 J6 O' ]5 K3 T- [) t! x9 A
" m0 d; u. ~" t# u! o( F4 U

+ Y; A6 E5 I' ]3.通过设置ODR控制端口位为上拉还是下拉输出模式
8 v4 O3 g; v/ c' v- t* v8 |3 n' K' [8 e; V% Q" A# |9 v- ]! x  H
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL0VyV1RRYTFtM3NNVHR3TXEucG5nIXRodW1ibmFpbA.png
; i/ \1 i9 N# g  Y/ I
/ n& m% r4 D  h+ E
ODRx设置为0就是下列输入,ODRx设置为1就是上拉输入。) @0 D2 u$ p* j+ H( c8 k

# r7 s  _$ x, d& A' ~4 a4.端口位设置/清除寄存器(GPIOx_BSRR)/ W4 H6 J6 h% `' W* w9 P8 Q; v2 G+ V! W
- L1 M3 a  Z  ^5 {; Z9 y
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL3htWllNTVAzbVVJd2JTU04ucG5nIXRodW1ibmFpbA.png

; ~8 b( v4 o# R, L: @1 ]' S' q
% g3 L2 c# Q+ ^: P* E% w! A端口位清除寄存器(GPIOx_BRR)4 [2 X* h$ t& N. r+ X' k/ ?( H. j

3 B& \! v" _1 d) B5 K通常就采用BSRR的低16位和BRR的低16位,因为BRR的低16位与BSRR的高16位作用类似。
: ?; @5 F1 N3 s* A4 P4 Z  h' R7 C  P5 ~, S
5.端口复用功能: STM32的大部分端口都具有复用功能。 所谓复用,就是一些端口不仅仅可以做为通用IO口,还可以复用为一些外设引脚。. d2 `5 ]* w- I8 u: @9 N

! u; e& W* `0 |6 Y# F6.端口重映射功能:就是可以把某些功能引脚映射到其他引脚。比如串口1默认引脚是PA9,PA10可以通过配置重映射映射到PB6,PB7。: \/ \- ^$ H$ e2 n) ?

/ Z! S  ?/ t1 S0 R和51单片机相比,32所有的IO口都可以作为中断输入。; L+ L- b7 c5 A) |& ~+ A
+ y/ J  N. e5 g( q0 |, c8 ^; Y
4 z5 n$ p8 X. `; O9 K: J# w
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 手机版