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

STM32的GPIO口的常识

[复制链接]
STMCU小助手 发布时间:2022-12-27 19:00
一、概述
, A, D4 [% b2 v+ _5 R7 DGPIO是通用输入/输出端口的简称,是STM32可控制的引脚。
* Y: o# X# \: e6 c8 s% @" s' m8 d" t. S/ H1 X# r
GPIO的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。9 C/ B2 W: @( M6 o. V1 a

( d0 k; n8 d- k9 ~6 @, g# S5 t例如,STM32F103ZET6芯片为144脚芯片,包括7个通用目的的输入/输出口(GPIO)组,分别为GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF、GPIOG。同时每组GPIO口组有16个GPIO口。通常简略称为PAx、PBx、PCx、PDx、PEx、PFx、PGx,其中x为0-15。0 y+ t: t5 z, F3 c, i

& _6 C# Q8 |. eSTM32的大部分引脚除了当GPIO使用之外,还可以复用为外设功能引脚(比如串口)。3 \6 S% s* W5 J( \" R) q
- y8 p7 _; W! H" H
+ N3 |- ^+ R# v# ~9 i9 @1 y( `
二、GPIO的基本结构$ t" K9 |- N( ?7 q
每个GPIO内部都有这样的一个电路结构
1 m7 B% G0 J& u% o/ K( [+ T! D7 P( ?( T4 A9 p6 G
20210912143057312.png
( Q/ x( e* B' Y# ^5 N. C( O: {- v# G* V! o3 r8 X9 q
保护二极管:IO引脚上下两边两个二极管用于防止引脚外部过高、过低的电压输入。当引脚电压高于VDD时,上方的二极管导通;当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。但是尽管如此,还是不能直接外接大功率器件,须加大功率及隔离电路驱动,防止烧坏芯片或者外接器件无法正常工作。
" D9 q& ~7 V; s/ k" l

( N( ~$ c$ y- d( d" f  a! X6 u  LP-MOS管和N-MOS管:由P-MOS管和N-MOS管组成的单元电路使得GPIO具有“推挽输出”和“开漏输出”的模式。
$ F/ w- Z8 w$ N5 X' W% W' a
+ r/ l/ v3 C/ {) X8 g9 I" H5 z+ v
TTL肖特基触发器:信号经过触发器后,模拟信号转化为0和1的数字信号。但是,当GPIO引脚作为ADC采集电压的输入通道时,用其“模拟输入”功能,此时信号不再经过触发器进行TTL电平转换。ADC外设要采集到的原始的模拟信号。
  P: g: u; o0 j# g( F
7 u- e4 d  \: g! B" ~( [* u
这里需要注意的是,在查看《STM32中文参考手册V10》中的GPIO的表格时,会看到有“FT”一列,这代表着这个GPIO口时兼容3.3V和5V的;如果没有标注“FT”,就代表着不兼容5V。
) V3 U% b& z0 n  B
+ a. {, W9 V; d# M# W# d

; {" I. V* ]( Z3 m8 U$ s- U三、STM32的GPIO工作方式
4 v) n1 u8 [6 W+ T- {  qGPIO支持:0 f! a5 J7 x/ K
4种输入模式  d) N4 y/ d; `' o
模拟输入、浮空输入、上拉输入、下拉输入  l/ [* R9 u% k  V- F/ E

* e: _% t: L2 ^& UGPIO_Mode_AIN 模拟输入
  H. @9 s; Z4 l1 y4 SGPIO_Mode_IN_FLOATING 浮空输入* h, ?% u; f% N5 ?: p/ `; ^) J6 a
GPIO_Mode_IPU 上拉输入" u% b+ l$ R3 E+ I
GPIO_Mode_IPD 下拉输入. O6 H% m. u( G/ R& f7 A
7 u* N9 P" N3 v: `$ n1 Q
4种输出模式
( C! y4 J( r6 c, F6 f开漏输出、推挽输出、复用开漏输出、复用推挽输出
+ ~; [, G( l' x
- C" t0 O/ Z& G* U& I: ~4 OGPIO_Mode_Out_OD 开漏输出. D  [* p( p( d% O9 x
GPIO_Mode_Out_PP 推挽输出& W4 i$ m) P, e
GPIO_Mode_AF_OD 复用开漏输出
) ]( G/ P; F9 b% m% RGPIO_Mode_AF_PP 复用推挽输出
1 ]# i: O, B" u6 j同时,GPIO还支持3种最大翻转速度5 H( P1 d. c/ q+ ^  E  B3 V$ r* l
2MHz、10MHz、50MHz' h) j4 u! u( v, R' {9 C9 z
每个I/O口可以自由编程,但I/O口寄存器必须按32位字被访问。
% e2 m4 R) y5 S3 @! {
  Z, U, L9 V. ]

* n& L* V/ p. B- {; k5 H5 d四、STM32的GPIO输入模式详解

1 o* S6 C+ _. H3 R3 i* D1、浮空输入模式0 K' g2 p! O' A  L# Z
" M2 h  O, @$ ^  G$ t0 {
20210912144105589.png
% ^; b) r5 _+ M: y
( |8 r" n% Z1 t浮空输入模式下,I/O端口的电平信号直接进入输入数据寄存器。也就是说,I/O的电平状态是不确定的,完全由外部输入决定;如果在该引脚悬空(在无信号输入)的情况下,读取该端口的电平是不确定的。* |& [8 F' Z3 o2 |

1 j# l$ t9 X' p+ k5 V# W+ p2、上拉输入模式
5 M. n% Z2 Z8 {% z( } ) ]$ I/ [* k, d" t
20210912144232935.png
. B' }7 {% f1 f- U; b# o  R6 G
0 X% k/ u" x  n
上拉输入模式下,I/O端口的电平信号直接进入输入数据寄存器。但是在I/O端口悬空(在无信号输入)的情况下,输入端的电平可以保持在高电平;并且在I/O端口输入为低电平的时候,输入端的电平也还是低电平。
" F- X: O  A4 A  @2 ~% u, _/ T. e. a- x, y

; J6 {( g+ a) P% S( h 3、下拉输入模式
4 i. h! B. i3 I1 N
# t5 d+ g5 z: j1 ^. l
20210912144315481.png 0 f* F/ `0 o2 l; B' ?: w

$ c5 n/ J5 W$ \6 E下拉输入模式下,I/O端口的电平信号直接进入输入数据寄存器。但是在I/O端口悬空(在无信号输入)的情况下,输入端的电平可以保持在低电平;并且在I/O端口输入为高电平的时候,输入端的电平也还是高电平。
( ^' T6 L# b9 |( X& S6 c, z' I$ y. N% y/ E0 b4 N

  D  D5 E% i6 B  K! F9 K4、模拟输入模式
, A. M9 L4 _+ Q* d9 @8 r9 `模拟输入模式下,I/O端口的模拟信号(电压信号,而非电平信号)直接模拟输入到片上外设模块,比如ADC模块等等。
3 p2 _% B3 j/ ~5 C1 E0 r4 A- o0 }7 |% A" w4 ^. D
20210912144348965.png 7 l6 @8 ^; r2 @  S

2 G# B/ W$ Y+ V+ _/ \: A) A五、STM32的GPIO输出模式详解
" T1 d) i6 q) h0 \4 ?1、开漏输出模式
/ b' ~& \8 [& n+ u) r
, L% N/ m$ n+ p3 C
20210912144451901.png
8 d% B# y, D* S. B
0 [+ K5 u1 m5 ^6 u  u开漏输出模式下,通过设置位设置/清除寄存器或者输出数据寄存器的值,途经N-MOS管,最终输出到I/O端口。这里要注意N-MOS管,当设置输出的值为高电平的时候,N-MOS管处于关闭状态,此时I/O端口的电平就不会由输出的高低电平决定,而是由I/O端口外部的上拉或者下拉决定;当设置输出的值为低电平的时候,N-MOS管处于开启状态,此时I/O端口的电平就是低电平。同时,I/O端口的电平也可以通过输入电路进行读取;注意,I/O端口的电平不一定是输出的电平。
$ c$ |4 s4 b8 c, G
. z0 R+ m& n$ h; H
! |2 k9 c. F9 w. e$ Y) q  c
2、开漏复用输出模式
; k3 l6 b) N5 ]  e" D  a9 w, D2 x$ R9 ^
20210912144636773.png ) u4 [$ w' H- H6 ^: ?7 `
1 }  A6 z+ T) O: g
开漏复用输出模式,与开漏输出模式很是类似。只是输出的高低电平的来源,不是让CPU直接写输出数据寄存器,取而代之利用片上外设模块的复用功能输出来决定的。   y' u9 M) d3 s: e3 b4 X7 d
————————————————
5 q0 r0 d: y# `% P版权声明:CodeForCoffee
! c, y- c* |8 M" f) m' I0 O! b5 c# Q3 P; {6 C7 o

: d/ G! a  R- t/ \
赞 收藏 评论0 发布时间:2022-12-27 19:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版