嵌入式Linux中GPIO设置的一些基本指令和步骤

news2024/10/1 5:30:23

一、GPIO的介绍

  嵌入式Linux中的GPIO(General Purpose Input/Output,通用输入/输出)是一种常用的接口,允许开发者直接控制硬件设备的某些引脚,进行诸如LED控制、传感器读取、设备状态监测等任务。

二、设置步骤和示例

  在嵌入式Linux系统中,GPIO的设置和管理通常涉及以下几个方面:

  • GPIO的导出和配置:首先,需要将GPIO引脚导出到用户空间,以便用户空间的程序可以访问和控制它。这通常通过 /sys/class/gpio接口完成。例如,要将GPIO引脚79导出,可以使用以下命令:
echo 79> /sys/class/gpio/export

导出后,可以使用以下命令查看已导出的GPIO列表:

ls /sys/class/gpio
  • 设置GPIO的方向:GPIO引脚可以配置为输入或输出模式。对于输出引脚,可以设置其电平(高电平或低电平)。对于输入引脚,可以读取其电平状态。使用以下命令可以设置GPIO79为输出模式:
echo out > /sys/class/gpio/gpio79/direction
  • 设置和读取GPIO的电平:
    对于输出引脚,可以使用以下命令设置其电平:
echo 1 > /sys/class/gpio/gpio79/value  # 设置GPIO79为高电平  
echo 0 > /sys/class/gpio/gpio79/value  # 设置GPIO79为低电平

对于输入引脚,可以使用以下命令读取其电平:

cat /sys/class/gpio/gpio79/value  # 读取GPIO79的电平

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

#导出GPIO到用户空间
echo 8 > /sys/class/gpio/export
#查看目录的变化,增加了gpio8目录
ls /sys/class/gpio/
#把gpio8从用户空间中取消导出
echo 8 > /sys/class/gpio/unexport
#查看目录变化,gpio8目录消失了
ls /sys/class/gpio/

export文件:导出GPIO,该文件只能写不能读,用户向该文件写 入GPIO的编号N可以向内核申请将该编号的GPIO导出到用户空间,若内核本 身没有把该GPIO用于其它功能,那么在/sys/class/gpio目录下会新增一 个对应编号的gpioN目录,如导出了gpio8。

unexport文件:export的相反操作,取消导出GPIO,该文件同样只能写不能读。如往unexport写入8后,gpio8目录消失了。
在这里插入图片描述
查看GPIO8文件下的内容

ls -lH /sys/class/gpio/gpio8
或者
cd /sys/class/gpio/gpio8
ls 

在这里插入图片描述
在这里插入图片描述

常用的属性文件介绍如下:

  1. direction文件:表示GPIO引脚的方向,它的可取值如下:

    • in:引脚为输入模式。
    • out:引脚为输出模式,且默认输出电平为低。
    • low:引脚为输出模式,且默认输出电平为低。
    • high:引脚为输出模式,且默认输出电平为高。
  2. value文件:GPIO的电平,1表示高电平,0表示低电平。当GPIO被配置为输出模式, 那么修改该文件的内容可以改变引脚的电平。也可配置为输入模式,检测电平的高低。

  3. edge文件:用于配置GPIO的中断触发方式,当GPIO被配置为中断时,可以通过系统 的poll函数监听。edge文件可取如下的属性值:

    • none:没有使用中断模式。
    • rising:表示引脚为中断输入模式,上升沿触发。
    • falling:表示引脚为中断输入模式,下降沿触发。
    • both:表示引脚为中断输入模式,边沿触发。

三、其它

引脚值计算公式:

index = GPIOn_IOx = (n-1)*32 + x

A为1,B为2,C为3…
比如 :
PB15的引脚值为
index=(2-1)32+15=47
PE12的引脚值为
index=32
(5-1)+12 =140

  编写GPIO驱动程序:对于更复杂的GPIO控制需求,可能需要编写GPIO驱动程序。驱动程序通常包括GPIO的初始化、配置、读取和设置等操作。 驱动程序编写完成后,需要将其编译为内核模块,并使用insmod命令加载到内核中。
  请注意,具体的GPIO编号和操作方法可能因不同的硬件平台和Linux版本而有所差异。因此,在实际操作中,请参考相关硬件和Linux版本的文档和参考资料。
  以上是关于嵌入式Linux中GPIO设置的一些基本指令和步骤。通过学习和实践这些指令和步骤,开发者可以更好地掌握GPIO的控制方法,实现各种硬件设备的控制和管理。

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

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

相关文章

08 yum和git

什么是软件包 安装软件,一个通常的办法就是下载程序的源代码进行编译。这种太麻烦,于是一些人把常用软件编译好,做成软件包放在服务器上,通过包管理器可以很方便的得到这个软件包安装,就好比手机上的应用商店 yum&am…

LeetCode 刷题 [C++] 第121题.买卖股票的最佳时机

题目描述 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的…

基于springboot+vue的中国陕西民俗网

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

ASUS华硕ROG冰刃6双屏GX650RX工厂模式原厂Windows11系统 带MyASUS WinRE恢复重置功能 恢复出厂开箱状态

