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

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

[复制链接]
STMCU小助手 发布时间:2021-11-26 18:00
% _% N9 k+ |) L! _* u7 n, W) k
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2tyMmtLNThDemU0UGx6bFUucG5nIXRodW1ibmFpbA.png

" O4 A9 K) }8 ~& c5 G8 M+ W9 \7 d& F! X
STM32F103ZET6(144脚芯片)! {* D: l8 ]9 K+ [
( B+ w. t* X! d# |# L3 C4 |2 b
7组IO,每组16个,一共112个IO口。0 @" N0 c- H2 J+ J, u* ^- A

1 K& a: y4 @; ^/ ~: j* EGPIOA,GPIOB…GPIOG. i* ^' ]4 p* z% h

' ^8 @+ |* q1 I/ M# d( ZGPIOAA0~PA15(A,B,C,D,E,F,G均是16个IO口)7 j5 u( h: `+ u( e0 T
, [  a  x: L/ e8 b0 R4 g- p) ?; e6 R
FT表示可以容忍5V
' t* ^) u" z* m) u. a/ m5 Z( x% G9 d' J+ Q8 {( ]+ t4 K8 k6 V7 q
一、4种输入模式:输入浮空,输入上拉,输入下拉,模拟输入# I' T, t/ A  B+ S" p! n2 C/ A
* R+ W/ z9 g) D! U0 \2 j) U
1.GPIO的输入工作模式1—输入浮空模式
: f* i9 T* k0 l4 G8 @" p2 _4 |6 k/ z2 R6 J! x5 L
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mLzJRMkhacVhKb0hRQ3hEUHQucG5nIXRodW1ibmFpbA.png

9 q+ a& F) \# K* h) R- j& M3 i; |* `6 m3 O" J
2.GPIO的输入工作模式2—输入上拉模式- E2 }! z2 J% ?" D% H; T$ |% S) {2 O
! z0 O3 ?) K9 n9 x. W
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mLzZWNWtYY1VtSjEwTmRiRm4ucG5nIXRodW1ibmFpbA.png

