#1. 什么是GPIO?
GPIO内部结构
GPIO工作模式
GPIO是通用输入输出端口(General-purpose input/output)的英文简写,是所有的微控制器必不可
少的外设之一,可以由STM32直接驱动从而实现与外部设备通信、控制以及采集和捕获的功能。
GPIO口可配置为多种输入输出模式,如输入浮空、输入上拉、输入下拉、模拟输入、开漏输出、开漏
复用功能、推挽式输出以及推挽式复用功能等。
STM32单片机的GPIO被分为很多组,每组最多有16个引脚,不同型号的 MCU 的GPIO个数是不同的。
引脚电平:0V~3.3V,部分引脚可容忍5V
2.GPIO内部结构
GPIO工作模式 总共有8种 4种输入 4种输出
引脚有ft的是能容忍5V的
保护二极管 如果输入的电流低于0v(所能容忍的电压)将会从下往右流出 防止电流倒灌
保护二极管 如果输入的电流高于3.3v(所能接受的电压)将会从右往上走 比较高的电流就不会流入芯片内部
电流通过保护二极管之后 电流会到达 上拉电阻和下拉电阻这边 如果上电默认高电平 那上拉电阻有效
电流通过保护二极管之后 电流会到达 上拉电阻和下拉电阻这边 那下拉电阻有效 如果上电默认低电平
史密斯触发器 主要作用的对波形的一个规整 如下面的图 在第二个线下面属于是低电平 超过第2个线没到第一条线持续低电平
如果高于第一条线 就变成高电平 高电平以后只要没掉落第二条线下面 那就一直是高电平
上面就是io输入的基本结构 通过上下拉电阻之后 会有两个选择 模拟输入 主要是ADC DMA 的用法
往肖特基触发器那边走 还会有两个选择 片上外设(复用功能)和 正常的读高低电平设置
io口的输出 有两种选择 第一种就是写入寄存器 通过操作寄存器来输出控制 这个三极管 高低电平 实现业务
或者是片上外设的复用输出功能 通过三极管导通输出
上拉输入 就是到上拉电阻有效 到那会变成高电平输入 下拉输入 就是到下拉电阻有效 到那变成低电平 浮空输入上拉下拉都失效 就是浮空
输入的时候 输出会断开
模拟输入就是 输入信号不经过施密特触发器直接接入,输入信号为模拟量而非数字量,其余方式输入数字量 输入模式下 可以读取输入引脚电平 都是有效的
推完输出 可以输出高电平和低电平 开漏输出只有低电平 高阻抗 开漏输出想要输出一个高电平 可以在保护二极管那边按一个上拉电阻
复用功能输入输出
例如 片上外设串口 io口读进来通过肖特基 然后进入片上外设串口的寄存器里 再进行一些业务逻辑上的处理
片上外设 也可以控制io口输出高低电平 都是片上外设控制 并不是管理员控制 根据自己实际情况选择模式
GPIO寄存器概述
*
端口配置寄存器有高配 和 低配 端口 每4个位控制1个端口 共16个端口 其中CNF2个位配置模式 MODE2个位配置输出速度
r是读的意思 w是写的意思 rw是可读可写 0 1 2 3端口配置是上拉或者下拉输入模式 输出模式最大速度2M
如果外界输入一个高电平的话 就把输入寄存器置一 输入低电平就置0
GPIO_IDR端口输入数据寄存器
低16位有效
如果外界输入一个高电平的话 就把输入寄存器置一 输入低电平就置0
程序员就可以通过读取IDR来确定某一个位是高电平还是低电平
这个寄存器只能读
端口输出寄存器GPIO_ODR
某一位在输出寄存器写1 就是输出高电平 写0就是输出低电平
1位控制一个引脚
位设置/清除寄存器 GPIOx_BSRR
位设置就是通过对某一位写1 对应的位就设置成1 写0就没影响 该是什么就是什么
位清除就是通过对某一位写1 对应的位就清除成了0 写0就没有影响 该是什么就是什么