【STM32】输入和输出模式

引子

最近从柜子里翻出了本科时候买的STM32F103ZE开发板,正好最近有时间,学习一下。

我的认知中,STM32就是一个通过操纵电平来驱动外设的装置,那么其输入输出模式就显得无比重要,本篇就来研究一下STM32的输入输出模式。

首先放一张很重要的图,那就是STM32 I/O端口位的基本结构图:

IO端口位

IO端口位比较重要的部分有两个,一个是输入驱动器,一个是输出驱动器。

对于输入驱动器来说,其由一个上拉到VDD的开关,一个下拉到VSS的开关以及一个TTL施密特触发器组成。施密特触发器的作用是将模拟输入转化为数字输入,如果输入电平高于某个阈值,就识别到高电平,低于阈值就是低电平,其他情况维持原电平不变。

对于输出驱动器来说,则由输出控制器和一个P-MOS上接到VDD,一个N-MOS管下接到VSS。

输出模式

开漏输出是一个单刀单掷开关,推挽输出是一个单刀双掷开关。

开漏输出

所谓开漏,我的理解是打开一个东西,使东西漏进来,这种输出模式操纵的是输出驱动器的N-MOS管,当外设自带高电平时,打开N-MOS管,电路导通,外设工作,关闭N-MOS管,电路不通,外设不工作。

推挽输出

推挽输出,就是指P-MOS管和N-MOS管同时工作,需要高电平时,就打开P-MOS关闭N-MOS;需要低电平就打开N-MOS关闭P-MOS。

输入模式

上拉输入

所谓上拉输入,就是打开输入驱动器的VDD开关,默认读取到高电平。

下拉输入

所谓下拉输入,就是打开输入驱动器的VSS开关,默认读取到低电平。

开漏输入

开漏输入就是两个开关都关闭,电平完全由外设决定。

例子

比如对于下面的电路:

输入的设置要按照外设的规则来。对于KEY_UP,我们的目标是读取到高电平,因为读到高电平就证明按键按下,所以要下拉输入,对于KEY0和1,要读取到低电平,所以要上拉输入。

文章作者:
文章链接: https://www.coderlock.site/2025/12/15/【STM32】输入和输出模式/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 寒夜雨