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

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

目录

1.初始化与配置函数

2.读取输入信号函数

3.读取输出状态函数

4.控制输出电平函数

5.高级/特殊功能函数

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

2.GPIO_SetBits/ GPIO_ResetBits (控制输出)

3. GPIO_ReadInputDataBit (读取状态)

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)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1190515.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据分类预测总让人头秃,传统BP神经网络容易掉进局部最优解的大坑。今天咱们搞点刺激的——用遗传算法给BP神经网络调参,直接在MATLAB里整活

基于遗传算法优化BP神经网络(GA-BP)的数据分类预测 matlab代码先看核心套路:遗传算法负责全局搜索找最优初始权值阈值,BP神经网络拿着这些参数做精细训练。这就像先用无人机扫描整座山找矿脉,再派专业挖矿队定点开挖。…

SSAS - 生成模拟测试数据

在分析系统中,因为数据量太大,无法直观看出统计结果的正确性。在使用新技术时,需要使用简单的数据,来验证语句的结果。本文介绍SQL Server生成模拟数据的方法。 使用技术 一、静态数据:VALUES 使用说明 格式&#xff1…

基于FPGA的图像形态学腐蚀处理Verilog开发与开发板硬件测试

目录 1.前言 2.算法硬件测试效果图预览 3.算法运行软件版本 4.部分核心程序 5.算法测试参数 6.硬件测试说明 7.算法理论概述 8.算法完整程序工程 1.前言 本课题为之前博客中写的文章的硬件调试: 基于FPGA的图像形态学腐蚀算法实现,包括tb测试文件和MATLAB…

【技术分享】让AI变“听话“:AI Agent Skill完全指南,收藏备用

文章介绍AI Agent Skill工具,通过结构化知识文档解决AI自作主张、质量不稳定和重复劳动三大痛点。Skill包含基础架构、流程规范和质量标准三层,提高AI的可控性、一致性和效率。文章详解设计原则、创建步骤和最佳实践,通过写作、代码助手、数据…

NFT:从加密猫到数字资产新纪元的全面解析

1 NFT:数字世界的所有权革命在数字化生存日益深入的今天,我们生产、消费和传播的数字内容比以往任何时候都多。然而,在传统的互联网架构下,这些数字资产极易被复制和传播,导致原创者难以确权和获利。NFT​ 的诞生正是为…

AI智能体的“成长秘诀“:从强化学习到DPO算法,实现从被动执行到自我进化的飞跃【建议收藏】

智能体通过"学习与适应"能力实现从"被动执行"到"主动成长"的进化。文章详细介绍了6种核心学习方式(强化学习、监督学习等)和两大核心算法(PPO与DPO),并通过SICA、AlphaEvolve和OpenEvol…

干货满满:Redis 分布式锁必避的 8 大问题及解决方案

在分布式系统中,Redis 分布式锁虽能高效解决跨服务并发冲突,但实际落地时稍不注意就会踩坑——小到数据不一致,大到服务雪崩,这些问题多源于对 Redis 特性、分布式场景复杂性的考虑不周。之前开发电商库存和订单系…

数字钱包:如何正确选择使用你的数字钱包

加密货币世界里,“不是你的私钥,就不是你的币”​ 这句格言点明了私钥管理的重要性,而钱包正是守护这些私钥的关键工具。了解不同类型的钱包及其安全与便利的平衡,对管理数字资产至关重要。下面这个表格能让你快速把握冷钱包、热钱…

学习进度 4

今天学了点机器学习相关知识。 一、机器学习到底是什么 此前对机器学习的认知停留在“让电脑自己学习”的模糊概念里,今天才算有了清晰界定:机器学习是人工智能的核心分支,本质是让计算机通过数据训练,自动学习规律…

买礼物(洛谷P1194)

题目描述又到了一年一度的明明生日了,明明想要买 B 样东西,巧的是,这 B 样东西价格都是 A 元。但是,商店老板说最近有促销活动,也就是:如果你买了第 I 样东西,再买第 J 样,那么就可以…

SSAS - 步骤一:通过VS2022新建项目

本文介绍如何通过Visual Studio 2022创建SSAS项目。 打开CMD窗口,输入如下命令。注意替换服务器地址和VS2022文件的目录。 runas /netonly /user:192.168.88.74\administrator "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\devenv.…

Springboot中使用activemq

1. 引入ActiveMQ的SpringBoot插件<!-- ActiveMQ --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-activemq</artifactId></dependency>2. application中增加activemq的配置spring:acti…

公路修建(洛谷P1265)

题目描述某国有 n 个城市&#xff0c;它们互相之间没有公路相通&#xff0c;因此交通十分不便。为解决这一“行路难”的问题&#xff0c;政府决定修建公路。修建公路的任务由各城市共同完成。修建工程分若干轮完成。在每一轮中&#xff0c;每个城市选择一个与它最近的城市&…

程序监控与异常防护-PART-Simulink-看门狗

程序监控与异常防护-PART-Simulink-看门狗程序监控与异常防护-PART-Simulink-看门狗 关键词 看门狗、程序监控、异常处理、Simulink、自动化控制一、问题分析:为什么需要看门狗 在自动化实验控制平台中,我们经常会遇…

LIDA 477 编码器位移/速度/加速度采集与转换-PART-LIDA 477-采集转换

LIDA 477 编码器位移/速度/加速度采集与转换-PART-LIDA 477-采集转换LIDA 477 编码器位移/速度/加速度采集与转换-PART-LIDA 477-采集转换 关键字:LIDA 477、Hidenhain、磁姗尺、编码器、位移、速度、加速度、Simulin…

1121

编程练习

软件升级回退报告

一、引言为提升软件系统性能、优化现有功能并修复已知问题&#xff0c;本团队于[升级实施日期]对[软件名称]系统开展了版本升级工作&#xff0c;计划将系统从[原版本号]升级至[目标版本号]。升级后&#xff0c;系统出现[简要说明核心问题&#xff0c;如&#xff1a;关键功能异常…

SQL Server数据库

数据库按照特定的数据结构来组织、存储和管理数据的集合作用高效地存储大量数据&#xff0c;并支持快速的查询、修改、删除等操作同时保证数据的安全性、完整性和一致性。一&#xff0c;创建主数据文件命令创建&#xff1a;create 修改&#xff1a;alt…

1124

编程练习