[gpio]Linux GPIO简单使用方式2-sysfs
2017-04-09 16:50
381 查看
转自:http://blog.csdn.net/cjyusha/article/details/50418862
在Linux嵌入式设备开发中,对GPIO的操作是最常用的,在一般的情况下,一般都有对应的驱动,应用程序打开对应的驱动,然后通过ioctl函数就可以对其进行操作。在linux中,其实有一个通用的GPIO驱动,应用通过调用文件的形式来进行读写操作,这个文件是/sys/class/gpio,本文就简单的来讲解一下通用GPIO接口的读写。
- set_gpio64_high
- set_io_value_high
在Linux嵌入式设备开发中,对GPIO的操作是最常用的,在一般的情况下,一般都有对应的驱动,应用程序打开对应的驱动,然后通过ioctl函数就可以对其进行操作。在linux中,其实有一个通用的GPIO驱动,应用通过调用文件的形式来进行读写操作,这个文件是/sys/class/gpio,本文就简单的来讲解一下通用GPIO接口的读写。
一、 以echo的形式调用system函数进行操作,这种形式编程比较简单,结构比较清晰,如下:
- set_gpio64_lowvoid 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_lowint 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; }
- set_io_value_high
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; }
相关文章推荐
- [gpio]Linux GPIO简单使用方式1-sysfs
- Linux简单设备驱动(1):使用IO内存操作GPIO--LED
- Linux 系统使用 iso 镜像文件或光盘配置本地YUM 源的最简单方式
- linux下配置squid 服务器,最简单使用方式
- [Linux应用]通过sysfs在用户空间使用GPIO
- [Linux应用]通过sysfs在用户空间使用GPIO
- Linux下用文件IO的方式操作GPIO(/sys/class/gpio)简单易操作
- linux下配置squid 服务器,最简单使用方式
- [Linux应用]通过sysfs在用户空间使用GPIO中断
- 【ARM&Linux】消息队列的简单使用
- linux下使用gpiolib操作/sys/class/gpio来控制gpio
- linux下使用Stunnel配置与使用方式一例
- SCP命令的简单使用及在两台LINUX机器传输文件不用输密码的设置
- Window/.Net程序员如何用最简单的方式掌握Linux的本质
- golang有用的库及工具 之 fasthttp客户端 最通用最有效最简单使用方式
- [linux]segvcatch简单使用
- linux下 使用vim方式来使得 文件去掉最后一个 |的方法
- linux使用ln命令创建链接,如windows的快捷方式功能
- linux简单介绍,helloworld,vi使用,用户管理
- 关于linux - Centos 7 系统下使用PXE网络的方式(pxe+dhcpd+tftp+httpd)安装操作系统