GPIO
1. GPIO 简介
1.1 特性
- GPIO:通用输入输出接口,支持多种输入输出模式。
- 电平范围:0V ~ 3.3V(部分引脚支持 5V)。
- 数据0 为低电平0V
- 数据1 为高电平3.3V
- 不带FT只能容忍3.3V,带FT能容忍5V
- 用途:
- 输出模式:控制 LED、蜂鸣器,模拟通信输出时序等。
- 输入模式:读取按键状态、信号输入,采集 ADC 电压等。
- 特性:
- 寄存器就是一段特殊的存储器,内核可以通过APB2总线对寄存器进行读写。寄存器每一位对应每个引脚,寄存器写1,对应引脚输出高电平。
- STM 是32位,这里只有16个引脚,对应的是低位16位,高位是没用到的。
1.2 基本结构
- GPIO 端口: GPIOA、GPIOB 。
- 每个端口有多个引脚(如 PA0~PA15)。
- 控制方式:通过寄存器设置引脚模式和状态。
- GPIO是挂载在APB2。
1.3 位结构
整体分为2部分,上部分为输入部分,下部分位输出部分。
- 输入部分:VDD:3.3 V,VSS :0 V
- 写入(引脚位置)
- 当输入电压为负数,电就会从VSS流到I/O引脚,起到保护电路作用。
- 当输入电压为0~3.3 V,电不会去到二极管,正常导通。
- 当输入电压为>3.3 V,电就会从I/O引脚流到VDD,起到保护电路作用。
- 输入驱动器
- 浮空模式:VDD关,VSS关。引脚的输入电平极易受外界干扰而改变
- 高电平模式:VDD开,VSS关。保证引脚的高电平信号稳定
- 低电平模式:VDD关,VSS开。保证引脚的低电平信号稳定
- TTL施密特触发器(肖特基触发器,翻译问题):
- 作用:输入电压整形。
- 逻辑:如果输入电压大于某一阈值,输出就会瞬间升为高电平;
如果输入电压小于某一阀值,输出就会瞬间降为低电平。 - 防止信号不稳定
- 模拟输入:接受模拟量,接触发器前。接ADC
- 复用功能输入:接受数字量,接触发器后
- 写入(引脚位置)
- 输出部分:
- 写入
- 数字输入:通过控制输出数据寄存器,就能输出。
- 寄存器是16位同时控制,要做到单独控制需要特殊处理:
- 需通过按位与按位或等手法
- 操作位设置/清除寄存器实现(需要操作的位置1,其余置0)。
- 位带
- 寄存器是16位同时控制,要做到单独控制需要特殊处理:
- 外设输入
- 数字输入:通过控制输出数据寄存器,就能输出。
- 输出驱动器
- 推挽模式(强推输出模式):P-MOS和N-MOS均有效
- 数据寄存器为1,上管导通,下管断开,接到VDD,输出高电平。
- 数据寄存器为0,上管断开,下管导通,接到VSS,输出低电平。
- 开漏模式:P-MOS无效,N-MOS有效
- 数据寄存器为1,下管断开,输出相当于断开,高阻模式。
- 数据寄存器为0,下管导通,接到VSS,输出低电平。
- 关闭模式:P-MOS和N-MOS均无效,信号又外部设备控制。
- 推挽模式(强推输出模式):P-MOS和N-MOS均有效
- 写入
1.4 模式
GPIO 支持以下 8 种模式:
-
浮空 / 上拉 / 下拉输入
- 输入模式下,输出驱动器断开,端口只能输出不能输入
-
模拟输入
- 输出驱动器断开,TTL施密特触发器关闭
- 开漏 / 推挽输出
- 输出模式,TTL施密特触发器有效,说明输出的信号可以作为输入返回处理
- 复用开漏 / 推挽输出
- 输出由片上外设控制
1.5 寄存器
GPIO相关的寄存器以及寄存器配置可查看手册。
2. LED 和蜂鸣器
2.1 LED
- 工作原理:正向通电发光,反向不亮。
- 应用:状态指示灯、装饰灯等。
2.2 蜂鸣器
- 有源蜂鸣器:内置振荡源,接通直流电即可发声。
- 无源蜂鸣器:需外部振荡脉冲控制,调节脉冲频率可改变音调。
3. 面包板
面包板示意图
面包板背面线路连接图
- 外两条是供电的,且整条是导通的。
- 内测是横向导通,隔行是不互通的。
注:
- 以上均为个人学习笔记。
- 江协科技视频链接:STM32入门教程-2023版。