【STM32】引脚配置—F1与F4系列

目录
一、stm32的GPIO模式简介
1、输入模式
2、输出模式
3、复用模式
各形式说明:
二、GPIO配置
1、GPIO初始化函数
2、外设使能函数及选择
关于使能函数的选择
3、完整的GPIO初始化步骤
(1)用作普通IO
(2)作为复用IO(以串口为例)
三、关于引脚的0、1输出操作
1、单一引脚的操作函数:
2、同时对多个引脚操作函数:
一、stm32的GPIO模式简介
stm32的GPIO引脚共有输入、输出和复用三种模式 , 每种模式又有多种使用形式:
1、输入模式
a.输入上拉
b.输入下拉
c.输入浮空
d.模拟输入
2、输出模式
a.开漏输出
b.推挽输出
3、复用模式
a.推挽式复用
b.开漏式复用
各形式说明:
上拉:GPIO通过上拉电阻接到VCC , 即高电平;
下拉:GPIO通过下拉电阻接到GND , 即低电平;
浮空:GPIO不上拉也不下拉 , 处于浮空状态(浮空状态的高低电平不稳定 , 一般不浮空);
模拟:用作模拟量输入 , 模数转换(ADC)时的模拟量输入 。
推挽输出:既可以输出高电平也可以输出低电平 , 驱动能力强;
开漏输出:输出低电平时引脚接地 , 无法真正输出高电平 , 即高电平时没有驱动能力 , 需要外接上拉电阻;这种方式适合在连接的外设电压比单片机电压低的时候 。同时能读取IO口状态 。
复用:GPIO可以用作其他功能引脚 , 例如复用为串口、SPI等 , 每个引脚可复用的功能不同 , 具体需查看芯片手册引脚定义章节 。
二、GPIO配置
stm32的引脚配置相关库函数及定义在”.c”和”.h”(F4系列:”.c”和”.h”)这两个文件里面 。要使用相关外设就必须要使能 , 关于使能的库函数及定义在”.c”和”.h”(F4系列:”.c”和”.h”)里面 。
1、GPIO初始化函数
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
函数有两个参数 , GPIOx则是哪组GPIO(GPIOA、GPIOB、GPIOB……) , 第二个参数则是一个结构体变量 , 该结构体成员如下(在.h头文件中找到):
F10x系列:
typedef struct{uint16_t GPIO_Pin;/*引脚号选择 , 多个引脚时用|隔开 , GPIO_Pin_0---15*/GPIOSpeed_TypeDef GPIO_Speed;/*速率选择*/GPIOMode_TypeDef GPIO_Mode;/*模式选择*/}GPIO_InitTypeDef;
F4xx系列:
typedef struct{uint32_t GPIO_Pin;/*引脚号选择,多个引脚时用|隔开 , GPIO_Pin_0---15*/GPIOMode_TypeDef GPIO_Mode;/*模式选择*/GPIOSpeed_TypeDef GPIO_Speed;/*速率选择*/GPIOOType_TypeDef GPIO_OType;/*输出类型 , 推挽输出、开漏输出 , 如为输入模式则去掉该项*/GPIOPuPd_TypeDef GPIO_PuPd;/*上拉下拉选择*/}GPIO_InitTypeDef;
对结构体成员赋值即可完成该引脚的配置 , 而每个成员又是一个枚举变量 , 因此我们只需选择其中一个枚举值进行赋值即可 , 相关的枚举值在_gpio.h头文件里能找到 。
2、外设使能函数及选择
(关于使能函数的选择 , 本人有幸体会过找错函数的尴尬:那是一个课堂上 , 需要点亮一个LED的简单任务 , 就因为选错了使能函数使得LED不能点亮 , 不断更改程序都无果 , 以致于使我觉得是板子的问题 , 于是叫来了助教 , 助教一眼就看出我的使能函数错了 , 我******这段话是个废话)