GPIO简介

GPIO(general purpose intput output)是通用输入输出端口的简称,简单来说就是软件可控制的引脚,STM32芯片的GPIO引脚与外部设备连接起来从而实现与外部通讯、控制以及数据采集的功能。

如何查找每一个GPIO的功能说明

打开STM32F103x数据手册 ,第3章引脚定义,表5中描述了不同芯片各引脚功能
image.png

引脚分类

image.png

GPIO功能框图讲解(重点学习)

STM32F10x参考手册 第8章通用和复用功能I/O(GPIO和AFIO)
image.png

image.png

1.保护电路

从①中的IO引脚,连接到芯片内部电路
保护二极管,防止IO引脚连接的电压大于3.3v(V),或者连接的负电压小于Vss(GND)时烧毁芯片。但电压过大超过二极管保护能力时还是会烧毁芯片,如直接与电机相连。

2.推挽输出

image.png
image.png
当GPIO_ODR输出1时,经过反相器,变为0。则PMOS导通,VDD(3.3.V)流向OUT端,输出电压为3.3.V,电流约为25mA。
image.png

工作原理

推挽电路使用两个参数相同的三极管或MOSFET,以推挽方式存在于电路中。电路工作时,两只对称的开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流(推挽)。推拉式输出级既提高电路的负载能力,又提高开关速度。

特点

1、可以输出高低电平,用于连接数字器件,高电平由VDD决定,低电平由
VSS决定。
2、推挽结构指两个三极管受两路互补的信号控制,总是在一个导通的时候
另外一个截止,优点开关效率效率高,电流大,驱动能力强。
3、输出高电平时,电流输出到负载,叫灌电流,可以理解成推,输出低电
平时,负载电流流向芯片,叫拉电流,即挽。

2.开漏输出

image.png
只能输出低电平,不能输出高电平。

工作原理

开漏输出时,PMOS不工作,只有NMOS工作。
当INT输出为1时,经过反相器变为0。Ug=Us,NMOS截止,OUT处于高阻态。如果需要OUT输出高电平,需要外接上拉电路,可外接VDD=3.3/5v,根据OUT连接的传感器决定
当INT输出为0时,NMOS导通,输出为0V。

特点

1、只能输出低电平,不能输出高电平。
2、如果要输出高电平,则需要外接上拉。
3、开漏输出具有“线与”功能,一个为低,全部为低,多用于I2C和SMBUS总线。

3.输出寄存器

端口输出数据寄存器(GPIOx_ODR)
image.png
端口位设置/清除寄存器 GPIOx_BSRR(x = A…E),BSRR(Bit Set Reset Register)可以分别地对各个ODR位进行独立的设置/清除。
如果同时设置了**BSyBRy的对应位, BSy位起作用。**
image.png
端口位清除寄存器(GPIOx_BRR)
image.png

4.复用功能输出

image.png
image.png

使用复用功能输出时,由外设通过串口输出数据,串口传输的数据存放在数据寄存器(USART_DR) 中。

5.输入寄存器

image.png
端口输入数据寄存器(GPIOx_IDR) ,通过引脚输入的数据也可直接通过ODR输出(监测功能)。
image.png
数据输入时,可以通过BSRR寄存器配置成上拉/下拉输入模式(不是通过端口配置低寄存器(GPIOx_CRL) 的CNFy[1:0]端口来决定 )。
输入电平经过施密特触发器(门禁)后,转换化数字0、1信号。当输入电压大于2V时,经过施密特触发器后变为1;当输入电压小于1.2V时,经过施密特触发器后变为0.

6.复用功能输入、模拟输入

image.png
复用功能输入时,将输入数据存放到串口数据寄存器(USART_DR) 中。
模拟输入时,如DAC时,信号不经过施密特触发器,直接将模拟信号输入。

GPIO输出初始化顺序

1、选定具体的GPIO引脚,如端口B引脚0
2、配置GPIO工作模式( CRL和CRH配置寄存器)
3、控制GPIO输出高低电平( ODR、 BRR和BSRR)
image.png