STM32 · 2024年4月28日 0

《STM32—GPIO》

1. GPIO简介

GPIO是通用输入/输出端口的缩写。在微控制器(eg:stm32)中,GPIO的作用是设备与外部进行数字信号交换,用于连接外部设备或者是执行控制任务。

2. GPIO引脚

一般在stm32上GPIO被分为PA0-PA15,PB0-PB15……芯片引脚越多对应的编号也就越多。

值得一提的是每个字母下有16个GPIO,对应的正是16位寄存器。

3. GPIO工作模式

  • 输入模式(Input Mode):用于读取外部信号的状态。在此模式下,引脚可以接收外部电平信号,并传输给微控制器。(通常情况下输入模式有浮空输入,上拉输入,下拉输入,模拟输入)
  • 输出模式(Output Mode):用于控制外部设备,输出逻辑高或逻辑低信号。在此模式下,微控制器可以控制引脚输出高电平或低电平信号。(通常情况下输出模式有开漏输出,推挽输出,复用开漏输出以及复用推挽输出)
  • 注意:开漏输出只支持低电平输出,高电平无效,但最大特点是电流容忍度最高。普通情况推挽输出足矣。

4. 对于标准库而言GPIO参数配置

在配置GPIO引脚时,需要设置以下参数:

  • 工作模式选择:具体有哪些模式可参照3中所说
  • 选择引脚:推挽输出或开漏输出。
  • GPIO速度:输出速度的控制,影响上升和下降沿的斜率。
  • 以及最后的初始化GPIO

5.GPIO示例程序(标准库)

GPIO_InitTypeDef ga;
//GPIO输入
ga.GPIO_Mode= GPIO_Mode_IPU;//定义为上拉输入
/*
GPIO_Mode_AIN 模拟输入
GPIO_Mode_IN_FLOATING 浮空输入
GPIO_Mode_IPD 下拉输入
GPIO_Mode_IPU 上拉输入
GPIO_Mode_Out_OD 开漏输出
GPIO_Mode_Out_PP 推挽输出
GPIO_Mode_AF_OD 复用开漏输出
GPIO_Mode_AF_PP 复用推挽输出
*/
ga.GPIO_Pin= GPIO_Pin_6|GPIO_Pin_7;
ga.GPIO_Speed= GPIO_Speed_50MHz; //频率设置
GPIO_Init(GPIOA, &ga);//GPIO初始化

uint8_t a=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6); //GPIO引脚状态读取,返回值0为低电平1为高电平
uint16_t b=GPIO_ReadInputData(GPIOA); //该寄存器下16位数据全读取