Zynq-7000、FMQL45T900的GPIO控制(四)---linux应用层配置GPIO输入控制

news2025/2/27 12:12:04

上文中详细阐述了对应原理图MIO/EMIO的编号,怎么计算获取linux下gpio的编号

 本文涉及C代码上传,下载地址

Zynq-7000、FMQL45T900的GPIO控制c语言代码资源-CSDN文库

本文详细记录一下针对获取到gpio的编号,进行配置输入模式,并进行C语言编码控制

这里以FMQL45T900为例,zynq-7000的操作流程都是一样的,只是需要操作的GPIO的管脚计算不同

主要步骤是,导出对应GPIO对应节点,配置方向、读取管脚电平

gpio_export(&test_pin_mesg);//生成gpio节点
gpio_direction(&test_pin_mesg);//设置方向
gpio_read(&test_pin_mesg, &value);//读入value,

shell指令操作

导出节点

echo 434 > /sys/class/gpio/export

查看节点

ls /sys/class/gpio/gpio434/

设置输入模式

echo in > /sys/class/gpio/gpio434/direction

查看配置模式

cat /sys/class/gpio/gpio434/direction

获取管脚电平

cat /sys/class/gpio/gpio434/value

FMQL45T900实际开发板上进行测试如下图,zynq-7000的流程也是一样,只是导出的GPIO节点不一样

使用的测试C代码如下

编译脚本文件

#!/bin/bash

CC=arm-linux-gnueabihf-gcc

${CC} gpio_test_input.c -o gpio_test_input

关键函数


static int gpio_export(struct pin_mesg* mesg){  
    char name[4];  
    int fd,len;  

    fd = open("/sys/class/gpio/export", O_WRONLY);
    if (fd < 0) {
        perror("open export");
        return(-1);
    }
    len = sprintf(name, "%d", mesg->pin);  
    dbg_info("name = gpio%s\n",name);
    if (write(fd, name, sizeof(name)) < 0) {  
        perror("write export");
        return -1;  
    }  
    close(fd);  
    return 0;  
}  
static int gpio_direction(struct pin_mesg* mesg){  
    char path[64];  
    int fd,res;
    char *dir;
    if(mesg->inout_flags & IN)
	dir = "in";
    if(mesg->inout_flags & OUT)
	dir = "out";
    sprintf(path,"/sys/class/gpio/gpio%d/direction", mesg->pin);
	
    dbg_info("direction path: %s,direction = %s\n", path, dir);  
    
    fd = open(path, O_WRONLY);
    if (fd < 0) {
		perror("open direction");
        return -1;  
    }  
	res = write(fd, dir, sizeof(dir));
    if (res <= 0) {
        perror("write direction");
        return -1;
    }
    close(fd);
    return 0;
}

输入测试结果如下图所示

C代码上传,下载地址

Zynq-7000、FMQL45T900的GPIO控制c语言代码资源-CSDN文库

用这几篇帖子深入探讨一下ZYNQ-7000/FMQL45T900的GPIO相关设计,都说GPIO最简单,这样记录下来起始还是很费劲的。可以根根据需求,直接跳转到相关的内容

Zynq-7000、FMQL45T900的GPIO控制(一)-----SDK配置GPIO普通输入输出模式,以及GPIO编号_大牛攻城狮的博客-CSDN博客

Zynq-7000、FMQL45T900的GPIO控制(二)-----SDK配置GPIO外部中断输入_大牛攻城狮的博客-CSDN博客

Zynq-7000、FMQL45T900的GPIO控制(三)---linux管脚编号计算_大牛攻城狮的博客-CSDN博客

Zynq-7000、FMQL45T900的GPIO控制(四)---linux应用层配置GPIO输入控制_大牛攻城狮的博客-CSDN博客

Zynq-7000、FMQL45T900的GPIO控制(五)---linux应用层配置GPIO输出控制_大牛攻城狮的博客-CSDN博客

Zynq-7000、FMQL45T900的GPIO控制(六)---linux驱动层配置GPIO输入输出控制_大牛攻城狮的博客-CSDN博客

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

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

相关文章

