linux中通用GPIO接口的操作
在linux嵌入式设备开发中,对GPIO的操作是最常用的,在一般的情况下,一般都有对应的驱动,应用程序打开对应的驱动,然后通过ioctl函数就可以对其进行操作。在linux中,其实有一个通用的GPIO驱动,应用通过调用文件的形式来进行读写操作,这个文件是/sys/class/gpio,本文就简单的来讲解一下通用GPIO接口的读写。
一、 以echo的形式调用system函数进行操作,这种形式编程比较简单,结构比较清晰,如下:
- void set_gpio64_low(void)
- {
- system("echo 64 > /sys/class/gpio/export");
- system("echo out > /sys/class/gpio/gpio64/direction");
- system("echo 0 > /sys/class/gpio/gpio64/value");
- }
只要完成三个步骤,就可以了
- void set_gpio64_high(void)
- {
- system("echo 64 > /sys/class/gpio/export");
- system("echo out > /sys/class/gpio/gpio64/direction");
- system("echo 1 > /sys/class/gpio/gpio64/value");
- }
二、 通过文件的形式来调用
- int set_io_value_high(int gpio)
- {
- FILE *fp;
- char buffer[10];
- int value;
- char s[50]="";
- char s1[50]="";
- if ((fp = fopen("/sys/class/gpio/export", "w")) == NULL)
- {
- printf("Cannot open export file.\n");
- return -1;
- }
- fprintf(fp, "%d", gpio);
- fclose(fp);
- sprintf(s,"/sys/class/gpio/gpio%d/direction",gpio);
- if ((fp = fopen(s, "rb+")) == NULL)
- {
- printf("Cannot open %s.\n",s);
- return -1;
- }
- fprintf(fp, "out");
- fclose(fp);
- sprintf(s1,"/sys/class/gpio/gpio%d/value",gpio);
- if ((fp = fopen(s1, "rb+")) == NULL)
- {
- printf("Cannot open %s.\n",s1);
- return -1;
- }
- strcpy(buffer,"1");
- fwrite(buffer, sizeof(char), sizeof(buffer) - 1, fp);
- fclose(fp);
- return 1;
- }
- int set_io_value_low(int gpio)
- {
- FILE *fp;
- char buffer[10];
- int value;
- char s[50]="";
- char s1[50]="";
- if ((fp = fopen("/sys/class/gpio/export", "w")) == NULL)
- {
- printf("Cannot open export file.\n");
- return -1;
- }
- fprintf(fp, "%d", gpio);
- fclose(fp);
- sprintf(s,"/sys/class/gpio/gpio%d/direction",gpio);
- if ((fp = fopen(s, "rb+")) == NULL)
- {
- printf("Cannot open %s.\n",s);
- return -1;
- }
- fprintf(fp, "out");
- fclose(fp);
- sprintf(s1,"/sys/class/gpio/gpio%d/value",gpio);
- if ((fp = fopen(s1, "rb+")) == NULL)
- {
- printf("Cannot open %s.\n",s1);
- return -1;
- }
- strcpy(buffer,"0");
- fwrite(buffer, sizeof(char), sizeof(buffer) - 1, fp);
- fclose(fp);
- return 1;
- }
linux中通用GPIO接口的操作相关推荐
- 关于Linux中的apt-get的相关操作及原理
关于Linux中的apt-get的相关操作及原理 Linux下的apt-get指令与相关文件夹 apt-get是linux下的一种简便的安装和更新软件的方法,在装软件的时候常用的命令就是 sudo a ...
- 黄东升: Linux中形形色色的接口API和ABI
今天我们来看看Linux中形形色色的接口 前言 如果将内核比作一座工厂,那么Linux中众多的接口就是通往这个巨大工厂的高速公路.这条路要足够坚固,禁得起各种破坏(Robust).要能跑得了运货的卡车 ...
- 在 Linux 中使用ImageMagick命令行操作图像文件
使用 convert 命令,可以无需打开图像编辑器进行修改图像文件.convert命令包含在ImageMagick安装包里. Centos8安装ImageMagick ImageMagick 可以安装 ...
- linux中fg jobs ctrl-z bg操作和kill-15、kill-9杀死进程
Linux 提供了 fg 和 bg 命令,让我们轻松调度正在运行的任务. 假设你发现前台运行的一个程序需要很长的时间,但是需要干其他的事情,你就可以用 Ctrl-Z ,挂起这个程序,然后可以看到系统提 ...
- Linux里命令卸载mysql,linux中mysql完整卸载命令操作
yum方式安装的mysql 1.yum remove mysql mysql-server mysql-libs compat-mysql51 2.rm -rf /var/lib/mysql 3.rm ...
- linux中iptables对防火墙的操作
Iptables教程 1. iptables防火墙简介 Iptables也叫netfilter是Linux下自带的一款免费且优秀的基于包过滤的防火墙工具,它的功能十分强大,使用非常灵活,可以对流入.流 ...
- linux 应用层gpio中断_如何在嵌入式Linux中检测GPIO线路上的中断?
在pandaboard OMAP4中,GPIO_39上每隔10ms产生一次中断.我已在Linux驱动程序代码中为此注册了处理程序,但由于未检测到中断,因此未处理该处理程序. 我确保在硬件级别(通过探测 ...
- SONiC中的SAI接口的操作指令以及相应的解释
SONiC是一个基于开源软件的网络操作系统,它使用SAI(Switch Abstraction Interface)接口来与交换机芯片进行通信.下面是一些常见的SAI接口操作指令及其解释: creat ...
- linux中创建gpio节点
转自:http://blog.chinaunix.net/uid-29165999-id-4296162.html #define GPIO_MAJOR 230 // major device NO. ...
最新文章
- BATJ 常考的 21 条 Linux 命令
- 使用Redis来实现LBS的应用
- Android_微信_设置
- css样式之 direction
- hdmi光端机运用于多媒体信息发布系统案例介绍
- visual设计的界面发布到iis上显示不一样_Material Design暗夜模式设计指南
- mean python_Python mean()方法的详细指南
- BZOJ 2763 飞行线路
- 群晖3617可以有几个网卡_Synology 群晖 DS1621+ 六盘位NAS 开箱拆解评测
- 图像函数 imagecreatetruecolor()和imagecreate()的异同点
- C#中的常量、类型推断和作用域
- 企业微信api发送告警信息
- 《CryENGINE+Game+Programming+with+C++,+C#,+and+Lua》第七章
- Linux中uuid是什么?UUID由几部分组成?
- Java实战之管家婆记账系统(8)——添加账目界面及功能实现
- 一个电脑接两个显示器(win10)
- scandir 介绍
- 【SAP Abap】SAP增强开发总结
- 热点的ap频段哪个快_AP频段2.4和5.0哪个好?有什么区别?
- java打包exe实例(使用javapackager)
热门文章
- Linux/CentOS下的CST和UTC时间的区别以及不一致的解决方法
- HAProxy安装与配置(一)
- hibernate映射配置文件说明
- 复旦的NLP——fudanNLP
- G2 可视化引擎-统计图表
- matlab中使用libsvm工具箱训练的svm分类器model保存
- 计算机怎么弹出专业团队,2018年专业技术人员继续教育答案92分
- Javascript第六章基本数据类型和引用数据类型第三课
- 从码农到架构师,如何成长为技术领导者?
- 关于java构造方法的描述_在JAVA语言中,下面关于构造函数描述正确的是()