【应用开发二】GPIO操控(输出、输入、中断)

news2024/11/24 1:59:26

1 操控GPIO方式

控制目录:/sys/class/gpio
/sys/class/gpio目录下文件如下图所示:
在这里插入图片描述

1.1 gpiochipX目录

功能:当前SoC所包含的所有GPIO控制器

i.mx6ull一共包含5个GPIO控制器,分别为GPIO1~5分别对应gpiochip0gpiochip32gpiochip64gpiochip96gpiochip1285个文件夹。每个gpiochipX控制一组GPIO。随便进入一个gpiochip X目录,内容如下图所示:
在这里插入图片描述
主要关注的目录是baselabelngpio这三个属性文件,这三个属性文件均是只读,不可写

  • base:表示该控制器所管理的这组GPIO引脚中的最小编号。数值上与gpiochipX中的X值相同。
    在这里插入图片描述
  • lable:该组GPIO对应的标签,也就是名字
    在这里插入图片描述
  • ngpio:该控制器所管理的GPIO引脚数量(所以引脚编号范围是:base~base+ngpio-1)
    在这里插入图片描述

1.2 export

功能:用于将指定编号的GPIO引脚导出

GPIO 引脚在使用之前,需要将其导出,导出成功之后才能使用。将一个指定的编号N写入到export文件中,即可将对应GPIO引脚导出。export为只写文件,不能读取。文件导出之后,将在/sys/class/gpio目录下生成一个名为gpioN的文件夹用于管理、控制GPIO引脚。
在这里插入图片描述

1.3 unexport

功能:删除导出的GPIO引脚

使用完GPIO引脚之后,需要将导出的引脚删除,同样该文件为export为只写不可读文件
删除成功之后,之前生成的GPIO文件就会消失!

注:并不是所有的文件夹都可以导出成功,如果引脚在内核中被使用了,就会导出失败。

gpioX目录

功能:gpio引脚控制器

以前面生成的gpio0为例,进入到gpio0目录,该目录下的文件如下图所示:
在这里插入图片描述
主要关心文件为:active_lowdirectionedge以及value

  • direction:配置gpio引脚输入输出模式。可读可写
    表示当前gpio引脚是输入还是输出模式。
    写:配置gpio方向
    读:获取引脚方向
    读取或写入值:

      "out"  ->  输出 
      "in"  ->   输入
    
  • value:引脚值

    • 输入模式:
      “0” -> 输出低电平
      “1” -> 输出高电平
    • 输入模式:
      读取value文件获取当前引脚电平状态
  • active_low:控制极性,可读可写,默认0
    与value结合使用。

    # active_low 等于 0 时
    echo "0" > active_low
    echo "out" > direction
    echo "1" > value  #输出高
    echo "0" > value  #输出低
    
    # active_low 等于 1 时
    $ echo "1" > active_low
    $ echo "out" > direction
    $ echo "1" > value #输出低
    $ echo "0" > value #输出高
    
  • edge:中断触发模式

    "none":非中断引脚
    "rising":上升沿触发
    "falling":下降沿触发
    "both":边沿触发
    

    当引脚被设置为中断后,使用poll()函数监听引脚的电平状态变化

2 程序

GPIO

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

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

相关文章

javaSE知识点整理总结(上)

目录 一、面向对象 1. 类、对象、方法 2.面向对象三大特征 (1)封装 (2)继承 (3)多态 二、常用类 1.Object类 2.Array类 3.基本数据类型包装类 4.String类 5.StringBuffer类 6.Math类 7.Random…

韩顺平0基础学java——第32天

p638-652 Properties类 list:这个设备可以是一个流对象。 修改:如果该文件里没有Key,那即是创建,如果是有那就是修改。 继续坦克大战 防止敌人坦克重叠 满脑子都是今汐,亚达哟😭😭&#x1f6…

关于Mac mini 10G网口的问题

问题: 购入一个10G网口的Mac mini M2,将其和自己的2.5G交换机连接,使用共享屏幕进行远程操作的过程中出现了频率极高的卡顿,几乎是几秒钟卡一下,使用ping进行测试发现卡的时候就ping不通了。测试使用Mac mini的无线网和雷电转2.5G…

PSA制氮装置在化工行业的应用解析

PSA制氮装置作为一种可靠的氮气制备技术,在化工行业中发挥着越来越重要的作用。本文将详细探讨PSA制氮装置在化工行业的应用。 一、PSA制氮装置的工作原理 PSA制氮装置通过吸附剂的吸附选择性,在高压下吸附原料气中的杂质成分,如氧气、水蒸气…

微服务部署上线过程总结

目录 一、找到适合自己的部署方式 二、开始部署,先安装需要的环境 2.1 梳理一下都需要安装什么软件 2.2 配置数据库环境 2.3 配置redis 2.4 配置nacos 2.5 配置rabbitmq 2.6 配置docker环境 三、环境配置好了,开始部署后端 3.1 梳理后端都…

佛山禅城电脑城维修1台联想3650M5服务器 黄灯故障

佛山禅城一同行客户通过CSDN找到我们,经过对接,确认好服务器型号,和服务器大致故障,跟客户仔细的分析了引起故障大致的原因和解决的方式方法后,经过商务沟通,该同行考虑由我们安排工程师带配件到佛山禅城电…

