Linux下的GPIO基本概念指南
一、什么是GPIO
在Linux中,GPIO(General Purpose Input/Output,通用输入输出)是一种用于控制外部设备和传感器的通用接口。它允许你通过软件控制数字信号,从而实现各种硬件设备的交互,如LED、按钮、传感器、马达等。
每个GPIO引脚都可以被配置为输入或者输出,使其适用于不同的应用场景。例如:你可以将GPIO配置为输出来控制LED灯的亮灭,或者将其配置为输入来读取按钮按下的状态。
Linux内核为GPIO提供了统一的管理和控制接口,以及在"/sys/class/gpio/"路径下的文件系统接口。通过这些接口,用户空间的程序可以与GPIO进行交互,包括导出(export)、配置方向、读取和写入GPIO值等操作。
使用GPIO接口需要注意权限问题,通常需要以root或者具有适当权限的用户来执行相关操作。不同的开发板和硬件平台可能会有不同的GPIO引脚分配和编号方式,因此在实际操作中需要查阅相关的文档或者示例代码。
二、文件结构
在Linux中,"/sys/class/gpio/"路径下的文件和文件夹是用来控制和管理GPIO(通用输入输出)的接口。以下是这些文件和文件夹的作用。
1、export(文件)
用于导出一个GPIO引脚,使其能够在用户空间中被使用。写入一个引脚号到这个文件可以导出对应的GPIO
2、unexport(文件)
用于取消导出一个GPIO引脚,从而停止其在用户空间中的使用。写入一个引脚号到这个文件可以取消导出对应的GPIO
3、gpioX(目录)
X为引脚号,导出后的GPIO引脚会在这个文件夹中生成一个以引脚号命名的文件夹,其中包含了与该引脚相关的文件:
3.1、active_low
用于设置GPIO的极性。
设置为 1 GPIO的高电平状态对应的是逻辑上的低电平
设置为 0 GPIO的高电平状态对应的是逻辑上的高电平
3.2、direction
用于设置GPIO的方向,可以是
in 输入
out 输出
3.3、edge
用于适GPIO的中断触发方式。可以设置为:
none 无中断触发
rising 上升沿触发
falling 下降沿触发
both 上升沿和下降沿都触发
3.4、subsystem
表示这个GPIO所属的子系统
3.5、uevent
这个文件用来发送内核事件信息给用户空间,当GPIO状态发生改变时,会触发一个uevevt,通知用户空间
3.6、value
对于输出GPIO,用于写入"0"或"1",控制引脚的电平。
对于输出GPIO,用于读取当前引脚的电平。
3.7、gpiochipX
表示 GPIO 控制器的内核设备。在 Linux 内核中,GPIO 控制器被抽象为
gpiochip设备,每个gpiochip设备代表一个物理的 GPIO 控制器或者一个虚拟的 GPIO 控制器。
相关文章:
Linux下的GPIO基本概念指南
一、什么是GPIO 在Linux中,GPIO(General Purpose Input/Output,通用输入输出)是一种用于控制外部设备和传感器的通用接口。它允许你通过软件控制数字信号,从而实现各种硬件设备的交互,如LED、按钮、传感器、马达等。 每个GPIO引脚…...
快速解决Spring Boot跨域困扰:使用CORS实现无缝跨域支持
跨域问题 什么是跨域? 跨域(Cross-Origin Issue)的存在是因为浏览器的安全限制,它防止恶意网站利用跨域请求来获取用户的敏感信息或执行恶意操作。浏览器通过实施同源策略来限制网页在不同源之间进行资源访问或交互的情况。当一…...
【【萌新的STM32学习-13之GPIO寄存器的用法】】
萌新的STM32学习-13之GPIO寄存器的用法 从外部来看我们有很多个GPIO 分为ABCDEF等等 每个GPIO都有16个引脚 每个引脚的名字是PA0到PA15 这是外部的看法 对于内部 引脚自然会有引脚的功能传入的模式 状态 频率 等…...
Android开发基础知识总结(一)初识安卓Android Studio
一.基础理论知识 1.Linux相当于是地基。 MIUI,EMUI等操作系统,是基于安卓的改版——且裁掉了一部分Google的服务。 (鸿蒙虽然是改版,但和安卓的架构基本上一致) 2.Kotlin和Java都是JVM语言,必须先复习好…...
常见的网络设备有哪些?分别有什么作用?
个人主页:insist--个人主页 本文专栏:网络基础——带你走进网络世界 本专栏会持续更新网络基础知识,希望大家多多支持,让我们一起探索这个神奇而广阔的网络世界。 目录 一、网络设备的概述 二、常见的网络设备 1、…...
斗鱼财报盈利的背后:左手艳舞、右手擦边
本月14日,直播平台斗鱼发布了其第二季度财报,面对“看起来还不错的数据”,其对外着重强调了“连续两个季度实现盈利”,并称“斗鱼收入结构持续优化”“斗鱼盈利能力提升”“斗鱼稳健增长可期”“督导提升了内容审核能力”。 财报…...
布隆过滤器
思考一个问题:如果我想判断一个元素是否存在某个集合里面怎么做? 一般的解决方案是先把所有元素保存起来,然后通过循环比较来确定。 但是如果我们有几千万甚至上亿的数据的时候},虽然可以通过不同的数据结构来优化数据…...
element-ui中二次封装一个带select的form组件
带select的form组件 样式 代码 <template><el-form-item label"是否有" class"append" prop"tag"><el-form-itemprop"isShare"><el-select v-model"query.tag"><el-option v-for"(item, …...
07.利用Redis实现点赞排行榜功能
学习目标: 提示:学习如何利用Redisson实现点赞排行榜功能,按照时间顺序 当用户给某一篇文章点赞后,会再数据库中存储一条数据,并且在Redis中存储一条数据为当前博客的点赞用户标识,来区分哪个用户对文章进…...
【前端vue升级】vue2+js+elementUI升级为vue3+ts+elementUI plus
一、工具的选择 近期想将vuejselementUI的项目升级为vue3tselementUI plus,以获得更好的开发体验,并且vue3也显著提高了性能,所以在此记录一下升级的过程对于一个正在使用的项目手工替换肯定不是个可实现的解决方案,更优方案是基于…...
多维时序 | MATLAB实现SCNGO-BiLSTM-Attention多变量时间序列预测
多维时序 | MATLAB实现SCNGO-BiLSTM-Attention多变量时间序列预测 目录 多维时序 | MATLAB实现SCNGO-BiLSTM-Attention多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | MATLAB实现SCNGO-BiLSTM-Attention多变量时间序列预测。 模型描…...
go-test
单元测试 基本用法 Go语言测试 常用reflect.DeepEqual()对slice进行比较 跳过某些测试用例 func TestTimeConsuming(t *testing.T) {if testing.Short() {t.Skip("short模式下会跳过该测试用例")}... }当执行go test -short时就不会执行上面的TestTimeConsuming测…...
假设你新换了电脑,如何不用U盘的情况下实现软件文件转移?
要将笔记本和台式机连接到同一个局域网,并实现文件共享或使用文件传输协议进行文件传输,您可以按照以下步骤操作: 设置局域网连接共享文件夹使用文件传输协议 Step 1: 设置局域网连接 确保笔记本和台式机连接到同一个局域网。有几种常见的…...
聊聊 Docker
聊聊 Docker Docker 是什么? 定义 Docker 是一款 开源的应用容器引擎。 简单来说,就是 以容器虚拟化技术为基础的软件。可以把应用程序和所依赖的包一起打包到一个可移植的镜像中,发布到 Linux 或者 Windows 上运行。(代码 运…...
运行软件mfc140u.dll丢失怎么办?mfc140u.dll的三个修复方法
最近我在使用一款软件时遇到了一个问题,提示缺少mfc140u.dll文件。。这个文件是我在使用某个应用程序时所需要的,但是由于某种原因,它变得无法正常使用了。经过一番搜索和了解,我了解到mfc140u.dll是Microsoft Visual Studio 2015…...
神经网络基础-神经网络补充概念-54-softmax回归
概念 Softmax回归(Softmax Regression)是一种用于多分类任务的机器学习算法,特别是在神经网络中常用于输出层来进行分类。它是Logistic回归在多分类问题上的推广。 原理 Softmax回归的主要思想是将原始的线性分数(得分…...
米尔瑞萨RZ/G2L开发板-02 ffmpeg的使用和RTMP直播
最近不知道是不是熬夜太多,然后记忆力减退了? 因为板子回来以后我就迫不及待的试了一下板子,然后发现板子有SSH,但是并没有ffmpeg,最近总是在玩,然后今天说是把板子还原一下哇,然后把官方的固件…...
基于swing的在线考试系统java jsp线上试卷问答mysql源代码
本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 基于swing的在线考试系统 系统有2权限:管…...
C# 读取pcd点云文件数据
pcd文件有ascii 和二进制格式,ascii可以直接记事本打开,C#可以一行行读。但二进制格式的打开是乱码,如果尝试程序中读取,对比下看了数据也对不上。 这里可以使用pcl里的函数来读取pcd,无论二进制或ascii都可以正确读取…...
.NET CORE Api 上传excel解析并生成错误excel下载
写在前面的话: 【对外承接app API开发、网站建设、系统开发,有偿提供帮助,联系方式于文章最下方 】 因业务调整,不再需要生成错误无excel下载,所以先保存代码,回头再重新编辑 #region Excel校验部分if (f…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...
人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent
安全大模型训练计划:基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标:为安全大模型创建高质量、去偏、符合伦理的训练数据集,涵盖安全相关任务(如有害内容检测、隐私保护、道德推理等)。 1.1 数据收集 描…...
永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器
一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...
渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...
智能职业发展系统:AI驱动的职业规划平台技术解析
智能职业发展系统:AI驱动的职业规划平台技术解析 引言:数字时代的职业革命 在当今瞬息万变的就业市场中,传统的职业规划方法已无法满足个人和企业的需求。据统计,全球每年有超过2亿人面临职业转型困境,而企业也因此遭…...
在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例
目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码:冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...
