其中: 保护二极管用于防止因为引脚外部输入电压过高或过低烧坏芯片,但这种保护也是有限的。
上半部分属于引脚输入功能,通过一个电阻和一个开关(可以通过寄存器控制开关状态)可以把输入线拉高或者拉低。
下半部分是引脚输出功能,通过一个PMOS 管和一个NMOS管组合而成一个反相器驱动输出。对于普通的引脚电平控制,根据需要设置置位或者复位寄存器的值,这两个寄存器的值会改变输出数据寄存器值,通过输出控制电路驱动反相器从而改变引脚的状态。
每个GPIO外设都有7个独立的寄存器,为实现不同工作条件要求,GPIO有8种工作模式,通过配置GPIOx_CRL或GPIOx_CRH 寄存器可以控制,常用的几种模式如下: 输入浮空:该模式也是 STM32 复位之后默认模式。 浮空输入模式是相对与上拉或者下拉输入模式,浮空就是不上拉也不下拉。 输入上拉:输入上拉模式就是在浮空输入模式基础上使能输入电路中的上拉开关,该开关由输出数据寄存器(GPIOx_ODR)引脚对应位设置为 1 来使能。 输入下拉:输入下拉模式也是在浮空输入模式基础上使能了输入电路中的下拉开关,该开关由输出数据寄存器(GPIOx_ODR)引脚对应位设置为 0 来使能。 模拟输入:当 STM32 需要进行 AD(模数)转换时,需要把引脚设置为模拟输入模式,该模式需要配合ADC外设使用,GPIO完全只是一个通路,最后信号流入到 AD 转换电路中。 开漏通用输出:通用输出模式就是做为普通用途的输出模式,比如简单地控制引脚输出高低电平。 推挽通用输出:推挽输出与开漏输出原理理解都是差不多。
推挽复用功能输出:一个 I/O 引脚可以做为普通的 IO 接口,还可以做为其他设的特殊功能引脚,有些引脚可能有 4、5种不同功能,这种现象就叫做复用,引脚复用为特殊功能引脚,那引脚状态就由该外设决定。 2.STM32CubeMX 生成工程
STM32CubeMX 可以为我们提供很大的便利,配合 HAL 库使用可以提高工作效率。根据STM32底板 GokitV2.1原理图,4个LED分别连接到了STM32的引脚PB1、PB11、P14、PB15。我们将GPIO配置成推免输出模式,GPIO输出高电平点亮LED,低电平则LED熄灭。 STM32CubeMX具体配置如下:
工程文件: GokitDemo1_LED.zip