光伏设计:光伏项目开发中最关键的一环

随着全球对可再生能源的需求不断增长,光伏技术作为其中的佼佼者,已经成为许多国家实现能源转型和应对气候变化的重要手段。在光伏项目的开发过程中,光伏设计作为最关键的一环,其重要性不言而喻。本文将从光伏设计的角度&#xff0…

【自然语言处理系列】手动安装和测试Spacy中en_core_web_sm模型的详细教程

摘要:本教程旨在为自然语言处理(NLP)初学者提供一个详细的指南,用于手动安装流行的NLP库Spacy及其英语模型en_core_web_sm。文章将逐步指导您如何安装Spacy库、查看其版本,确定并下载适合的en_core_web_sm模型版本&…

深度之眼(二十七)——神经网络基础知识(二)

文章目录 一、反向传播1.1 梯度下降法1.2 学习率 二、损失函数2.1 两种常见的损失函数2.2 CE(交叉熵)2.3 其他的损失函数和网址 三、权值初始化3.1 自适应标准差:自适应方法随机分布中的标准差 四、正则化方法4.1 过拟合、方差、偏差、噪声4.…

Redis主从复制、哨兵以及Cluster集群

1.Redis高可用 在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。 但是在Redis语境中,高可用的含义似乎要宽泛一些,除了保证提供…

嵌入式Linux的浮点运算能力测试

嵌入式Linux的浮点运算能力测试 今天需要对一款ARM CPU的浮点数运算能力进行测试,采用了台式机上常用的SuperPI相同的原理:计算一定小数位数的圆周率来测试硬件的浮点数计算能力和稳定性。 首先下载计算软件的源代码,可以使用下面命令&#…

阿里云常用的操作

阿里云常见的产品和服务 容器服务 可以查看容器日志、监控容器cpu和内存, 日志服务 SLS 可以查看所有服务的日志, Web应用防火墙 WAF 可以查看 QPS. 阿里云查看集群: 点击 “产品和服务” 中的 容器服务,可以查看 集群列表&…

Labview_Occurrencel(事件发生)

PS:这里遇到 一个很Low的事情: 在停止第二个while循环的时候出现了停止不了的情况。因为等待事件发生设置的超时时间为:-1。所以等事件发生后出现了条件接线端已经执行的情况,所以当下次事件发生时未能及时停止。初版的停止设置如下图&#x…

Raylib学习-鼠标检测与GPU缓冲区使用

鼠标左键点击运行绘制 #include <raylib.h>int main() {const int screenWidth 800;const int screenHeight 450;InitWindow(screenWidth, screenHeight, "test"); // 设置帧率SetTargetFPS(150); // 设置一个画布&#xff0c;可以使用GPU进行绘制RenderText…

【深度学习】单机多卡 | DataParallel将计算任务在多个 GPU 上并行执行,可以在多个 GPU 上分摊工作负载,从而加快训练速度

【深度学习】单机多卡 | DataParallel将计算任务在多个 GPU 上并行执行&#xff0c;可以在多个 GPU 上分摊工作负载&#xff0c;从而加快训练速度 写在最前面DataParallel (DP) 简介使用 DataParallel 的场景使用 DataParallel 的基本步骤 代码部分train.py简单的代码示例代码解…

ffmpeg使用png编码器把rgb24编码为png图像

version #define LIBAVUTIL_VERSION_MAJOR 58 #define LIBAVUTIL_VERSION_MINOR 12 #define LIBAVUTIL_VERSION_MICRO 100 note 不使用AVOutputFormat code void CFfmpegOps::EncodeRGB24ToPNG(const char *infile, const char *width_str, const char *height_str, c…

什么是ArchiMate?有优缺点和运用场景?

一、什么是ArchiMate? ArchiMate是一种由The Open Group发布的企业级标准&#xff0c;它是一种整合多种架构的可视化业务分析模型语言&#xff0c;也属于架构描述语言&#xff08;ADL&#xff09;。ArchiMate主要从业务、应用和技术三个层次&#xff08;Layer&#xff09;&…

基于MATLAB对线阵天线进行道尔夫—切比雪夫加权

相控阵天线——基于MATLAB对线阵进行道尔夫—切比雪夫加权 目录 前言 一、阵列天线的综合 二、道尔夫—切比雪夫综合 三、单元间距的改变对切比雪夫阵列方向图的影响 四、单元数的改变对切比雪夫阵列激励分布的影响 五、副瓣电平SLL对切比雪夫阵列激励幅度的影响 六、副…

双路视频同屏显示(拼接)-基于野火Zynq7020开发板

前情提要 米联客FDMA驱动OV5640摄像头—基于野火Zynq7020开发板 本文在此基础上&#xff0c;实现了双路视频拼接。将ov5640输出的1024600的图像数据缩放为512600&#xff0c;分两路写入ddr3&#xff0c;并且显示在1024*600的RGB屏幕中。 纯FPGA也可以按此方法实现。 总体BLOC…

MySQL高级-SQL优化-小结

文章目录 1、insert 优化2、主键优化3、order by 优化4、group by 优化5、limit 优化6、count 优化7、update 优化 1、insert 优化 insert&#xff1a;批量插入、手动控制事务、主键顺序插入 大批量插入&#xff1a;load data local infile 2、主键优化 主键长度尽量短、顺序插…