华硕冰刃6笔记本电脑oem预装Win11系统,适用型号: NR2202RX_GX650RX、NR2202RW_GX650RW NR2202RM_GX650RM、NR2202RS_GX650RS 链接:https://pan.baidu.com/s/1nnGlmnqJ_YZIOX7RQXjhuQ?pwd79hm 提取码:79hm 原装出厂系统带有A…

大数据技术(一)

大数据技术概述 大数据技术层面及其功能 数据采集与预处理 利用ETL(extract-transform-load)工具将分布的、异构数据源中的数据,如关系数据、平面数据文件等,抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中&…

【leetcode】用栈实现队列

大家好,我是苏貝,本篇博客带大家刷题,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 点击查看题目 思路: 在做此题之前,我们先要实现栈,这在上个博客中已经写过&#xf…

Doris【数据模型】

一、数据模型简介 在 Doris 中,数据以表(Table)的形式进行逻辑上的描述。 一张表包括行(Row)和列(Column)。Row 即用户的一行数据。Column 用于描述一行数据中不同的字段。 Column 可以分为两…

“视频剪辑新风尚:批量操作,背景虚化,聚焦视频主题!“

在数字时代,视频成为了最直观、最生动的信息表达方式。但是,面对大量的视频素材,如何快速有效地进行剪辑,突出视频主题,成为了许多创作者和编辑者的难题。 首先,我们要打开【视频剪辑高手】进入主页面之后…

【研发日记】Matlab/Simulink技能解锁(四)——在Simulink Debugger窗口调试

前言 见《【研发日记】Matlab/Simulink技能解锁(一)——在Simulink编辑窗口Debug》 见《【研发日记】Matlab/Simulink技能解锁(二)——在Function编辑窗口Debug》 见《【研发日记】Matlab/Simulink技能解锁(三)——在Stateflow编辑窗口Debug》 Block断点 前文在Simulink编辑窗口…

【蓝桥杯】错误票据

今天是2024年3月1号,蓝桥杯比赛还有一个月的时间,虽说自己不指望拿奖吧,但是还是有些莫i名的焦虑,这道题目都做不出来,感觉自己真的有点菜啊!但是还好啦,我觉得是因为我没有题感,慢慢…

(六)Dropout抑制过拟合与超参数的选择--九五小庞

过拟合 即模型在训练集上表现的很好,但是在测试集上效果却很差。也就是说,在已知的数据集合中非常好,再添加一些新数据进来效果就会差很多 欠拟合 即模型在训练集上表现的效果差,没有充分利用数据,预测准确率很低&a…

对缓冲区的初步认识——制作进度条小程序

对缓冲区的初步认识--进度条小程序 前言预备知识回车和换行的区别输出缓冲区/n 有清空输出缓冲区的作用stdout是什么?验证一切皆文件为什么是\n行刷新? 倒计时程序原理 代码实现为什么这里要强制刷新?没有会怎样?为什么是输出的是…

ABAP - SALV教程07 斑马纹显示和SALV标题

SALV设置斑马纹和标题 METHOD set_layout.DATA: lo_display TYPE REF TO cl_salv_display_settings. * 取得显示对象lo_display co_alv->get_display_settings( ).* 设置ZEBRA显示lo_display->set_striped_pattern( X ). * 设置Titlelo_display->set_list_he…

内存空间担保机制

什么是内存空间担保机制? 内存空间担保机制(Memory Space Guarantee)是垃圾回收(Garbage Collection)算法中的一种策略。它用于在进行垃圾回收过程(如Minor GC或Full GC)时,确保老年…

Linux创建,删除用户

Linux创建,删除用户 怎么登陆xshell创建用户设置密码 删除用户 我找了好久市面上的资料,我觉得写得不好,所以自己写一个 怎么登陆xshell ssh用户名ip地址 创建用户 adduser 用户名 设置密码 passwd 用户名 删除用户 userdel -r 用户…

【小尘送书-第十一期】编程的基石,开发的核心:《算法秘籍》

大家好,我是小尘,欢迎你的关注!大家可以一起交流学习!欢迎大家在CSDN后台私信我!一起讨论学习,讨论如何找到满意的工作! 👨‍💻博主主页:小尘要自信 &#x1…

利用小蜜蜂AI智能问答ChatGPT+AI高清绘图生成图文故事案例

利用小蜜蜂AI智能问答ChatGPTAI高清绘图生成图文故事案例 这段时间利用小蜜蜂AI网站做了一些编程、绘图以及数据分析方面的案例。再过几个月,我的大孙子就要出生了。我要用小蜜蜂AI智能问答和AI高清绘图为大孙子生成一个1-9的数字图文故事。 小蜜蜂AI网站可以扫如…

基于springboot+vue的高校教师科研管理系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

pdf如何压缩文件大小?pdf文件在线压缩方法介绍

在日常工作中,我们经常使用PDF文件进行传输和保存,然而,有时候我们会遇到过大的PDF文件,这不仅会导致传输困难,还会占用过多的设备空间,因此,我们需要对PDF压缩一下以便更轻松地传输和保存&…

基于springboot+vue的电商平台

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…