文章目录[隐藏]
目录
一、结构体介绍
typedef enum
{ GPIO_Mode_AIN = 0x0, 模拟输入 ADC采集的通道
GPIO_Mode_IN_FLOATING = 0x04, 浮空输入 电平状态不确定
GPIO_Mode_IPD = 0x28, 下拉输入 低电平
GPIO_Mode_IPU = 0x48, 上拉输入 高电平
GPIO_Mode_Out_OD = 0x14, 开漏输出 低电平
GPIO_Mode_Out_PP = 0x10, 推挽输出 高电平
GPIO_Mode_AF_OD = 0x1C, 复用开漏输出 低电平
GPIO_Mode_AF_PP = 0x18 复用挽输出 高电平
}GPIOMode_TypeDef;
二、原理
1、保护二级管
- 保护引脚,防止引脚外部过高或过低的电压输入。以保护芯片不被烧毁。
- 当引脚电压高于VDD或VDD_FF时,上方二极管导通吸收此高电压。
- 当引脚电压低于VSS时,下方二级管导通吸收此不正常电压。
-
STM32 引脚是用来做控制,而不是做驱动使用的。
2、上下拉电阻
- 上下拉电阻都接有一个开关,通过配置开关的状态,可以控制引脚的默认电平。
- 闭合连接上拉电阻的开关,引脚为高电平。(上拉输入模式)
- 闭合连接下拉电阻的开关,引脚为低电平。(下拉输入模式)
- 断开连接上下拉电阻的开关,引脚电压不确定(浮空输入模式)
- STM32 上下拉及浮空模式的配置是通过 GPIOx_CRL 和 GPIOx_CRH 寄存器控制的
3、P-MOS 和 N-MOS 管
- GPIO 引脚经过两个保护二极管后就分成两路,上面一路是“输入模式”, 下面一路是“输出模式”。
- 开漏输出:输入一个低电平,P-MOS管截止、N-MOS导通,对外输出一个低电平(0V)。
- 推挽输出:输入一个高电平、P-MOS管导通、N-MOS管截止,对外输出高电平(3.3V)。
4、输出数据寄存器
双 MOS 管结构电路的输入信号,是由 GPIO“输出数据寄存器 GPIOx_ODR”提供,通过修改输出数据寄存器的值就可以修改 GPIO 引脚的输出电平。
5、复用功能输出
STM32 的 GPIO 引脚具有第二功能,因此当使用复用功能的时候,也就 是通过其他外设复用功能输出信号与 GPIO 数据寄存器一起连接到双 MOS 管电路 的输入。
6、输入数据寄存器
- 输入数据寄存器是由 IO 口经过上下拉电阻、施密特触发器引入。
- 当信号经 过触发器,模拟信号将变为数字信号 0 或 1,然后存储在输入数据寄存器中。
- 通 过读取输入数据寄存器 GPIOx_IDR 就可以知道 IO 口的电平状态。
7、复用输入功能
- 使用GPIO引脚的第二个功能,非默认功能的输入。
- GPIO 引 脚的信号传输到 STM32 其他片上外设,由该外设读取引脚的状态。
8、模拟输入输出模式
- 当 GPIO 引脚用于 ADC 采集电压的输入通道时,用作“模拟输入”功能。
- 此时信号是不经过施密特触发器的,因为经过施密特触发器后信号只有 0、1 两 种状态。
- ADC 外设要采集到原始的模拟信号,信号源输入必须在施密特触发器之前。
- 当 GPIO 引脚用于 DAC 作为模拟电压输出通道时,此时作为“模 拟输出”功能。
- DAC 的模拟信号输出就不经过双 MOS 管结构了,模拟信号直接 通过管脚输出。
模拟输入输出模式中,双 MOS 管结构被关闭,施密特触发器停用,上/下拉 也被禁止。
版权声明:本文为CSDN博主「旭日初扬」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/RONG_YAO/article/details/120867374
暂无评论