GPIO与总线的连接
例如stm32f103c8的几组GPIO就挂载在APB2上
GPIO的引脚功能
1. 输出
(1) 推挽输出
可以配置上拉下拉输出模式
原理图
(2) 开漏输出
具有“线与”的功能
原理图
开漏输出一般应用在I2C、SMBUS通信等需要“线与”功能的总线电路中。除此之外,还用在电平不匹配的场合,如需要输出5V的高电平,就可以在外部接一个上拉电阻,上拉电源为5V,并且把GPIO设置为开漏模式,当输出高阻态时,由上拉电阻和电源向外输出5V的电平,如下图
(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
HAL_GPIO_ReadPin
HAL_GPIO_TogglePin
HAL_GPIO_WritePin