STM32 标准外设库中关于 GPIO(通用输入输出) 模块的函数声明

这些函数通常位于 stm32f10x_gpio.h 文件中,为了方便你理解,我将这些函数按照功能逻辑进行了分类解析:

目录

1.初始化与配置函数

2.读取输入信号函数

3.读取输出状态函数

4.控制输出电平函数

5.高级/特殊功能函数

1.GPIO_Init(最基础:初始化引脚)

[2.GPIO_SetBits/ GPIO_ResetBits (控制输出)](#2.GPIO_SetBits/ GPIO_ResetBits (控制输出))

[3. GPIO_ReadInputDataBit (读取状态)](#3. GPIO_ReadInputDataBit (读取状态))

[4. GPIO_EXTILineConfig (中断映射)](#4. GPIO_EXTILineConfig (中断映射))

特别提醒:配置三部曲


1.初始化与配置函数

这类函数用于设置引脚的工作模式(如推挽输出、浮空输入等)和速度。

GPI0_DeInit:将外设GPIOx寄存器重设为默认值(复位)。
GPI0_AFI0DeInit:将复位备用功能(AFIO)寄存器重设为默认值。
GPIO Init:最常用的函数。根据GPI0InitStruct中指定的参数初始化 GPIOx。
GPI0_StructInit:把GPI0_InitStruct 中的成员填入默认值(方便后续修改)。

2.读取输入信号函数

用于检测引脚上的电平状态(高电平或低电平)。

GPI0 ReadInputDataBit:读取指定 GPIO端口的某个特定引脚的输入值。
GPI0_ReadInputData:读取整个GPIO端口(16位)的输入值。

3.读取输出状态函数

用于查看你之前给引脚设置了什么电平。

GPI0 ReadOutputDataBit:读取指定端口某个引脚的输出状态。
GPI0_ReadOutputData:读取整个端口的输出状态。

4.控制输出电平函数

用于让引脚输出高电平或低电平(常用于控制LED、继电器等)。

GPI0_SetBits:将指定的引脚设置为高电平(1)。
GPI0 ResetBits:将指定的引脚设置为低电平(0)。
GPI0_WriteBit:向指定引脚写入值(高电平或低电平)。
GPI0 Write:向整个GPIO端口写入数据(一次性控制16个引脚)。

5.高级/特殊功能函数

用于锁定配置、引脚复用或中断映射。

GPI0 PinLockConfig:锁定引脚配置。锁定后,直到下次复位前都不能更改该引脚的设置。
GPI0_EventOutputConfig:配置事件输出引脚。
GPI0_EventOutputCmd:使能或失能事件输出。
GPI0_PinRemapConfig:引脚重映射。改变某些外设(如定时器、串口)对应的物理引脚。
GPI0_EXTILineConfig:选择GPIO引脚作为外部中断线(EXTI)。
GPI0_ETH_MediaInterfaceConfig:配置以太网接口(仅适用于带以太网控制器的型号)。

挑选了在 STM32 开发中最核心、最常用的几个函数,并结合代码示例进行解析

1.GPIO_Init(最基础:初始化引脚)

功能描述

这个函数相当于"开关"。在操作任何引脚之前,你必须告诉单片机:这个引脚是输入还是输出?速度是多少?

如何使用

你需要先定义一个结构体,填入参数,然后调用该函数。

复制代码
GPIO_InitTypeDef GPIO_InitStructure; // 1. 定义结构体

// 2. 开启时钟 (这一步至关重要,否则配置无效)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); 

// 3. 设置参数
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;          // 选择 0 号引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   // 推挽输出 (常用于点灯)
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  // 翻转速度

// 4. 调用函数
GPIO_Init(GPIOA, &GPIO_InitStructure);

2.GPIO_SetBits/ GPIO_ResetBits (控制输出)

功能描述

SetBits:让引脚变高电平(通常LED灭或亮,取决于电路)。

ResetBits:让引脚变低电平。

如何使用

这两个函数非常直观,直接输入端口和引脚号。

复制代码
// 让 PA0 输出高电平
GPIO_SetBits(GPIOA, GPIO_Pin_0);

// 让 PA0 输出低电平
GPIO_ResetBits(GPIOA, GPIO_Pin_0);

3. GPIO_ReadInputDataBit (读取状态)

功能描述

常用于检测按键。它会返回该引脚当前的电平状态。

如何使用

它返回一个 uint8_t 类型的值(1 或 0)。

复制代码
if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1) == 0) 
{
    // 如果读取到低电平,说明按键可能被按下了
    // 执行相应逻辑...
}

4. GPIO_EXTILineConfig (中断映射)

功能描述

如果你想让某个引脚在电平变化时触发一个"中断"(即停下主程序去处理紧急任务),就需要用这个函数。它把 GPIO 引脚和外部中断线连接起来。

如何使用

通常配合 AFIO 时钟使用。

复制代码
// 将 PB0 连接到外部中断线 0 上
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource0);

特别提醒:配置三部曲

在Keil中使用这些函数时,请务必遵守以下流程,否则引脚不会工作:

1.开启时钟 (RCC_APB2PeriphClockCmd )o

2.配置结构体 (GPI0_InitTypeDef)。

3.调用初始化函数(GPI0_Init)。

相关推荐
仰泳之鹅2 小时前
【天气时钟】第一课:工程模板的搭建
单片机·嵌入式硬件
Moonquakes5402 小时前
嵌入式开发基础学习笔记(LED实验C语言实现、蜂鸣器实验、SDK裸机驱动、链接脚本、BSP工程管理)
stm32·单片机·嵌入式硬件
思茂信息2 小时前
CST仿真实例:手机Type-C接口ESD仿真
c语言·开发语言·单片机·嵌入式硬件·智能手机·cst·电磁仿真
梁洪飞2 小时前
armv7 cache机制
linux·arm开发·嵌入式硬件·arm·memcache
我是海飞2 小时前
杰理 AC792N 使用 WebSocket 连接百度语音大模型,实现 AI 对话
c语言·单片机·嵌入式·ai对话·杰理·websockey
别掩2 小时前
光耦选型指南
单片机·嵌入式硬件
2023自学中2 小时前
嵌入式系统中的非易失性存储设备
linux·嵌入式硬件
Zeku10 小时前
Linux内核中SPI 子系统的整体架构
stm32·freertos·linux驱动开发·linux应用开发
czhaii14 小时前
MP3音乐播放器【FatFs+SD/TF卡+I2S-DAC】@STC32G144K246,实时解码MP3
单片机·硬件工程