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

stm32中GPIO输入输出模式的理解

[复制链接]
fightingboon 发布时间:2016-1-14 10:44
最近学习了stm32的GPIO的相关操作,发现其GPIO的配置模式有好几种,包括:
8 x% N: ?7 E) `2 ~$ t1. 模拟输入;
4 \, o3 W9 g: N% B* x, y2. 浮空输入;( e: U* B" y7 S1 O0 H
3. 上拉输入;% \& b/ Q; i+ A9 W- T
4. 下拉输入;7 W& k" b" \- j6 _6 n) B$ }
5. 开漏输出;
; d$ ~0 U, X- d( i  A$ u0 }6. 推挽输出;
: |+ E6 Q* K8 m( i8 \4 `7. 复用开漏输出;" C* D4 T5 g7 q( g* W6 x( X
8. 复用推挽输出
9 q- l6 @& f5 I
& X8 n" f/ m* G' Y9 F4 g0 f如图是GPIO的结构原理图:
: ]+ I& E- E# L% v% M2 [6 s1 b9 A, N% {$ L" p/ g: q2 z3 J1 t
1 M9 b1 _% k. s' K! Z2 g5 q0 Z
初学感觉起来,还是挺复杂的,我在这里想简单的说说自己的理解,希望大家多多交流。
# q+ G# H* o1 ?( |+ o2 [: @! N( h+ X! Y$ V
1.模拟输入
) V2 S- P4 K' N9 n
1 a) W2 |& V; ~从上图我们可以看到,我觉得模拟输入最重要的一点就是,他不经过输入数据寄存器,所以我们无法通过读取输入数据寄存器来获取模拟输入的值,我觉得这一点也是很好理解的,因为输入数据寄存器中存放的不是0就是1,而模拟输入信号不符合这一要求,所以自然不能放进输入数据寄存器。该输入模式,使我们可以获得外部的模拟信号。/ Z7 |  c* h7 f/ P) q7 X

8 ^" V- O  G: h2 @/ l2.浮空输入
4 [2 b* ~: X/ k  J' u/ j
/ M/ c5 p. x. r' [1 o该输入状态,我的理解是,它的输入完全由外部决定,我觉得在数据通信中应该可以使用该模式。应为在数据通信中,我们直观的理解就是线路两端连接着发送端和接收断,他们都需要准确获取对方的信号电平,不需要外界的干预。所以我觉得这种情况适合浮空输入。比如我们熟悉的I2C通信。4 v* H. u  @4 i& M+ p/ `

; K  d: |* d( K1 F# s7 c3上拉输入
$ @6 U3 V, J, i
* \3 l8 \( G+ S! A上拉输入就是在输入电路上使用了上拉电阻。这种模式的好处在于我们什么都不输入时,由于内部上拉电阻的原因,我们的处理器会觉得我们输入了高电平,这就避免了不确定的输入。这在要求输入电平只要高低两种电平的情况下是很有用的。% o6 C5 Z! b) N2 A: ~+ m/ T

5 f+ p1 u% |, [- W, S# Z4下拉输入5 [& s/ _* S: |# P+ O1 `
和上拉输入类似,不过下拉输入时,在外部没有输入时,我们的处理器会觉得我们输入了低电平。3 t  U: F+ B  G" w8 m/ F
* a& S+ |0 S, ~  |
5开漏输出* E- A* s% W2 ~8 b

& ^, ~. \9 G" m6 A7 T; x9 l* h6 H& ]开漏输出,输出端相当于三极管的集电极,所以适合与做电流驱动的应用。要得到高电平,需要上拉电阻才可以。& U- H7 R& F; B, S; W# o+ Q! x
/ E. ~# w+ S" B
6推挽输出
) y# |) |+ U" s( E  E2 o, q8 }/ I( N; \- }- X
推挽输出使用了推挽电路,结合推挽电路的特性,它是由两个MOSFET组成,一个导通的同时,另外一个截至,两个MOSFET分别连接高低电平,所以哪一个导通就会输出相应的电平。推挽电路速度快,输出能力强,直接输出高电平或者低电平。
/ }; D# m' F7 x
1 z) |/ _! U+ @7复用开漏和复用推挽9 }- ~/ G* \4 ~/ G  p4 P

* W  i6 S: L! f* n5 Y9 Y我们知道这只是对GPIO的复用而已。使普通的GPIO具有了别的功能。4 w, b$ g) Q% M) K8 S6 H- s; B

  o: b0 v" V- U2 V) W6 `; r) V
赞 收藏 评论4 发布时间:2016-1-14 10:44

举报

4个回答
beary 回答时间:2016-1-14 11:58:23
顶一个!!!!!!!!!!!!!!!!!!!!!
潇潇雨歇pku 回答时间:2016-1-14 14:03:27
i2c通信一般用开漏输出吧,怎么也得是设为输出才对,要不你怎么产生应答信号?
zhangdaijin 回答时间:2016-1-14 15:51:23
很好资料  
孤鸿踏雪遗梦 回答时间:2016-1-15 23:32:17
不错,赞一个。
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版