linux 对/sys/class/gpio 的读写


参考大佬

http://blog.sina.com.cn/s/articlelist_2767371645_0_3.html

一 介绍:

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;
      }


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM