基本概念
GPIO:通用的输入输出口,它被分为分为7个端口,分别是GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF、GPIOG,每个端口拥有16个引脚,分别是Px0~Px15,其中x代表不同的端口号(如端口A,它的16个引脚就是PA0~PA15)。

基本结构

GPIO的工作模式
| 模式名称 | 性质 | 特征 |
| 浮空输入 | 输入 | 可读取引脚电平,若引脚悬空,则电平不确定 |
| 上拉输入 | 输入 | 可读取引脚电平,内部连接上拉电阻,悬空时默认⾼电平 |
| 下拉输入 | 输入 | 可读取引脚电平,内部连接下拉电阻,悬空时默认低电平 |
| 模拟输⼊ | 输入 | GPIO⽆效,引脚直接接⼊其他外设 |
| 开漏输出 | 输出 | 引脚只输出低电平 |
| 推挽输出 | 输出 | 引脚即可以输出低电平、还可以输出⾼电平 |
| 复⽤推挽输出 | 输出 | 由⽚上外设控制,输出⾼低电平 |
| 复⽤开漏输出 | 输出 | 由⽚上外设控制,只输出低电平 |
浮空输入

上拉输入
下拉输入

模拟输入

开漏输出

推挽输出
开漏复用和推完复用输出
实践-点亮LED灯
LED灯原理图

工程代码
#include "stm32f4xx.h" // Device header
int main(void)
{
/*初始化时钟使能*/
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);
/*定义LED灯结构体*/
GPIO_InitTypeDef GPIO_InitStruct;
/*设置输出引脚:由原理图可得控制LED0的引脚是PF9*/
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9;
/*将引脚的操作模式定义为输出*/
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
/*确定输出类型:PP是推挽,OD是开漏*/
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
/*设置引脚的响应速度*/
GPIO_InitStruct.GPIO_Speed = GPIO_High_Speed;
/*初始化点灯结构体(目标端口,目标结构体)*/
GPIO_Init(GPIOF,&GPIO_InitStruct);
while(1)
{
int num=500000;
while(num--)
/*设置GPIOF的9号引脚为高电平(1),灯灭*/
GPIO_SetBits(GPIOF,GPIO_Pin_9);
num=500000;
while(num--)
/*设置GPIOF的9号引脚为低电平(0),灯亮*/
GPIO_ResetBits(GPIOF,GPIO_Pin_9);
}
}
运行结果:LED0会一闪一灭交替进行
本文介绍了STM32F4的GPIO接口,包括其7个端口和工作模式(如浮空输入、上拉/下拉输入、模拟输入、开漏/推挽输出)。通过示例展示了如何使用GPIO控制LED灯的亮灭。



4443

被折叠的 条评论
为什么被折叠?



