GPIO(通用输入输出)是微控制器(如STM32)中非常基本且重要的功能之一。它允许微控制器与外部设备进行数字通信,控制外部设备,或者接收来自外部设备的信号。GPIO引脚可以配置为输入或输出,并且可以设置为不同的模式以满足不同的应用需求。
主要特点:
-
多功能性:GPIO引脚可以配置为数字输入或输出,也可以复用为特定的外设功能,如UART、SPI、I2C等。
-
可配置性:可以通过软件配置GPIO引脚的电气特性,如上拉、下拉、开漏或推挽输出等。
-
灵活性:GPIO引脚可以单独控制,也可以成组控制,方便实现复杂的I/O管理。
-
速度:GPIO操作通常非常快,可以满足大多数实时控制需求。
常见用途:
-
控制LED灯:通过输出高电平或低电平来控制LED的亮灭。
-
读取按钮状态:将按钮连接到GPIO引脚,通过读取引脚的电平状态来检测按钮是否被按下。
-
与传感器通信:读取传感器输出的数字信号。
-
与其他微控制器或设备通信:通过UART、SPI、I2C等协议与其他设备进行数据交换。
配置步骤:
-
配置模式:选择GPIO引脚作为输入或输出,以及是否复用为特定外设功能。
-
配置上下拉:如果需要,可以配置上拉或下拉电阻。
-
配置输出类型:对于输出引脚,选择开漏或推挽输出。
-
配置输出速度:设置输出引脚的驱动能力,以适应不同的电压和电流需求。
八种工作模式:
-
GPIO_Mode_AIN (模拟输入): 在此模式下,GPIO引脚用于模拟输入,通常用于ADC(模数转换器)等模拟功能。在这种模式下,引脚的电平是不确定的,完全由外部输入决定。
-
GPIO_Mode_IN_FLOATING (浮空输入): 浮空输入模式下,GPIO引脚的电平信号直接进入输入数据寄存器。如果引脚悬空(无信号输入),则其电平状态不确定。
-
GPIO_Mode_IPD (下拉输入): 在下拉输入模式下,GPIO引脚内部连接到下拉电阻。当引脚悬空时,由于下拉电阻的作用,引脚电平被拉低。
-
GPIO_Mode_IPU (上拉输入): 上拉输入模式下,GPIO引脚内部连接到上拉电阻。当引脚悬空时,由于上拉电阻的作用,引脚电平被拉高。
-
GPIO_Mode_Out_OD (开漏输出): 开漏输出模式下,通过设置位设置/清除寄存器或输出数据寄存器的值来控制引脚输出。如果输出高电平,则引脚处于高阻态;如果输出低电平,则引脚被驱动到低电平。
-
GPIO_Mode_Out_PP (推挽输出): 推挽输出模式下,引脚可以通过内部的上拉和下拉电阻分别驱动到高电平和低电平状态。
-
GPIO_Mode_AF_OD (复用开漏输出): 复用开漏输出模式下,引脚用于复用功能,如USART、SPI等。输出行为与开漏输出相似,但控制来自复用功能。
-
GPIO_Mode_AF_PP (复用推挽输出): 复用推挽输出模式下,引脚同样用于复用功能,如USART、SPI等。输出行为与推挽输出相似,但控制来自复用功能。
GPIO是微控制器与外部世界交互的桥梁,其灵活性和多功能性使其成为各种应用中不可或缺的部分。