STM32F103引脚输入输出模式详解

目录

一:输入模式

1.1:模拟输入

1.2: 浮空输入

 1.3:上拉输入

 1.4:下拉输入

1.5: 为什么没有复用输入配置模式

 二:输出模式

2.1:推挽输出

2.2:开漏输出

 2.3:复用推挽输出

2.4:复用开漏输出 


一:输入模式

1.1:模拟输入

模拟输入(GPIO_Mode_AIN):这种输入方式和浮空输入非常相似,都不接入内部的上拉和下拉电阻,它们二者唯一的区别在于,模拟输入不接入TTL肖特基触发器,它接入的信号是完全的模拟信号,所以称为模拟输入。

当引进外部不接稳定的电路时,他的电平状态我们无从得知,可以说他的引脚电平状态完全取决于外部输入。

TTL肖特基触发器:简单说就是将相对缓慢变化的模拟信号变成矩形信号,便于后面读取。

(如果大家想要深入的了解,可以去百度一下)

注意:模拟输入则将信号传输到其他外设。

 输入路径如下图所示

1.2: 浮空输入

 

浮空输入(GPIO_Mode_IN_FLOATING):这种输入模式不接入上拉下拉电阻,但是经过TTL肖特基触发器,使得它输入进来的电平数据更加稳定。当然,在该引脚不接入外部电路时,它引脚的电平状态我们也无从得知,它的电平(输入)状态完全取决于外部信号。

输入路径如下图所示

 1.3:上拉输入

上拉输入(GPIO_Mode_IPU):这种输入方式内接入上拉电阻,当没有外部信号输入时,默认引脚电平为高电平,当外部为低电平时,也可以明显的读出低电平。这种模式一般用于按键检测之类的。

输入路径如下图所示

 1.4:下拉输入

下拉输入(GPIO_Mode_IPD):这种输入方式内接入下拉电阻,当没有外部信号输入时,默认引脚电平为低电平,当外部为高电平时,也可以明显的读出高电平。

1.5: 为什么没有复用输入配置模式

我在学习这些配置模式的时候,发现对于stm32单片机来说,如果需要使用到它的一些内置外设(USART),就必须配置对于的输出接口为复用输出模式,但是却没有复用输入模式,都是直接配置为上拉输入或者浮空输入模式。下面是网友给的答案

没有必要单独做个复用输入的模式吧。GPIO输入、复用输入本质都是输入,也就是电平只读,别说是2种类型的只读,就是10000种类型的电平只读,也不会对任何类型造成任何影响,所以就没有区分。

其实我们从引脚的电路图也可以看出,对于输入的引脚来说,只是对电平的读取,读取到的数据高电平转换为1,低电平转换为0。而高低电平最终都会传输到A点,所以说当对应引脚的复用功能开启时,那些内置外设也可以从A点读入高低电平。

 二:输出模式

2.1:推挽输出

推挽输出(GPIO_Mode_Out_PP):这种输出方式比较常用,它是完全可以正常的输出高低电平的输出模式。当需要输出高电平时,上面的P-MOS管导通,此时D点的电压就是VDD点的电压,也就是我们常说的输出1。 当需要输出低电平时,下面的N-MOS管导通,此时D点的电压就是VSS点的电压,也就是我们常说的输出0。

2.2:开漏输出

 开漏输出(GPIO_Mode_Out_OD):这种输出模式,在没有外接入上拉电阻时只能输出低电平,不能正常的输出高电平(之前踩过一次坑,模式配置错误后,整个驱动模块都失效了,就是因为这种模式不能正常的输出高电平)。

这种配置模式也有它的优点,就是当外接的驱动模块需要的电压过高时,而内置的VDD电压不能满足,我们就必须使用该种模式,去外接更高电平的上拉电阻,从而驱动对应的模块。

 2.3:复用推挽输出

复用推挽输出(GPIO_Mode_AF_PP)之前学习的时候,比较奇怪的时,为什么有了推挽输出模式,还需要复用推挽输出呢???看过32单片机的数据手册的都知道,对于芯片的每一个内置外设来说,都有它自己的数据寄存器(DR)。而复用推挽输出的输出模式和普通推挽输出的输出模式不同点就在此处。

复用输出时,引脚的高低电平数据来源于复用外设模块的数据寄存器。

普通输出时,引脚的高低电平数据来源于32中GPIO模块的数据寄存器。

所以说我们在使用一些复用功能时,就需要将输出的引脚配置为复用输出模式。

2.4:复用开漏输出 

复用开漏输出(GPIO_Mode_AF_OD):这种输出方式不能正常的输出高电平,但是在外接的驱动模块需要的电压过高时,而内置的VDD电压不能满足,我们就必须使用该种模式,去外接更高电平的上拉电阻,从而驱动对应的模块。

当然它的数据来源也是来源于复用功能的外设数据寄存器。

物联沃分享整理
物联沃-IOTWORD物联网 » STM32F103引脚输入输出模式详解

发表评论