linux 对/sys/class/gpio 的读写
(2013-05-09 22:41:03)| 标签: it | 分类: 与Linux驱动相关的一些 | 
GPIO的配置文件在/sys/class/gpio目录下,控制程序可以分为四个步骤:
- 
配置GPIO:在/sys/class/gpio目录下可以看到文件export,调用该文件以实现配置。该文件对所有GPIO编号,从0开始。GPIOn_x的编号为32*n+x,例如此处用的GPIO1_6的编号为32*1+6=38。在终端输入:# echo "38" > /sys/class/gpio/export,在此回到目录/sys/class/gpio下,可以看到产生了一个新的目录./gpio38,里面包含了该IO口的输入输出设置等配置文件。注意:export文件只有root写权限,执行上述命令或者以后用C编写的可执行文件要以ROOT身份执行。
- 
设置GPIO的方向(输入输出):在终端输入:# echo "out" > /sys/class/gpio/gpio38/direction,即设置该GPIO为输出。
- 
设置GPIO的输出电平:在终端输入:#echo "1" > /sys/class/gpio/gpio38/value,即设置GPIO输出高电平,输入echo "0" > /sys/class/gpio/gpio38/value设置GPIO输出低电平。
- 
关闭GPIO:在终端输入:#echo "38" > /sys/class/gpio/unexport,即删除GPIO配置文件,可以看到目录gpio38已经被删除。
 
 二 下面是C语言编写的GPIO控制例程,实现LED的每隔一秒闪烁一次。
 
 #include
 #include
 #include
 #include
 int main(void)
 {
 FILE *p=NULL; 
 int i=0; 
 p = fopen("/sys/class/gpio/export","w"); 
 fprintf(p,"%d",38); 
 fclose(p); 
 p = fopen("/sys/class/gpio/gpio38/direction","w"); 
 fprintf(p,"out"); 
 fclose(p); 
 for(i=0;i<100;i++) 
 { 
 p = fopen("/sys/class/gpio/gpio38/value","w"); 
 fprintf(p,"%d",1); 
 sleep(1); 
 fclose(p); 
 p = fopen("/sys/class/gpio/gpio38/value","w"); 
 fprintf(p,"%d",0); 
 sleep(1); 
 fclose(p); 
 } 
 p = fopen("/sys/class/gpio/unexport","w"); 
 fprintf(p,"%d",38); 
 fclose(p); 
 return 0; 
 }
前一篇:介绍Wi-Fi的一些网页(推荐)
										后一篇:如何查看二进制文件和库的依赖
					
 加载中…
加载中…