[gpio]Linux GPIO简单使用方式2-sysfs
转自:http://blog.csdn.net/cjyusha/article/details/50418862
在Linux嵌入式设备开发中,对GPIO的操作是最常用的,在一般的情况下,一般都有对应的驱动,应用程序打开对应的驱动,然后通过ioctl函数就可以对其进行操作。在linux中,其实有一个通用的GPIO驱动,应用通过调用文件的形式来进行读写操作,这个文件是/sys/class/gpio,本文就简单的来讲解一下通用GPIO接口的读写。
一、 以echo的形式调用system函数进行操作,这种形式编程比较简单,结构比较清晰,如下:
- set_gpio64_low
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");
}
- set_gpio64_high
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");
}
二、 通过文件的形式来调用
- set_io_value_low
int set_io_value_low(int gpio)
{
FILE *fp;
char buffer[];
int value;
char s[]="";
char s1[]="";
if ((fp = fopen("/sys/class/gpio/export", "w")) == NULL)
{
printf("Cannot open export file.\n");
return -;
}
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 -;
}
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 -;
}
strcpy(buffer,"");
fwrite(buffer, sizeof(char), sizeof(buffer) - , fp);
fclose(fp);
return ; }
- set_io_value_high
int set_io_value_high(int gpio)
{
FILE *fp;
char buffer[];
int value;
char s[]="";
char s1[]="";
if ((fp = fopen("/sys/class/gpio/export", "w")) == NULL)
{
printf("Cannot open export file.\n");
return -;
}
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 -;
}
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 -;
}
strcpy(buffer,"");
fwrite(buffer, sizeof(char), sizeof(buffer) - , fp);
fclose(fp);
return ;
}
[gpio]Linux GPIO简单使用方式2-sysfs的更多相关文章
- [gpio]Linux GPIO简单使用方式1-sysfs
转自:http://blog.csdn.net/drivermonkey/article/details/20132241 1.1.References 1.2.GPIO Usage from a L ...
- linux磁盘简单分区方式
1:分区 fdisk /dev/sdb 2:格式化 mkfs -t ext3 /dev/sdb1 或者 mke2fs -t ext4 /dev/sdb2 3:挂载 mount /dev/sdb1 ...
- Linux GPIO子系统
一 概述 Linux内核中gpio是最简单,最常用的资源(和 interrupt ,dma,timer一样)驱动程序,应用程序都能够通过相应的接口使用gpio,gpio使用0-MAX_INT之间的整数 ...
- Linux GPIO 注册和应用
Linux GPIO 注册和应用 Linux Kernel, GPIO, ARM 于Linux kernel代码.经常使用 GPIO 作为一个特殊的信号,如芯片片选信号. GPIO 功能应用,我们经常 ...
- Linux GPIO控制方法
Linux GPIO控制方法 kernel version 4.4.12 在文件系统层: 1. 进入 /sys/class/gpio/ 目录 2. 假设你想控制的GPIO0_29,步骤如下: 1. e ...
- Linux GPIO键盘驱动开发记录_OMAPL138
Linux GPIO键盘驱动开发记录_OMAPL138 Linux基本配置完毕了,这几天开始着手Linux驱动的开发,从一个最简单的键盘驱动开始,逐步的了解开发驱动的过程有哪些.看了一下Linux3. ...
- Linux内核调试的方式以及工具集锦【转】
转自:https://blog.csdn.net/gatieme/article/details/68948080 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原 ...
- Linux内核调试的方式以及工具集锦
原文:https://blog.csdn.net/gatieme/article/details/68948080 CSDN GitHubLinux内核调试的方式以及工具集锦 LDD-LinuxDev ...
- Linux的简单介绍和常用命令的介绍
Linux的简单介绍和常用命令的介绍 本说明以Ubuntu系统为例 Ubuntu系统的安装自行百度,或者参考http://www.cnblogs.com/CoderJYF/p/6091068.html ...
随机推荐
- 自用封装javascript函数
(function(){ var JHRZ_IMG_Arr = JHRZ_IMG_Arr || {}; JHRZ_IMG_Arr.loading = ["/static/images/loa ...
- 【pyhon】nvshens图片批量下载爬虫
代码: # nvshens图片批量下载爬虫 from bs4 import BeautifulSoup import requests import time import urllib.reques ...
- C++标准库简介
C++标准库的所有头文件都没有扩展名.C++标准库的内容总共在50个标准头文件中定义,其中18个提供了C库的功能. <cname>形式的标准头文件[ <complex>例外]其 ...
- 免费资源:Bootstrap开发的创意模板
在线演示 免费下载 一套免费的Bootstrap网站模板,使用现代的布局并支持响应式.拥有非常棒的CSS3动画效果及其滚动效果.
- hdu 5247 找连续数(思维)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5247 找连续数 Time Limit: 2000/1000 MS (Java/Others) M ...
- 论文笔记《Feedforward semantic segmentation with zoom-out features》
[论文信息] <Feedforward semantic segmentation with zoom-out features> CVPR 2015 superpixel-level,f ...
- Android之GPS定位详解
一.LocationManager LocationMangager,位置管理器.要想操作定位相关设备,必须先定义个LocationManager.我们可以通过如下代码创建LocationManger ...
- windows程序崩溃生成dump文件
第一种: 通过任务管理器:这种适用在程序挂了(crash)的时候进程还未退出,比如我运行程序,出现了下面的错: 此时打开任务管理器,右击相应进程,点击"Create Dump File“: ...
- js 函数节流throttle 函数去抖debounce
1.函数节流throttle 通俗解释: 假设你正在乘电梯上楼,当电梯门关闭之前发现有人也要乘电梯,礼貌起见,你会按下开门开关,然后等他进电梯: 但是,你是个没耐心的人,你最多只会等待电梯停留一分钟: ...
- jquery remove()不兼容问题解决方案
jquery remove()不兼容问题解决方案 CreationTime--2018年7月27日10点19分 Author:Marydon 1.情景展示 点击关闭,将这个div移除掉 源码展示 ...