0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

实战驱动学习:用开源代码玩转GPIO输出/输入/中断开发!

合宙LuatOS 来源:合宙LuatOS 作者:合宙LuatOS 2025-08-25 13:32 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

学习开发最有效的方式就是动手实践!本文以实战为核心,通过开源示例代码带你快速上手配置GPIO输出、处理输入信号、利用中断优化系统响应,让学习成果立竿见影!

GPIO(General-Purpose Input/Output) 是通用输入输出接口的简称,其最大特性就是使用极为灵活,可以通过编程实现丰富应用。无论是点亮一个LED、读取一个按键,还是驱动更复杂的传感器和模块,都离不开GPIO的操作。

LuatOS开发提供的简洁API使得GPIO编程变得简单高效,降低了嵌入式开发的门槛,新手开发者也能快速上手。

本文将以Air780EPM V1.3开发板为例,分享LuatOS开发的GPIO输出/输入/中断应用示例要点。熟练掌握这三种GPIO工作模式,开发者能够实现大多数基础的硬件交互需求,为更复杂的物联网应用打下坚实基础。

wKgZPGir7SKAddzWABHVW8nzZbA756.png

最新源码及实操教程详见:https://docs.openluat.com/air780epm/luatos/app/driver/gpio

一、GPIO输出模式

GPIO的输出模式是指将GPIO配置为向外界输出高低电平的模式,常用于驱动LED、继电器、蜂鸣器等设备。

1.1 输出模式测试示例

Air780EPM开发板上的网络指示灯(蓝灯)与GPIO27相连,将引脚初始化为输出,并周期性改变其电平,从而实现每隔1秒亮0.5秒的呼吸灯闪烁效果。

wKgZO2ir7YOATejyAAOkeZPG-mc664.png

1.2 示例效果

wKgZPGir7ceABi9ZAAR-oOAZmf0714.png

wKgZPGir7daAO2rmAAZTDwiGcyQ942.png

二、GPIO输入模式

GPIO的输入模式是指将GPIO配置为接收外部信号的模式,常用于检测按键、开关等信号。

2.1 输入模式测试示例

配置GPIO24为输入模式,GPIO27(开发板蓝灯)为输出模式:

GPIO24检测到有高低电平输入后,会返回GPIO24当前获取到的电平为高还是低,高返回值为1,低返回值为0;

将这个返回值,传给GPIO27(LED),为0则GPIO27输出低电平(LED灯灭),为1则输出高电平(LED灯亮)。

wKgZO2ir7ieAUEUMAAPq0SOx4A8230.png

wKgZPGir7j2ATlgaAAB_TLTfCs8457.png


2.2 示例效果

准备一根杜邦线,将Air780EPM开发板上的GPIO24引脚在 GND/3.3V引脚中间切换,即可看到LED灯亮灭变化。

wKgZO2ir7n2ATb2jAAW0bIu3YRM091.png

三、GPIO中断模式

中断模式提供了高效的事件响应机制,特别适合需要实时处理的应用,如:紧急按键响应、外部事件触发、低功耗状态下的唤醒等。

当GPIO检测到电平变化且满足触发条件时,触发中断,CPU 就会暂停当前任务,执行中断回调函数中的内容,当中断回调函数中的内容执行完毕时,再继续执行之前没有执行完的任务;除了中断回调方式,还有中断计数模式(中断时不回调)。

3.1 中断模式(触发)测试示例

配置GPIO24为中断模式,上升沿(gpio.RISING)和下降沿(gpio.FALLING)均触发(gpio.BOTH)。

wKgZO2ir7uyAAfkgAASALziFSLo061.png

wKgZPGir7wSAArZXAADeeJ5Bd-o819.png

3.2 中断模式(触发)示例效果

将Air780EPM开发板上的GPIO24引脚在插拔VDD-EXT之间来回切换,即可在日志中看到打印。当GPIO24接触高/低电平时,均会触发中断:

wKgZO2ir72GAN_3hAAdlbCUFe88917.png

3.3 中断模式(计数)测试示例

配置gpio24为中断计数模式,配置PWM4输出1kHZ占空比50%的方波作为信号源,每隔1秒统计一次中断触发的次数。

wKgZPGir75yAE4V5AAQ72qQ8Ri8664.png

3.4 中断模式(计数)示例效果

硬件上将PWM4(开发板的网络指示灯与GPIO27相连,GPIO27同时也是PWM4通道)与GPIO24连接起来,通过PWM4输出中断(高低电平变化的方波),再通过GPIO24统计输出的中断数。

wKgZO2ir7-uAfR3YAAdJnWllvos907.png

