GPIO与总线的连接

例如stm32f103c8的几组GPIO就挂载在APB2上
image.png

GPIO的引脚功能

1. 输出

(1) 推挽输出

可以配置上拉下拉输出模式
原理图
image.png

(2) 开漏输出

具有“线与”的功能
原理图
image.png
开漏输出一般应用在I2C、SMBUS通信等需要“线与”功能的总线电路中。除此之外,还用在电平不匹配的场合,如需要输出5V的高电平,就可以在外部接一个上拉电阻,上拉电源为5V,并且把GPIO设置为开漏模式,当输出高阻态时,由上拉电阻和电源向外输出5V的电平,如下图image.png

(3) 复用功能输出

“复用功能输出”中的“复用”是指STM32的其他片上外设对GPIO引脚进行控制,此时GPIO引脚用作该外设功能的一部分,算是第二用途。

2.输入

(1) 上拉输入
(2) 下拉输入
(3) 浮空输入
(4) 模拟输入

HAL库gpio配置代码

GPIO_mode:

状态定义释义
GPIO_MODE_INPUT浮空输人模式
GPIO_MODE_OUTPUT_PP推挽输出模式
GPIO_MODE_OUTPUT_OD开漏输出模式
GPIO_MODE_AF_PP复用功能推挽模式
GPIO_MODE_AF_OD复用功能开漏模式
GPIO_MODE_ANALOG模拟模式
GPIO_MODE_IT_RISING上升沿触发检测的外部中断模式
GPIO_MODE_IT_FALLING下降沿触发检测的外部中断模式
GPIO_MODE_IT_RISING_FALLING上升/下降沿触发检测的外部中断模式
GPIO_MODE_EVT_RISING上升沿触发检测的外部事件模式

GPIO_MODE_EVT_FALLING下降沿触发检测的外部事件模式
GPIO_MODE_EVT_RISING_FALLING|上升/下降沿触发检测的外部事件模式
GPIO_speed
|定义|说明|
|--|--|
|GPIO_SPEED_FREQ_LOW|频率范围最高到2MHZ|
|GPIO_SPEED_FREQ_MEDIUM|频率范围最高到4-10MHZ|
|GPIO_SPEED_FREQ_HIGH|频率范围最高到10-50MHZ|

GPIO_pull
|--|--|
|GPIO_NOPULL|没有上拉或下拉激活|
|GPIO_PULLUP|上拉激活|
|GPIO_PULLDOWN|下拉激活|

HAL_GPIO_Init
image.png
HAL_GPIO_ReadPin
HAL_GPIO_TogglePin
HAL_GPIO_WritePin
image.png