linux中通用GPIO接口的操作
来源:互联网 发布:用友软件使用方法 编辑:程序博客网 时间:2024/04/23 17:10
在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;}
0 1
- linux中通用GPIO接口的操作
- linux中通用GPIO接口的操作
- linux中通用GPIO接口的操作
- linux中通用GPIO接口的操作--文件IO方式
- Linux GPIO - gpio.c(GPIO各个接口的实现)
- ARM开发之用linux通用GPIO接口宏函数操作IO口-----LED字符驱动为例
- linux通用GPIO驱动
- Linux 驱动中GPIO接口解析
- 嵌入式Linux系统中对GPIO操作的方法总结
- Linux内核中GPIO操作函数的使用方法
- linux的用户层GPIO接口管理
- Linux GPIO驱动 - GPIO通用层
- linux gpio接口
- linux gpio接口
- linux gpio接口 .
- linux gpio接口 .
- linux gpio接口
- linux gpio接口
- POJ 1797 Heavy Transportation(最大生成树-Prim)
- 使用rsync同步数据(by quqi99)
- nginx 安装
- Address already in use: JVM_Bind:8080 解决办法
- Problem F: 冒泡排序法排序
- linux中通用GPIO接口的操作
- 微信"锐捷查询"的实现.md
- C++11杂记
- JSTL <c:forTokens>用法
- Android动画_PropertyValuesHolder
- 黑马52期学后总结笔记(二)
- 使用Tomcat——表单中的中文服务端接收到为乱码
- mysql个人笔记
- Problem G: 求二维数组中的鞍点【数组】