參考大佬
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;
}