Jenkins + Gitlab 实现项目自动化构建及部署

通俗来讲就是本地项目 push 到 gitlab 后, Jenkins 能够识别到项目的更新并自动构建部署;  本文以实际操作的方式来表述详细配置过程及避开配置 Jenkins 时的坑. 默认电脑已经安装了虚拟机, 默认gitlab 上已经有了你想要部署的项目, 部署了 maven 和 jdk 并配置了环境变量!!! …

H5拉新充场app系统源码

拉新充场是一种基于移动互联网技术的营销手段&#xff0c;通常由企业或商家使用推广软件来实现。拉新是指通过各种方式引导潜在用户注册成为企业的会员或客户&#xff0c;充场则是指通过向已有用户提供优惠券、折扣等福利来鼓励其进行消费或充值。 这种营销手段可以帮助企业…

告别脚本小子系列丨JAVA安全(7)——反序列化利用链(中)

0x01 前言 距离上一次更新JAVA安全的系列文章已经过去一段时间了&#xff0c;在上一篇文章中介绍了反序列化利用链基本知识&#xff0c;并阐述了Transform链的基本知识。Transform链并不是一条完整的利用链&#xff0c;只是CommonsCollections利用链中的一部分。当然并不是所有…

对制造企业来说,该怎么样去选择合适的CRM系统?

随着互联网和数字化技术的发展&#xff0c;CRM(Customer Relationship Management&#xff0c;客户关系管理)系统正越来越被企业所重视。随之而来的是市场上各种不同类型、功能和价格的CRM系统。对制造企业而言&#xff0c;选择合适的CRM系统可以使企业更好地管理客户关系&…

01 【Sass的安装使用】

1.介绍 1.1 CSS预处理技术&#xff0c;及种类介绍 什么是css预处理技术 CSS 预处理器定义了一种新的语言&#xff0c;其基本思想是&#xff0c;用一种专门的编程语言&#xff0c;为 CSS 增加了一些编程的特性&#xff0c;将 CSS 作为目标生成文件&#xff0c;然后开发者就只…

【Makefile】笔记

正点原子Linux驱动13.4.1节&#xff0c;通用Makefile疑难点解释 聊聊 SOBJS : $(patsubst %, obj/%, $(SFILENDIR:.S.o)) 的作用 聊聊变量替换语法 在 Makefile 中&#xff0c;变量替换语法可以用来对变量的值进行修改和转换。有以下几种不同的变量替换语法&#xff1a; $(va…

二分类结局变量Logistic回归临床模型预测(一)——介绍

本节讲的是二分类结局变量的临床模型预测&#xff0c;与之前讲的Cox回归不同&#xff0c;https://lijingxian19961016.blog.csdn.net/article/details/124088364https://lijingxian19961016.blog.csdn.net/article/details/124088364https://lijingxian19961016.blog.csdn.net/…

C++类与对象this指针

文章目录 前言一&#xff0c;类1.类的引入2.类的定义3.类的作用域4.类的访问限定符及封装封装访问限定符面试题 二&#xff0c;this指针1.this指针定义2.this指针的特性 前言 从此篇往后&#xff0c;开始了C的类和对象的篇章&#xff0c;嗯就说这么多 一&#xff0c;类 1.类的…

Microsoft Forms的應用(文行版)

Microsoft Forms 功能是發起大眾投票及反饋數據的軟件。 首先要開啟Microsoft Forms 先要取得Microsoft Teams 的應用程式&#xff0c;在下載Microsoft Teams 後&#xff0c;可在最左邊的工具列選擇《應用程式》&#xff0c;然後從中開啟Microsoft Forms 就可以了。 看到Micr…

Java如何生成随机数?要不要了解一下

目录 前言一、Random类介绍二、Random类生成随机数1.生成随机数2.nextInt()方法 三、使用场景四、官方提示总结 前言 我们在学习 Java 基础时就知道可以生成随机数&#xff0c;可以为我们枯燥的学习增加那么一丢丢的乐趣。本文就来介绍 Java 随机数。 一、Random类介绍 在 Ja…

C++篇----构造函数和析构函数

