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

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

[复制链接]
STMCU小助手 发布时间:2021-11-26 18:00
* @, B& [$ t2 _
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2tyMmtLNThDemU0UGx6bFUucG5nIXRodW1ibmFpbA.png

# y! h. [7 l9 U: ]
% [: H* o& l9 n! J  T* l* ]* kSTM32F103ZET6(144脚芯片)
4 `# }; y( d6 W/ L
9 j+ l0 h% w/ Z3 `  f; V3 ~) y7组IO,每组16个,一共112个IO口。& K" `7 i1 n9 a7 E7 L7 M

# T& ^# h8 R* [GPIOA,GPIOB…GPIOG& p; A7 u) X9 N; w) P
+ u/ H. q/ f/ \# b
GPIOAA0~PA15(A,B,C,D,E,F,G均是16个IO口)
9 }5 Q* ]& j1 l4 b/ i3 H+ V: q0 b* f9 n% L+ X' f
FT表示可以容忍5V
% N0 ~) Q- F5 m5 [
( w' L3 u5 H5 Q8 z0 e- V+ L一、4种输入模式:输入浮空,输入上拉,输入下拉,模拟输入5 g% R/ ^( @1 H4 K- S' J- f

3 a, L+ V. E; q# P) G1.GPIO的输入工作模式1—输入浮空模式
, ^0 L' G  i% E* P. d
2 F  I7 N8 X' H, [) O0 X+ L
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mLzJRMkhacVhKb0hRQ3hEUHQucG5nIXRodW1ibmFpbA.png

0 J' L4 r. \' K* }, l+ C! F8 k& A) s, Z2 T, [( e, P$ Y* r
2.GPIO的输入工作模式2—输入上拉模式
# U. t, \" C$ ]% J' o+ {$ b1 {+ B4 s/ W/ G* a( L$ K" e# N9 o
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mLzZWNWtYY1VtSjEwTmRiRm4ucG5nIXRodW1ibmFpbA.png
8 n. [! z6 J7 I1 ~. J9 W

! A/ k9 ?7 J5 ?4 d3.GPIO的输入工作模式3—输入下拉模式) p/ j. _5 U! q- Z8 S
8 W6 c0 ^+ g" R
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2VQbVR4NGE1NTBZaEtkcUkucG5nIXRodW1ibmFpbA.png
% c* L. f/ [9 b  I3 B
3 A8 ~  e+ t+ q, q
4.GPIO的输入工作模式4—模拟模式# l( L! s% }7 R5 S5 y

2 q" Y9 c( I8 e5 P
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL1R1V2NzUDV4VzRzamJFQXQucG5nIXRodW1ibmFpbA.png

6 G9 d. a0 z* L8 e1 i1 Y& E
1 ~, L7 @' h  A2 l/ q1 h5 |二、4种输出模式:开漏输出,开漏复用功能,推挽式输出,推挽式复用功能9 P3 e  U9 y" e: O# J% M. C

6 [3 O" p9 z  ^: R+ p" O9 I! Q8 p, N1.GPIO的输出工作模式1—开漏输出模式
9 w6 n. I7 H9 O, d! }& A) X% p9 Z2.GPIO的输出工作模式2—开漏复用输出模式4 ?* [2 A5 ~% h5 p. K, Q' D& L

5 o7 l0 ?, ?  D. m' o% ?  R' F5 p
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2Y2UWIxMUV3cnBVTElUaEEucG5nIXRodW1ibmFpbA.png

. U' c# J$ e; f  {0 U- P1 D7 s3 q! ~7 d
3.GPIO的输出工作模式3—推挽输出模式
9 h; Z' {4 l+ @! e7 k7 d  U
" k  x) n+ ^1 v7 D
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2pGMUJyVTdSTWY4MGVNV3gucG5nIXRodW1ibmFpbA.png
( k/ Y5 q6 g8 y/ ^5 u; v, K
+ W; V9 T# {4 I+ n3 I$ S
4.GPIO的输出工作模式4—推挽复用输出模式+ @1 |7 f$ \% n# V$ R; r4 d, ~. h6 [

- Y2 E( a6 J8 ~
. n0 c+ y$ ~* b2 M' i

+ {+ T! _1 I. `: f2 v+ ?6 Z三、3种最大翻转速度:2MHZ,10MHZ,50MHZ
6 t% t0 R6 k2 v# m# G! w$ ~% W8 ]4 a: A
四、GPIO工作方式
4 q8 N6 s: ]3 a9 l. q9 |% r. o1 |4 R
推挽输出:可以输出强高低电平,连接数字器件 。( [% ]6 O1 n! r% P+ o  r

- c3 v7 N; e3 p6 W# t2 C( G& C& O: `开漏输出:只可以输出强低电平,高电平得靠外部电阻拉高。9 H. R4 m, N0 A& U- k% p. R

1 V' [' C; \1 U/ c8 U每组GPIO端口的寄存器包括:
* P  K' G) K- l4 x/ }/ X
4 @3 X; Z$ b9 L* y. m# K1 h' d两个32位配置寄存器(GPIOx_CRL ,GPIOx_CRH)
' M8 O* B2 k" Z; v6 S# ~! F; n1 @1 [; B6 a" L% d, \0 Q
两个32位数据寄存器 (GPIOx_IDR和GPIOx_ODR)
  ^6 P  d1 Z0 o: }* Q
1 _2 J* e* O; o% C  C  T$ T一个32位置位/ 复位寄存器(GPIOx_BSRR)
+ W% w' k3 @2 z0 b; m6 T  J0 N- S- x
一个16位复位寄存器(GPIOx_BRR)" R1 o! ^- Y1 r. u" j

/ ?" J1 b/ U; |3 [5 C- }一个32位锁定寄存器(GPIOx_LCKR)
- {9 L( U) H* o$ P9 ^* O6 M& {* F+ c: @
每个I/O端口位可以自由编程,然而I/O端口寄存器必须按32位字被访问(不允许半字或字节访问) 。0 J5 e6 z( `7 W8 M5 p3 N
1 Q$ v, x# z9 `) ^; D, J1 g1 O
每组IO口含下面7个寄存器。也就是7个寄存器,一共可以控制一组GPIO的16个IO口。
) j8 Q/ u) m( p, [; U$ H
2 t4 s" s$ a. T. eGPIOx_CRL :端口配置低寄存器
: [7 x/ Q3 x+ j* z& K" x7 \3 i" D, i% ?: ?
GPIOx_CRH:端口配置高寄存器5 {' X  x; s& n$ q
2 ^7 p8 c6 f; V1 w% M. e# ?
GPIOx_IDR:端口输入寄存器
3 f( M* p/ H; V& j9 j1 r" {1 y' r8 P5 l3 m6 l9 ]" v
GPIOx_ODR:端口输出寄存器
7 y4 A9 H6 G( c
2 x: R" n& Y5 x6 w8 hGPIOx_BSRR:端口位设置/清除寄存器) }4 w; s- P% Q+ l/ s0 ^1 t

* H, ]6 M2 a' k% jGPIOx_BRR :端口位清除寄存器
$ G1 J2 b: w, O7 a* V
6 e$ P, U+ d) M' n/ ^GPIOx_LCKR:端口配置锁存寄存器
9 |- m: J* r* r- |9 L) l3 s
* x2 _: m# S7 {, }% ^" `1.端口配置低寄存器(GPIOx_CRL)和端口配置高寄存器(GPIOx_CRH)" c' o( u- O# x9 r: Q8 _

9 _8 n" J3 `/ k8 D$ B5 b
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL1BhT0JSTGNqVE1vRkQ5c3oucG5nIXRodW1ibmFpbA.png

! U  M8 v8 h5 c9 `0 U- ]; E# k  }6 z) f! f( v0 U/ j
2.端口输入数据寄存器(GPIOx_IDR)6 g4 X! `, q9 P4 A. Z- h

( x% T  B7 D2 d4 ]. t; P: q- T
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL3BxcG1UTjV5cUowYVd3TEEucG5nIXRodW1ibmFpbA.png

. a- G3 C. |% i8 U5 R4 j% Q2 p" f2 w% r7 E) n0 }2 L6 f
端口输出数据寄存器(GPIOx_ODR)
# W) T1 U7 f: {
0 j4 h8 N+ c8 `* f. r
% [8 t7 |0 C0 Y, ^& F

: u8 s8 H' Q: T  h- w" |/ X3.通过设置ODR控制端口位为上拉还是下拉输出模式) `0 r* S! U" j" o# F& ]% M* U
* _- B& K- s4 R; i* j
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL0VyV1RRYTFtM3NNVHR3TXEucG5nIXRodW1ibmFpbA.png

( l5 @) ~, e; p# z. J$ t- m7 A- U( \- C. W2 }; m7 r
ODRx设置为0就是下列输入,ODRx设置为1就是上拉输入。6 E+ p( {$ T1 ^2 V2 \

# @0 X& {) A0 t( ]4 F4.端口位设置/清除寄存器(GPIOx_BSRR)
+ r7 B( L; r' ?" j6 \- s9 b0 R' z, J/ s8 C) X( m5 |+ ?; t
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL3htWllNTVAzbVVJd2JTU04ucG5nIXRodW1ibmFpbA.png

$ Y8 y: l1 I7 G" e1 a$ d
6 I4 H7 G" B2 `, s0 H  r端口位清除寄存器(GPIOx_BRR)0 ]0 q4 `# R' f" w& g& _+ Q/ }7 I# S

. T5 n7 m! v" H$ \通常就采用BSRR的低16位和BRR的低16位,因为BRR的低16位与BSRR的高16位作用类似。
" @% P% s) ~0 \" z
0 h- E/ Y: t1 R! J- {; a5.端口复用功能: STM32的大部分端口都具有复用功能。 所谓复用,就是一些端口不仅仅可以做为通用IO口,还可以复用为一些外设引脚。
) k* u% s9 g% h/ `& T4 n3 v9 m. F3 o
. d  V5 s) w2 y8 k1 m2 o# t6.端口重映射功能:就是可以把某些功能引脚映射到其他引脚。比如串口1默认引脚是PA9,PA10可以通过配置重映射映射到PB6,PB7。4 O% m2 z( d1 c5 }+ n8 ^. l7 [

4 J; _' |- w' u; o0 V3 f' ?和51单片机相比,32所有的IO口都可以作为中断输入。* u: _4 u$ m* M6 v' ]
4 [$ e' T( g0 \9 _: P' l

7 K3 O& Q% r0 Q7 J5 }3 u& R4 ^4 F7 S, J
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 手机版