4 {: G; h# S/ i& f0 n$ f. }0 r$ |( R1 y& N6 r! U4 \
3.GPIO的输入工作模式3—输入下拉模式
0 |3 _3 |3 L8 G; j3 n3 T
2 d6 d& X# i2 `) ]0 _, a
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2VQbVR4NGE1NTBZaEtkcUkucG5nIXRodW1ibmFpbA.png

5 l6 U" G3 i. C8 C2 H2 c( s% d' G7 _, `8 u
4.GPIO的输入工作模式4—模拟模式
$ L& h0 s; \" F( k0 B6 o0 M  `/ p1 W+ n' P* b
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL1R1V2NzUDV4VzRzamJFQXQucG5nIXRodW1ibmFpbA.png

! |1 V  X) y; @$ }. d4 m4 B5 u7 z0 x& R. x; W- L7 \3 a5 \
二、4种输出模式:开漏输出,开漏复用功能,推挽式输出,推挽式复用功能$ o1 @$ F3 g7 R) ]" b3 r$ X
$ A: {% z2 F: d: N: }) ^
1.GPIO的输出工作模式1—开漏输出模式2 z! i6 Y& k  r5 F( D( Y5 G: I
2.GPIO的输出工作模式2—开漏复用输出模式
; Z6 C8 v& `, A7 _: u( l4 ]* f/ a" z" {" R5 a  k- d6 `! |
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2Y2UWIxMUV3cnBVTElUaEEucG5nIXRodW1ibmFpbA.png

$ g# Z5 I  r$ o$ o" w8 L+ q1 ~- H$ y5 w& g
3.GPIO的输出工作模式3—推挽输出模式
; t! F9 q$ ~( {2 t, s1 Z& t2 i5 p: j$ B% Q% r" g8 @
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2pGMUJyVTdSTWY4MGVNV3gucG5nIXRodW1ibmFpbA.png
7 x. s4 ~& ?' K0 @

5 \/ M7 B; ^! \: ?1 u( [5 K9 Q$ V4.GPIO的输出工作模式4—推挽复用输出模式
1 y: L0 K- B$ S4 r3 Y+ [# N* h; f6 a3 m- R. I

, A5 T7 R. o3 s6 @" |( D3 u
0 R# S/ P+ g5 p5 c0 [+ ^3 _三、3种最大翻转速度:2MHZ,10MHZ,50MHZ! y6 z+ A3 R* U4 E5 ^# {+ U
& l3 e- F) h9 k2 ^, S7 ?
四、GPIO工作方式: L! x: ^3 E1 j" W/ h( Z1 E0 W

+ E# N+ s+ c' Q4 j. Q2 N推挽输出:可以输出强高低电平,连接数字器件 。1 V9 L2 O3 t6 F* w1 R/ A: M
$ f  @2 I3 u/ w( ^& y  p
开漏输出:只可以输出强低电平,高电平得靠外部电阻拉高。% x4 y. D5 {2 X' c5 ^2 u1 Q5 e9 Z3 ^( Y8 h
' c2 O! J& a+ j& Y" f" N
每组GPIO端口的寄存器包括:
( k+ k- f' b% [3 t. |/ L7 ?3 T  [& m
两个32位配置寄存器(GPIOx_CRL ,GPIOx_CRH)
  O6 `0 i: W! o( T/ f* d6 L( W. v, \6 c! K# T6 J: h& y* e
两个32位数据寄存器 (GPIOx_IDR和GPIOx_ODR)
' \( ]0 _8 G/ Y4 i3 ?2 N; ^) }$ C5 \
7 y8 e  O* q# j- q8 N- ^/ A一个32位置位/ 复位寄存器(GPIOx_BSRR)
' m, P' d# J* i
" B, I9 S4 r8 ~2 K一个16位复位寄存器(GPIOx_BRR)- F/ I, V8 r/ N5 T( K/ j

9 x9 \( x1 ?/ E! f5 E9 ?一个32位锁定寄存器(GPIOx_LCKR)6 u- h" g( E+ c2 l# V

9 a8 s0 H0 G: a每个I/O端口位可以自由编程,然而I/O端口寄存器必须按32位字被访问(不允许半字或字节访问) 。$ ]7 F( Y8 }5 [

9 Q" z" T' y0 i每组IO口含下面7个寄存器。也就是7个寄存器,一共可以控制一组GPIO的16个IO口。
5 `  N$ o# V! d0 L4 {# O# B4 K1 |, F: A5 t- ~
GPIOx_CRL :端口配置低寄存器' t' }* |: B5 |" I  Y8 ~
, K2 \0 k7 [1 ]( O- K
GPIOx_CRH:端口配置高寄存器8 j. z% o! n0 X" v
0 ]3 J- D3 ]' q
GPIOx_IDR:端口输入寄存器
/ e7 _- K) ~8 }7 ]! m6 ?2 B: ~3 j; T0 U8 n, r5 s
GPIOx_ODR:端口输出寄存器7 u: r" b) D5 R4 s# t% [- i  G

% w8 `$ {) d9 \$ U. PGPIOx_BSRR:端口位设置/清除寄存器# z$ g/ T6 o- e5 v/ Y1 [, V3 J/ n* [

& e0 Y" q" `) @6 X) xGPIOx_BRR :端口位清除寄存器
' K. g2 K* v' T( L+ R" j3 a2 ]9 C; f2 B8 K" u% ]+ [+ O/ d0 u
GPIOx_LCKR:端口配置锁存寄存器% x, ^& t1 h! T9 n8 N" V

. c/ D% h' F" e" O1.端口配置低寄存器(GPIOx_CRL)和端口配置高寄存器(GPIOx_CRH)
! K& O" e8 R. e/ a- W# V8 R" @
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL1BhT0JSTGNqVE1vRkQ5c3oucG5nIXRodW1ibmFpbA.png

8 v% V  K7 N7 W* C0 @* M/ K6 a5 t* F% q" z
2.端口输入数据寄存器(GPIOx_IDR)2 E' E! [/ Q9 b0 E) t: ~/ c

/ D, h' g# |3 G0 q: e
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL3BxcG1UTjV5cUowYVd3TEEucG5nIXRodW1ibmFpbA.png

' n0 y1 |" ^: a2 u" ?+ h% o2 V: v+ ?. z
端口输出数据寄存器(GPIOx_ODR)
0 b2 l7 I- c: t* f9 I" {6 v! h2 H8 v( A8 U/ N; u# G
. y9 U4 u$ M" v6 z8 x: _/ V" w
: c. E% P: F- M( d. k1 y
3.通过设置ODR控制端口位为上拉还是下拉输出模式- ]1 f$ \! d, _' ~  V) n

; s/ H6 N2 v) N9 f
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL0VyV1RRYTFtM3NNVHR3TXEucG5nIXRodW1ibmFpbA.png

9 _' i" j! s' Q( C- G8 b5 A2 k1 v% _1 T& C# ?$ Z
ODRx设置为0就是下列输入,ODRx设置为1就是上拉输入。
% P) k# M9 H) ~) A# ^! b& T; @8 l* L( y9 y  @1 y% @
4.端口位设置/清除寄存器(GPIOx_BSRR)& _; Q* i. |) a% O" ]1 Y5 K* c# m

3 r/ J6 Y) ^7 \* e
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL3htWllNTVAzbVVJd2JTU04ucG5nIXRodW1ibmFpbA.png
# j* F" \3 o. a  ]! X
5 t5 h% ~; O, j) e+ W. t
端口位清除寄存器(GPIOx_BRR): r% B! w. N1 G
7 V8 q  q  \' Z9 ~
通常就采用BSRR的低16位和BRR的低16位,因为BRR的低16位与BSRR的高16位作用类似。
# [! C# c- k% A
  ^# C8 Q$ ]) s; R% c4 C5.端口复用功能: STM32的大部分端口都具有复用功能。 所谓复用,就是一些端口不仅仅可以做为通用IO口,还可以复用为一些外设引脚。8 P2 v7 Y: K& T8 {8 v
  x# a/ B' W( N+ {  L' E
6.端口重映射功能:就是可以把某些功能引脚映射到其他引脚。比如串口1默认引脚是PA9,PA10可以通过配置重映射映射到PB6,PB7。; @0 M3 R  b  W' Y
; b  o' i4 k1 \6 g
和51单片机相比,32所有的IO口都可以作为中断输入。
- O4 z6 o  G" ?
6 i! H3 C; ]  i% N% K
8 i/ H/ e7 \; v. s! e
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2Y3UjRKRWhXMVM4U0M5NVQucG5nIXRodW1ibmFpbA.png
aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL3N6SUlKOGR2UldRWmJZTmEucG5nIXRodW1ibmFpbA.png
收藏 评论0 发布时间:2021-11-26 18:00

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版