当前位置: 首页 > news >正文

基于HAL库的STM32笔记——GPIO

01.GPIO简介

GPIO(General Purpose Input Output)是一种通用的输入输出接口,用于控制硬件设备。支持4种输入模式(浮空输入、上拉输入、下拉输入、模拟输入)和4种输出模式(开漏输出、开漏复用输出、推挽输出、推挽复用输出)。同时,GPIO还支持三种最大翻转速度(2MHz、10MHz、50MHz)。

模式名称特征典型应用
浮空输入
GPIO_Mode_IN_FLOATING
可读取引脚电平,若引脚悬空,则电平不确定外部有固定电平的信号(如串口RX)
上拉输入
GPIO_Mode_IPU
可读取引脚电平,内部连接上拉电阻,悬空时默认高电平按键、NPN型传感器
下拉输入
GPIO_Mode_IPD
可读取引脚电平,内部连接下拉电阻,悬空时默认低电平PNP型传感器、高电平触发信号
模拟输入
GPIO_Mode_AIN
GPIO无效,引脚直接接入内部ADC电位器、温度、湿度
开漏输出
GPIO_Mode_Out_OD
可输出引脚电平,高电平为高阻态,低电平接VSSIIC总线、线与功能、共阳极LED
推挽输出
GPIO_Mode_Out_PP
可输出引脚电平,高电平接VCC,低电平接GNDLED、串口TX、小型继电器
复用功能的推挽输出
GPIO_Mode_AF_PP
由片上外设控制,高电平接VDD.低电平接VSSI2C_SDA/SCL、SPI_MISO
复用功能的开漏输出
GPIO_Mode_AF_OD
由片上外设控制,高电平为高阻态,低电平接VSSUART_TX、SPI_MOSI、PWM输出

关于详细的介绍,可以查看相关博主:
8种工作模式的内部电路:https://blog.csdn.net/qq_38410730/article/details/79858906
推挽输出和开漏输出区别:https://blog.csdn.net/MANONGDKY/article/details/154477018

02.配置GPIO用到的库函数

函数名功能说明
HAL_GPIO_Init();初始化引脚工作模式
HAL_GPIO_DeInit();恢复引脚为默认状态
HAL_GPIO_ReadPin();读取引脚电平
HAL_GPIO_WritePin();给引脚写0或1
HAL_GPIO_TogglePin();翻转引脚电平
HAL_GPIO_LockPin();锁定引脚电平
HAL_GPIO_EXTI_IRQHandler();外部中断服务函数
HAL_GPIO_EXTI_Callback();重写中断回调函数

03.搭建环境

主要软件:STM32CubeMX、Keil

在STM32CubeMX中配置好,便可以生成Keil工程





http://www.jsqmd.com/news/1094098/

相关文章:

  • 作为Python开发者值得关注的五个第三方库
  • ITSM系统里的工单分类:为什么分类越细,IT服务台反而越难用?
  • AI教材写作新突破!借助AI工具快速编写教材,低查重率不是梦
  • 进阶调节作用分析 | 多个自变量、二分类因变量、有序因变量及面板数据都能做
  • 自动售货机和传统便利店的区别,哪个更有优势?~YH
  • 聚龙汇刘睿 以信任为基石 打造投资社群新生态
  • PHP代码审计实战:preg_match正则绕过与无字母数字WebShell构造
  • 告别付费:Android原生TTS引擎的离线语音合成实战
  • 联想拯救者BIOS隐藏功能解锁:5分钟释放你的笔记本全部性能
  • 2026实测12款论文降AI率软件,效果最好的竟然是它!
  • Agent Runtime 范式革命:从混沌执行到确定性系统
  • 深入解析JavaScript原型链污染:原理、危害与防御实战
  • 2026年为什么越来越多家庭开始重视家庭系统建设?
  • agent 学习
  • AI期刊论文写作工具哪个好?2026年主流工具横向测评
  • 艺起玩一夏 | 暑期用小艺做攻略、听讲解、修美图,轻松玩转沉浸式研学
  • Java毕业设计-基于 SpringBoot 的戏曲文化科普与分享平台设计 传统文化视域下戏曲传播管理系统的设计与实现(源码+LW+部署文档+全bao+远程调试+代码讲解等)
  • 主流办公APP对比,图文会议总结功能谁更实用
  • 2026一线大厂Java面试八股文整理(附答案)| 建议收藏
  • ByteArrayInputStream和DataInputStream的源码分析和使用方法详细分析前言)UTF-8 编码规则
  • 621万vs697万!2026年结婚人数预测你信哪个?
  • 世界模型的PopLang底座:当物理AI遇上ibbot智体机灵,每台手机都能成为“认知推演沙盘”
  • Python列表去重的20种实现方式
  • 2026年门店SaaS系统开发服务商测评推荐:适配本地生活服务的优质方案解析
  • 单台Nginx部署多个前端项目:IP路径区分 \+ 域名区分完整实战
  • 罗德与施瓦茨(RS)的矢量网络分析仪应用场景
  • 时间管理:番茄工作法在编程中的应用
  • title: Claude Code 教程:从零搭建 AI 驱动的开发工作流(基于 Google 新版 SDLC 白皮书)
  • 计算机Java毕设实战-基于 SpringBoot 的老年人健康管理系统的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 示波器抓 I2C 时序:如何一眼看出 ACK 没拉低?