目录

GPIO简介

GPIO基本结构

GPIO位结构

输入部分 

输出部分

推挽输出模式

开漏输出​编辑

开漏复用输出​编辑

八种输入输出模式 

浮空、上拉、下拉输入​编辑

模拟输入

开漏、推挽输出

复用开漏、复用推挽输出

GPIO寄存器


GPIO简介

        GPIO(General Purpose Input Output)叫做通用输入输出口,可配置为8种输入输出模式。

引脚电平:0V~3.3V,部分引脚可容忍5V。

        输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等

        输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等

GPIO基本结构

        STM32F407ZG一共有7组IO口,每组IO口有16个IO,一共112个IO。命名为GPIOA,GPIOB,GPIOC……,GPIOG,然后每组IO口的命名是由0~15,一个16个,如GPIOA1等等。寄存器的每一位都对应一个引脚,其中输出寄存器写1,对应的引脚输出高电平,写0,就输出低电平,输入寄存器读取1,对应的端口目前是高电平,读取0,就是低电平。只有寄存器低16位对应有端口,高16位没有用到,而驱动器是用来增加驱动能力的。

GPIO位结构

输入部分 

        保护二极管的作用就是防止电流过高或者过低,当电流过高时,接VDD的保护二极管接通,高电流就不会通过电路了,当电流为负时,接VSS的二极管导通, 负压也不会通过电路析取电流,很好的起到了保护电路的效果。

        上面那两个开关就是上拉电阻和下拉电阻了,这两个电阻,通俗一点来讲的话,就是赋初值,当这两个开关都断开时,电路输入会处于一种浮空的状态,引脚的输入电平极易受到外界干扰而改变。而当选择上拉输入时,就是给电路默认赋一个高电平,相反,选择下拉输出时,就是给电路默认赋一个低电平。

        再过去就是一个施密特触发器(应该是翻译错误) ,作用就是对输入电压进行整形,主要原理就是,当电压高于某个值,输出才变为高电平,而当电压低于某个值之后,电压立马变为低电平,这样可以有效的修整电压,防止数据抖动。

 模拟输入就是直接连接到ADC上的

另一个是复用功能输入 ,需要连接到其他需要读取端口的外设上

输出部分

首先来看一下位设置/清除寄存器,主要功能就是单独控制输出寄存器的某一位数据

        之后是这两个MOS管,就是一种电子开关 ,通过控制MOS管,可以将IO口接到VDD或者VSS。

接下来介绍一下三种输出模式 

推挽输出模式

         在推挽输出模式下,PMOS和NMOS均有效,数据寄存器为1时,上管导通,下管断开,输出直接接到VDD,就是输出高电平,数据寄存器为0时,上管断开,下管导通,输出直接接到VSS,就是输出低电平。

开漏输出

         在开漏输出模式下,PMOS是无效的,只有NMOS在工作,数据为1时,下管断开,也就是输出断开;数据为0时,下管导通,输出直接接到VSS,就是输出低电平。想输出高电平,就只能外界电源。

开漏复用输出

 就是直接接在复用功能输出这,与复用输出类似

八种输入输出模式 

模式名称

性质

特征

浮空输入

数字输入

可读取引脚电平,若引脚悬空,则电平不确定

上拉输入

数字输入

可读取引脚电平,内部连接上拉电阻,悬空时默认高电平

下拉输入

数字输入

可读取引脚电平,内部连接下拉电阻,悬空时默认低电平

模拟输入

模拟输入

GPIO无效,引脚直接接入内部ADC

开漏输出

数字输出

可输出引脚电平,高电平为高阻态,低电平接VSS

推挽输出

数字输出

可输出引脚电平,高电平接VDD,低电平接VSS

复用开漏输出

数字输出

由片上外设控制,高电平为高阻态,低电平接VSS

复用推挽输出

数字输出

由片上外设控制,高电平接VDD,低电平接VSS

浮空、上拉、下拉输入

模拟输入

开漏、推挽输出

复用开漏、复用推挽输出

要注意的是,输出的时候,输入端也是开启的,而输入的时候,输出端是关闭的。

GPIO寄存器

接下来,我们来介绍一下GPIO的寄存器

 配置IO方向

端口输出类型寄存器(GPIOx_OTYPER)

每一位控制一个IO,当数值为1时,是输出开漏,数值为0时,是输出推挽。 

 

 每两位控制一个IO口,用来控制端口输出速度。

端口上拉/下拉寄存器(GPIOx_PUPDR)

每两位控制一个IO口,每两位设置不同的值,就对应不同的模式,具体如上图所示。

 

记录输入输出端的数据 

        注意,写0时不对其执行任何操作,而不是把其置为0。主要就是修改某几位而不改变其他的,BSy 置1,相应端口为1,BRy 置1,相应端口为0,也就是置位和复位。

        好的,到此处,GPIO的硬件原理部分我们已经全部介绍完毕,之后,我们下篇笔记来介绍一下如何编写程序来控制GPIO。


物联沃分享整理
物联沃-IOTWORD物联网 » STM32基础:了解GPIO

发表评论