今天的内容就分享到这里了~

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • GPIO
    +关注

    关注

    16

    文章

    1333

    浏览量

    56439
  • 开源代码
    +关注

    关注

    0

    文章

    41

    浏览量

    4022
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    深入解析RK平台GPIO驱动:从原理到调试,开发者必看指南

    GPIO(通用输入输出)作为嵌入式系统中最基础也最常用的硬件接口,是连接芯片与外部设备的 “桥梁”。从简单的 LED 控制、按键检测,到复杂的传感器通信,都离不开 GPIO 的支持。在瑞芯微(RK
    的头像 发表于 02-03 15:53 1244次阅读
    深入解析RK平台<b class='flag-5'>GPIO</b><b class='flag-5'>驱动</b>:从原理到调试,<b class='flag-5'>开发</b>者必看指南

    【书籍评测活动NO.67】成为硬核Linux开发者:《Linux 设备驱动开发(第 2 版)》

    sysfs接口,使用libgpiod库在用户空间便捷操作GPIO。还介绍了Linux内核输入子系统,强调轮询输入设备与中断
    发表于 11-17 17:52

    分享一个驱动开发工程师学习路线图

    、printk排查驱动逻辑问题,会用J-Link调试内核态代码,掌握万表、示波器定位硬件连接故障(如虚焊、电平异常)。 实战项目 完成3个基础项目:①
    发表于 11-12 10:44

    【迅为RK3568开发板NPU实战】别再闲置你的NPU!手把手教你玩转RKNN-Toolkit2 的使用

    【迅为RK3568开发板NPU实战】别再闲置你的NPU!手把手教你玩转RKNN-Toolkit2 的使用
    的头像 发表于 11-11 14:21 1511次阅读
    【迅为RK3568<b class='flag-5'>开发</b>板NPU<b class='flag-5'>实战</b>】别再闲置你的NPU!手把手教你<b class='flag-5'>玩转</b>RKNN-Toolkit2 的使用

    低成本开源乐鑫科技ESP32-S3开发板轻松驱动无刷电机,保姆级教程来了!

    想用ESP32-S3开发驱动无刷电机却不知从何下手?本教程将手把手教你完成从硬件连接到软件编程的全流程,无论你是新手还是有一定经验的开发者,都能轻松掌握!本教程代码已全部
    的头像 发表于 11-06 18:03 1113次阅读
    低成本<b class='flag-5'>开源</b>!<b class='flag-5'>用</b>乐鑫科技ESP32-S3<b class='flag-5'>开发</b>板轻松<b class='flag-5'>驱动</b>无刷电机,保姆级教程来了!

    分享一个嵌入式学习阶段规划

    给大家分享一个嵌入式学习阶段规划: (一)基础筑牢阶段(约 23 天) 核心目标:打牢 C 语言、数据结构、电路基础C 语言开发:学变量 / 指针 / 结构体等核心语法, Dev-C++ 实操
    发表于 09-12 15:11

    开源电机驱动,免费学习

    CW32L010_BLDC_ESC_Driver电机驱动开发板 项目与资料开源项目详细开源资料可点击复制链接转到浏览器: CW32L010_BLDC_ESC_Driver电机
    的头像 发表于 07-01 14:51 1067次阅读
    <b class='flag-5'>开源</b>电机<b class='flag-5'>驱动</b>,免费<b class='flag-5'>学习</b>

    实战低功耗应用:实网功耗测试数据公开,附开源代码指南!

    如何打造高效能的低功耗应用?本文基于实际网络场景的功耗测试数据,揭示性能优化核心技巧,并附上开源代码,供开发者直接参考与调试。 本文将以Air8000核心板为例,带你快速上手三种功耗模式。在实际
    的头像 发表于 06-17 14:55 2152次阅读
    <b class='flag-5'>实战</b>低功耗应用:实网功耗测试数据公开,附<b class='flag-5'>开源代码</b>指南!

    开源电机驱动,免费直播学习!

    开源电机驱动,免费直播学习!
    的头像 发表于 06-13 10:07 2011次阅读
    <b class='flag-5'>开源</b>电机<b class='flag-5'>驱动</b>,免费直播<b class='flag-5'>学习</b>!

    迅为RK3568开发驱动指南GPIO子系统GPIO子系统API函数的引入

    迅为RK3568开发驱动指南GPIO子系统GPIO子系统API函数的引入
    的头像 发表于 05-29 14:05 1185次阅读
    迅为RK3568<b class='flag-5'>开发</b>板<b class='flag-5'>驱动</b>指南<b class='flag-5'>GPIO</b>子系统<b class='flag-5'>GPIO</b>子系统API函数的引入

    AS32X601驱动系列教程 GPIO_按键检测详解

    在嵌入式系统开发中,GPIO(通用输入输出端口)是实现硬件与软件交互的关键组件。本节主要利用的时GPIO输入采集功能,本节的主要功能为,读
    的头像 发表于 05-23 16:44 966次阅读
    AS32X601<b class='flag-5'>驱动</b>系列教程 <b class='flag-5'>GPIO</b>_按键检测详解

    AS32X601驱动系列教程 GPIO_点亮LED详解

    在嵌入式开发的奇妙旅程中,GPIO(通用输入输出接口)作为芯片与外部世界交互的重要桥梁,扮演着不可或缺的角色。从简单的 LED 灯控制,到复杂的外设通信,GPIO 的灵活运用为
    的头像 发表于 05-23 16:14 894次阅读
    AS32X601<b class='flag-5'>驱动</b>系列教程 <b class='flag-5'>GPIO</b>_点亮LED详解

    迅为RK3568驱动指南GPIO子系统实战:实现动态切换引脚复用功能

    迅为RK3568驱动指南GPIO子系统实战:实现动态切换引脚复用功能
    的头像 发表于 05-22 14:27 2342次阅读
    迅为RK3568<b class='flag-5'>驱动</b>指南<b class='flag-5'>GPIO</b>子系统<b class='flag-5'>实战</b>:实现动态切换引脚复用功能

    NCA9555 具有16位通并行I²C总线数输入输出GPIO扩展功能

    NCA9555是一款24引脚CMOS器件,提供16位通并行I2C总线数输入/输出GPIO扩展功能。它和ACPI电源开关,传感器,按键,LED和风扇等应用的额外I/O口需求提供了简单的
    发表于 05-19 18:02 0次下载

    89元起!开源国产FPGA开发套件,提供原理图及配套参考例程的源代码

    提供开源原理图及配套参考例程的源代码。接口丰富,为用户提供基本的硬件环境*盘古1/2KG板卡上的Jtag原理图*盘古
    的头像 发表于 05-13 08:07 1385次阅读
    89元起!<b class='flag-5'>开源</b>国产FPGA<b class='flag-5'>开发</b>套件,提供原理图及配套参考例程的<b class='flag-5'>源代码</b>