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

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

[复制链接]
STMCU小助手 发布时间:2021-11-26 18:00
. ?& G& U7 b5 ]4 p
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2tyMmtLNThDemU0UGx6bFUucG5nIXRodW1ibmFpbA.png
: [; E1 m0 J: M( _4 v

3 h7 |5 D3 P* x3 d! N2 \& a" MSTM32F103ZET6(144脚芯片)' v* I  s1 y% L9 u& C

# p1 @: G2 o+ N. i. r7组IO,每组16个,一共112个IO口。7 f3 o' B# ^; e( e  l* r2 a1 `5 G- B
, N1 M$ y* S7 M- {. p, E9 ?
GPIOA,GPIOB…GPIOG
4 Y+ j5 E3 Y$ n4 Q$ M* A7 H2 a% d% H
GPIOAA0~PA15(A,B,C,D,E,F,G均是16个IO口)7 v  P! x+ Z9 u
! K6 D" {5 a& e1 E
FT表示可以容忍5V, i& e' f8 q" J5 @' b

: ]4 s( }& n# R一、4种输入模式:输入浮空,输入上拉,输入下拉,模拟输入8 s4 ]( A1 X3 W9 w4 V4 g! i: B
( W# p9 ^& w6 D$ J$ p2 W4 ]! R
1.GPIO的输入工作模式1—输入浮空模式
# I( [1 t: _) L, ~+ b3 U
" Y  o. Q& K  t) D$ U
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mLzJRMkhacVhKb0hRQ3hEUHQucG5nIXRodW1ibmFpbA.png

+ l9 c1 Q( j% o/ J  D' U* Y! u. R3 z! C' [
2.GPIO的输入工作模式2—输入上拉模式" s8 B* V1 _! p' r: }+ x
- d3 g1 U8 j) E; w3 `( Y7 e
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mLzZWNWtYY1VtSjEwTmRiRm4ucG5nIXRodW1ibmFpbA.png
* [/ r( h) k' R+ F; p
" N  E' c: g3 o0 Y6 P, V
3.GPIO的输入工作模式3—输入下拉模式
0 R5 G9 H. X1 s0 |
9 }$ O- C1 C; n; \3 i& z7 Q3 p
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2VQbVR4NGE1NTBZaEtkcUkucG5nIXRodW1ibmFpbA.png

( C  d: a- m3 j3 b' A
  F  E* p1 c7 R  T4.GPIO的输入工作模式4—模拟模式
/ p3 [8 B+ U$ J5 V+ U
4 j( g3 u4 H! z2 P8 p6 Z9 w5 p5 ]
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL1R1V2NzUDV4VzRzamJFQXQucG5nIXRodW1ibmFpbA.png

. {1 v1 a3 ?$ r! J# G9 i3 f* S8 R1 O0 l! R8 \) `+ z; [
二、4种输出模式:开漏输出,开漏复用功能,推挽式输出,推挽式复用功能+ k: C: e( a4 V& R; _
2 k" b; h. ]2 P; C0 z8 d
1.GPIO的输出工作模式1—开漏输出模式6 F9 m) @3 E' ]' q- a4 k) i
2.GPIO的输出工作模式2—开漏复用输出模式; u- g& v* j8 O  s3 K# p' i, E
  t$ b' C' r, D: i; d0 N
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2Y2UWIxMUV3cnBVTElUaEEucG5nIXRodW1ibmFpbA.png
$ l; ~& k3 Z: M8 O" `
3 @4 t$ J  c. k1 x* J7 z- Z+ Q- q0 \3 c
3.GPIO的输出工作模式3—推挽输出模式8 U- l( W- b7 \1 v- J

& ^0 |2 s0 [2 A8 k0 W
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2pGMUJyVTdSTWY4MGVNV3gucG5nIXRodW1ibmFpbA.png
$ L. E- t) j+ l; q
2 i9 o6 ?% r1 ?  b
4.GPIO的输出工作模式4—推挽复用输出模式5 X. Y: Y; ]- `8 K9 ~) S6 H3 m! q

: Q0 v! x9 D. ?9 L: @/ I+ O
2 A+ X- j6 {4 T; E
6 J  L: S: G/ _$ \3 e  Z# A
三、3种最大翻转速度:2MHZ,10MHZ,50MHZ  m; z( E! h" T0 U, y

5 q* Z, f* W2 k( [0 A" _四、GPIO工作方式6 s' n! C- @% c

9 Z: f+ f2 D' ]! k2 h6 Z推挽输出:可以输出强高低电平,连接数字器件 。
) ~6 B  }1 G7 }' q8 n8 ]" L3 C
开漏输出:只可以输出强低电平,高电平得靠外部电阻拉高。
1 y8 D9 Y# ~* d1 l: V8 c( r" a1 k2 e7 E0 a  R
每组GPIO端口的寄存器包括:2 A! O8 F& X. T4 C' i2 i
- X, h. \5 w2 {1 S, _
两个32位配置寄存器(GPIOx_CRL ,GPIOx_CRH)8 @' [2 ^1 O* ~( O/ B- t

. y$ h5 E! Q+ h3 S8 m两个32位数据寄存器 (GPIOx_IDR和GPIOx_ODR)
. d+ Q! x) X- ~1 W/ x$ [
5 A2 p5 b; ^, B一个32位置位/ 复位寄存器(GPIOx_BSRR)
2 y; |  e* b8 M% D3 g  y3 F2 e# y' H: `) J, f2 Z3 S
一个16位复位寄存器(GPIOx_BRR)
  p& y7 f/ ~% @! z/ ]- H
- I: z' S- s' A, M- N! G% x: e一个32位锁定寄存器(GPIOx_LCKR): I8 |1 E& \  p

( L) |; K6 v  ~( P$ @0 F; `% a, G$ d每个I/O端口位可以自由编程,然而I/O端口寄存器必须按32位字被访问(不允许半字或字节访问) 。
2 L6 I+ [8 G+ e' \/ e, F; W9 ?! [, P' Z' L/ Q. n/ E
每组IO口含下面7个寄存器。也就是7个寄存器,一共可以控制一组GPIO的16个IO口。
( i  f" Z' n2 X
& E' O! |- v, w1 K. }8 M8 Z* KGPIOx_CRL :端口配置低寄存器
8 Z" Y5 N' ]  L& u- k
: H, h3 Q; U) K. Q& `4 ^% J# N* ]' GGPIOx_CRH:端口配置高寄存器
2 H& J# G4 u0 z
+ p1 T, h/ `1 _GPIOx_IDR:端口输入寄存器
3 b& J3 w  Q) ]7 E& Z
, y  S' Q9 q4 ^0 v* p0 _  AGPIOx_ODR:端口输出寄存器2 ~3 m2 o1 o% @- b+ l
$ n3 d( }' j: j) f0 E/ G
GPIOx_BSRR:端口位设置/清除寄存器
) [- M! Y8 X3 K1 s8 ?, k% m/ y; J6 g$ @3 n1 S3 e; `$ v6 a
GPIOx_BRR :端口位清除寄存器% K) G8 e2 i. i/ t! d( {% M

# Q" f9 P: P# XGPIOx_LCKR:端口配置锁存寄存器2 j6 h; A( t5 o/ j8 {( B
3 H0 L" z7 i( S* Z$ h; x, t& A; h
1.端口配置低寄存器(GPIOx_CRL)和端口配置高寄存器(GPIOx_CRH)
# d3 H/ D/ I6 k  o0 I9 B% Z( E
9 ]; k4 h, ^" t$ }
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL1BhT0JSTGNqVE1vRkQ5c3oucG5nIXRodW1ibmFpbA.png
$ ]6 w0 u( ~% [

1 C, a4 ^4 ]  v, e2.端口输入数据寄存器(GPIOx_IDR)+ m$ j* s: C( \% Y

. O: k. V9 J3 H- g2 c
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL3BxcG1UTjV5cUowYVd3TEEucG5nIXRodW1ibmFpbA.png
& q$ \  b8 x/ u( ?) f2 O

- ?! g5 g0 {; l% Q# u端口输出数据寄存器(GPIOx_ODR)& K8 o3 Y4 V  B6 Q1 k, k* r

; n" C, Q# P& h6 L9 `9 A
% M; G2 K* O* x- x
1 `- ~# n9 P; \( u9 c  d1 r
3.通过设置ODR控制端口位为上拉还是下拉输出模式" J) q; A5 g8 S) M( P  S3 G

& u) k  L5 Z8 L) `3 T* O
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL0VyV1RRYTFtM3NNVHR3TXEucG5nIXRodW1ibmFpbA.png

2 K1 g* _$ z+ v; N& A' B: |( d
- h) h  U+ _# R& l5 V/ I- nODRx设置为0就是下列输入,ODRx设置为1就是上拉输入。$ [/ f, N0 ~) _9 [- ?: F! l' ^
! y& X9 ]4 ?1 F0 N3 ]  u' \
4.端口位设置/清除寄存器(GPIOx_BSRR)
8 H3 T+ @0 o$ ?5 h: k
* |# u. B* `! V) t" _+ o
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL3htWllNTVAzbVVJd2JTU04ucG5nIXRodW1ibmFpbA.png

; R! i/ k/ O! q" \' V# W0 `7 Q& n3 ?3 A% D  n& M1 o- J
端口位清除寄存器(GPIOx_BRR)% d9 h! Z' L: t- E2 e$ c
1 N* I; W9 Y) y3 H
通常就采用BSRR的低16位和BRR的低16位,因为BRR的低16位与BSRR的高16位作用类似。
9 j7 P5 I- O3 `2 G' w' E4 |, M( O" V" I+ p  V
5.端口复用功能: STM32的大部分端口都具有复用功能。 所谓复用,就是一些端口不仅仅可以做为通用IO口,还可以复用为一些外设引脚。
  ]* w1 g7 N$ u! I( M
* c9 i1 e3 b) V" b# R6.端口重映射功能:就是可以把某些功能引脚映射到其他引脚。比如串口1默认引脚是PA9,PA10可以通过配置重映射映射到PB6,PB7。' H: n) P$ _  c" x$ R

- j' t/ R- @: j; ]和51单片机相比,32所有的IO口都可以作为中断输入。
0 T& O' e  S- P- n# Q* B$ D
, L9 _6 ^& B6 C0 D& p; N
! z/ y9 j8 `5 r4 q, p1 R5 w' |3 h
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 手机版