STM32的GPIO开发基础
知识要点
-
GPIO:General Purpose Input & Output,即通用目的的输入输出端口,可以理解为芯片的引脚,实现高低电平的输入和高低电平的输出。
-
一个引脚具有多个功能称之为引脚的功能复用,但在实际应用中只能选择其中一种功能来使用
-
STM32芯片最拥有GPIOA、GPIOB…GPIOG等7组端口,每组端口最多拥有Pin0、Pin1 …Pin15共16个引脚。
-
STM32的每个I/O端口都可以自由编程,但/O端口寄存器必须按32位字(4个字节)被访问。(1个字等于两个字节、1个字节等于8位、1KB等于1024字节)
-
STM32的每个l/O端口都由7个寄存器来控制。
-
STM32的I/O端口可以由软件配置成8种模式:
- 1-推挽输出
- 2-开漏输出
- 3-推挽式复用功能
- 4-开漏式复用功能
- 5-模拟输入(AD转换的模拟信号)
- 6-浮空输入
- 7-下拉输入
- 8-上拉输入
推挽输出:
可以输出高,低电平,连接数字器件; 推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由IC的电源低定。
推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。 -
上拉电阻和下拉电阻
在电子元器件间中,并不存在上拉电阻和下拉电阻这两种实体的电阻,之所以这样称呼,原因是根据电阻不同使用的场景来定义的,其本质还是电阻。就像去耦电容,耦合电容一样,也是根据其应用场合来取名,其本质还是电容。
上拉电阻的定义:在某信号线上,通过电阻与一个固定的高电平VCC相接,使其电压在空闲状态保持在VCC电平,此时电阻被称为上拉电阻。
同理,下拉电阻的定义:将某信号线通过电阻接在固定的低电平GND上,使其空闲状态保持GND电平,此时的电阻被称为下拉电阻。
如下图所示,如果上拉电阻的阻值在上百K,能提供给信号线上负载电流非常小,对负载电容充电比较慢,此时电阻被称为弱上拉。
同理当下拉的电阻非常大时,导致下拉的速度比较缓慢,此时的电阻被称为弱下拉。而当上下拉的电平可以提供较大的电流给芯片时,此时的电阻被称为是强上拉或强下拉。
在STM32CubeMX中配置参数
利用STM32CubeMX可以根据对芯片配置 的相关的参数自动生成工程代码
常用的2个GPIO输出的HAL库函数
-
GPIO电平输出HAL库函数
void HAL_GPlO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
理解三个参数:- 1- GPIOx:目标引脚的端口号
- 2- GPIO_Pin:目标引脚的引脚号。
- 3- PinState:高电平----GPIO_PIN_SET;低电平----GPIO_PIN_RESET
如:向PB8引脚输出高电平
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_SET);
-
GPIO电平翻转HAL库函数
void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin);
如:将PA3引脚输出电平翻转
HAL_GPIO_TogglePin(GPIOA;GPIO_PIN_3);