GPIO功能框图详解
- 野火霸道开发板学习笔记
- 信息说明
- GPIO功能框图
- 输出部分
- 推挽输出
- 开漏输出
- 输出数据寄存器(ODR)
- 位设置清除寄存器(BSRR)
- 位清除寄存器(BRR)
- 输入部分
- 输入数据寄存器(IDR)
- TTL肖特基触发器部分
- 模型分析
- 上拉/下拉输入的配置
- TTL电平标准
- CMOS电平标准
- RS232标准
- GPIO输出初始化顺序
野火霸道开发板学习笔记
信息说明
- 开发板: 野火霸道V2
- 芯片型号: STM32F103ZET6
- 下载器型号: 野火fireDAP下载器(高速版)
- 软件环境: Keil5(MDK-ARM V5.15)
- 芯片包型号: Keil.STM32F1xx_DFP.1.1.0 注: 亲测版本2.4.0不可用
- 操作系统 : Win11
GPIO功能框图

输出部分
GPIO框图2号区域由CRL和CRH配置
推挽输出

推挽输出模型分析
- 当INT = 1时, 经过反相器在2位置处为0, 此时对于PMOS管来说, Ug为低电平, Us = VDD, 故 Ug < Us, PMOS导通, S->D有电流, OUT = VDD, 输出高电平1
- 当INT = 0时, 经过反相器在2位置处为1, 此时对于NMOS管来说, Ug为高电平, Us = GND, 故 Ug > Us, NMOS导通, D->S有电流, OUT = GND, 输出低电平0
推挽输出总结
- 可以输出高低电平, 用于连接数字器件, 高电平由VDD决定, 低电平由VSS决定
- 推挽结构指两个三极管(多用MOS管)受两路互补的信号控制, 总是在一个导通的时候另外一个截止, 优点 : 开关效率效率高, 电流大,驱动能力强
- 输出高电平时, 电流输出到负载, 叫灌电流, 可以理解成推, (电流方向 : S->D); 输出低电平时, 负载电流流向芯片, 叫拉电流, 即挽**(电流方向 : D->S)**
开漏输出

开漏输出模型分析
- 当 INT = 1 时, 1处为1, 经反相器后2处为0, Ug = Us, NMOS管截止, 当接入上拉电阻时, OUT = 1, 输出高电平, 若不加则为高阻态
- 当 INT = 0 时, 1处为0, 经反相器后2处为1, Ug > Us, NMOS管导通, OUT = 0, 输出低电平
开漏输出总结
- 只能输出低电平, 不能输出高电平 (PMOS管不工作)
- 如果要输出高电平, 则需要外接上拉电阻
- 开漏输出具有"线与"功能, 一个为低, 全部为低, 多用于I2C和SMBUS总线
输出数据寄存器(ODR)

位设置清除寄存器(BSRR)

BSRR寄存器实际上还是调用了ODR寄存器
位清除寄存器(BRR)


输入部分
输入数据寄存器(IDR)

IDR 可以监控到 ODR 的数据
TTL肖特基触发器部分
模型分析
- I/O 口电平经上拉/下拉输入, 若为3.3V高电平
- TTL肖特基触发器起到门禁作用*(输入时, > 2.0V为高电平)*, 将模拟信号转化为数字信号, 即将3.3V 转换为逻辑高电平
- 转换后的数字信号进入输入数据寄存器(IDR)
- 若为复用功能输入, 则数字信号不进入IDR
- 若为模拟输入, 则不通过TTL肖特基触发器, 而直接传递模拟信号
上拉/下拉输入的配置
- 由 CRL/CRH 配置成上拉/下拉输入模式
- 通过 BSRR 软件配置具体为上拉还是下拉输入模式
TTL电平标准
- 输出: L : < 0.8V; H: > 2.4V
- 输入: L : < 1.2V; H: > 2.0V
TTL器件输出低电平要小于0.8V, 高电平要大于2.4V; 对于输入, 低于1.2V就认为是0, 高于2.0V就认为是1
TTL电平输入低电平的噪声容限为(0.8 - 0) / 2 = 0.4V, 高电平的噪声容限为 (5 - 2.4) / 2 = 1.3V
CMOS电平标准
- 输出 : L: < 0.1 * Vcc; H: > 0.9 * Vcc
- 输入: L: < 0.3 * Vcc; H : > 0.7 * Vcc
由于CMOS电源采用12V, 则输入低于3.6V为低电平, 噪声容限为1.8V, 高于 3.5V为高电平, 噪声容限为1.8V. 比TTL有更高的噪声容限
RS232标准
- 逻辑1的电平为 -3 ~ -15V
- 逻辑0的电平为 +3 ~ +15V
RS232标准下电平的定义反相了一次
GPIO输出初始化顺序
- 选定具体的GPIO*(影响到后续寄存器具体配置哪一位)*
- 配置GPIO工作模式**(CRL和CRH寄存器)**
- 控制GPIO输出高低电平**(ODR, BRR和BSRR)**