在很多时候&#xff0c;当写了初始化&#xff0c;动态开辟的&#xff0c;需要写销毁函数&#xff0c;写了销毁函数之后&#xff0c;但是却忘记了调用这些函数&#xff0c;忘记调用初始化函数还好&#xff0c;编译器会报错&#xff0c;但是如果是忘记调用销毁函数&#xff0c;那…

社科院与美国杜兰大学金融管理硕士项目——选择在职读研是正确的吗

这个世界上&#xff0c;根本没有正确的选择。我们只不过要努力奋斗&#xff0c;使当初的选择变得正确。最近有咨询项目的同学总是在纠结是否要在职读研&#xff0c;在职读研是否是一条正确的路。当我们为此纠结时&#xff0c;其实只有一条路&#xff0c;那就是选择向前走。往前…

有我和另一个00后卷王后,公司老油条们破防了吗?

今年软件测试行业的内卷现象越来越明显&#xff0c;比2022年疫情那会更甚&#xff0c;越来越多的人涌入这个行业&#xff0c;而想要获得更好的待遇和机会&#xff0c;不断提升自己的技能栈成为了测试老油条不得不面对的问题。 不论是哪个级别的测试工程师&#xff0c;面试官都…

络达开发---- AB1562x左右两侧同一按钮不同功能

开发平台&#xff1a;AB1562X SDK版本&#xff1a;V1.5.2 说明&#xff1a;AB1562X支持TWS&#xff0c;左右两个的耳机的按钮在硬件上是芯片的同一个IO口&#xff1b;那如何实现左右按键对应动作&#xff21;&#xff0c;右侧按钮对应动作B呢&#xff1f;即左右两侧同一按钮的…

【创建一个网页,实现猜数字游戏】

要求如下 逻辑如下&#xff1a; 一个button按钮第二行中&#xff0c;打印“请…数字” 然后一个 输入文本框 然后一个 按钮第三行 打印 “已经猜的次数” 然后打印 猜的次数结果显示 猜大了 猜小了 猜对了 在script中 获取button按钮、输入的数据、记录count的值&#xff…

vue3——咸鱼仔

vue3——咸鱼仔 vue3——咸鱼仔P1.前言 【00:45】P2.创建项目 【02:09】P3.代码格式化 【01:37】P4.commit规范 【01:57】P5.强制commit 【02:41】P6.强制代码规范 【01:03】P7.按需导入elementplus 【02:58】P8.vue3.2新特性 【01:42】P9.初始化项目 【02:47】P10.登录页面静态…

融合开源软件治理经验,助力科技企业规避开源风险

随着开源软件的普及&#xff0c;越来越多的科技企业依赖开源软件实现业务的高速发展&#xff0c;但开源软件存在的安全合规问题&#xff0c;已成为科技企业面临的主要风险之一。 开源网安十年发展&#xff0c;通过为百度、大疆、金蝶等科技企业提供优质的软件安全产品与服务&a…

【虚幻引擎|UE4】TArray在C++中的使用

简介 TArray 类似于STL的vector&#xff0c;可以自动扩容&#xff0c;因为提供了相关操作函数&#xff0c;所以当作队列、栈、堆来使用也很方便&#xff0c;是UE4中最常用的容器类。其速度快、内存消耗小、安全性高。TArray 类型由两大属性定义&#xff1a;元素类型和可选分配…

smardaten社区版/专业版发布,查看特性与区别!

为满足个人和中小团队开发者需求&#xff0c;近期smardaten正式推出社区版与专业版&#xff0c;其中社区版为免费版本&#xff0c;支持一键下载安装。 值得一提的是&#xff0c;本次社区版和专业版&#xff0c;均支持独立私有部署&#xff0c;并进行商业应用交付。 熟悉smard…

Linux网络——Shell编程之条件语句—if 、case

Linux网络——Shell编程之条件语句—if 、case 一、条件测试1.test命令2.文件测试3.整数值比较4.逻辑测试 二、if语句1.单分支结构2.双分支结构3.多分支结构4.实践操作 三、case分支语句1.case多分支结构2.实践操作 一、条件测试 1.test命令 测试表达式是否成立&#xff0c;若…