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

基于STM32中GPIO四种模式经验分享

[复制链接]
攻城狮Melo 发布时间:2024-5-29 17:54
本期我们就介绍STM32的GPIO的各种模式。( ?- f5 S3 d0 Y9 c

* C& ~5 [! y+ s3 e
STM32的GPIO大致可以分为四类:输入模式、输出模式、模拟模式以及复用模式。而每个都有细致的区分和小类。4 U# j6 Q! F' E! x1 r! @

7 _) z3 J1 C2 ~% s
输入模式4 ?9 q1 V8 l2 @8 o7 Y7 G
首先是输入模式,顾名思义输入模式就是用来向单片机输入信号的,但是这里的信号需是符合STM32的高低电平信号。  R  C  C, ^  V3 I: Z& d. z( O9 S) D
7 K# N5 r) K& C
STM32单片机的IO口电平兼容CMOS电平和TTL电平。对于逻辑电平0,所代表的电压范围在0.8v以下,而大于2v的话则代表逻辑1。STM32工作电压范围为2V ≤ VDD ≤ 3.6V。对于COMS端口,逻辑0的电压范围为-0.3V ≤ VIL ≤ 1.164V。至于高电平,STM32支持5v和3.3v。具体须看STM32芯片手册以定。7 `2 }1 Z2 T$ b' R3 ~7 o' `4 m

2 g' G1 k: \4 `( y  @- M
而输入模式根据上拉电阻的不同分为输入上拉、输入下拉、输入浮空,它决定着当没有信号输入的时候,GPIO的电平是高电平还是低电平亦或者是不确定电平。
) t; d, \% d% |, G0 H* `6 V& m, L' C2 A) s6 C
微信图片_20240529175041.png
5 P8 S! C: L4 n' k% w
. F: T+ E# U) H6 Z
输出模式
  j. e3 l: R5 S1 Q7 |+ Z
顾名思义是单片机对外输出信号,这里的信号也是高低电平,外部器件可以读取输出端口的高低电平以达到控制外部器件的目的。" ?$ G0 ^# C% a
" s$ P& Y) {$ l: G, A
输出模式除了上拉下拉电阻用以避免浮空状态的高低电平之外,还区分了推挽输出和开漏输出。4 A9 M4 [7 e. u' G' r# V% _

" \: K" Q" L0 C" T$ I5 r/ V 微信图片_20240529175029.png
5 u3 b+ Z; e& v
' \* K  h( ]$ Q: J如图即为推挽输出的示意图,电流通过两个MOS管/三极管由控制引脚形成一推一挽,故名推挽。
: d0 [- m" f! @# q0 M
1 W& `0 G  N/ C推挽输出的好处是其可以有较大的输出电流,如果说后续的负载需要较大的电流的话,推挽输出是一个非常好的选择。
, h. j$ g0 ~0 ^) i4 b. A

& g' B! e% {5 L: b但是有利有弊,由于其推挽输出的电路结构,导致不能同时有两个推挽输出的IO口相连接。
' U$ ~, _8 [- r) ]
1 g# v; K) u* B- B$ Z/ u9 o* ~# Z, l
微信图片_20240529175025.png / p5 K0 L; }5 u
0 V! ?" B$ x+ n2 s6 W$ B! h2 e  Q& |
否则电流就会通过三极管/MOS管导通,导致GPIO烧毁,因此如果使用GPIO的推挽模式,则必须避免IO的相互连接,也就是线与。
5 h# l$ @9 L6 n8 y" q8 C9 Y. N; r3 o5 F- u
而另一种模式则是:开漏输出- b$ f+ N; }% ]
# E2 `; ~5 O& e2 X! ?& W
微信图片_20240529175020.png / V: a: a& Q- b7 B  O: T
0 s  `' e1 X2 d
由于其上拉电阻的存在,因此开漏输出的IO可以实现线与。但是同样的是这个上拉电阻的存在,导致其输出能力会不如推挽输出,因此开漏输出通常用在总线应用上,例如I2C的SCL和SDA线通常会挂载多个设备,因此通常这时候我们通常就会使用开漏输出,尤其是使用模拟I2C通讯的时候千万要小心不要使用成推挽输出了。' P$ }1 O7 C, C+ ^8 ^
+ B% [2 x1 T" U& X/ @% R1 N% ]3 ~
模拟模式/ a4 g8 a( Z! a0 v
模拟模式通常应用在ADC或者DAC中。% v' @! ^5 j3 n
9 I8 J% r; ]2 Y( E. ?
微信图片_20240529175016.png ) Q+ i0 i- o$ S
+ Q% }) y4 s# c4 t
为了减少上拉电阻和下拉电阻对ADC采样或者DAC输出的影响,通常模拟输出会关闭上下拉电阻,保证模拟信号不失真。" V& d7 b6 T- @" e- R
! a7 _, W" o( e5 @2 Q
微信图片_20240529175013.png
! `, b! t( I, e( t$ C# j5 W

7 n5 h; l; e: P/ S" z+ y1 T所以如果你的ADC和DAC的准确度有问题的话,可以检查一下是否加了上下拉电阻而不是将IO配置为输入模式。
( E! U( m% i4 G+ y  m6 r' X0 E3 G
+ }3 W/ ?- f. @) h2 }7 B7 z5 R6 h9 i
复用模式
5 d( o( C, |4 f
' u7 ~2 G' o% R& h; c. `. x 微信图片_20240529175006.png
+ P% j, y7 q" Y6 a) K
6 {' A1 S: r& [* H, `1 w
复用模式通常作为外设使用,例如硬件I2C,硬件SPI,串口通信等等,复用下,通常这些IO会有其特定的功能,我们一般不将其作为普通的输入输出IO使用。3 Z. I  g0 Z! A1 j: K! {/ h

' X3 }: s* ]- W2 ^
最后还有一些特殊IO,例如时钟输入IO,事件检测IO等等。
# G$ S2 u! O0 f. ^, p% U0 B3 T6 p
微信图片_20240529174959.png ' y2 [3 ?1 r- H0 j1 Z% j5 g

7 s7 ~! P: {/ |7 m. q. C' w5 Y4 a! d4 t) S
转载自:电路小白
/ }" ^+ m5 X& g4 J! v( N如有侵权请联系删除
" E1 }; ?8 e. K! P( C* ?& V9 w' }1 T- O/ r3 _( }# ]0 j/ c/ K
+ o4 X4 |7 @* i7 m1 f( K% q
收藏 评论0 发布时间:2024-5-29 17:54

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版