前世五百次的回眸,却换来今世的一句,流氓。

Beagle bone GPIO编程

废话不说,beagle bone的GPIO编程思路如下:

1.配置GPIO:在/sys/class/gpio目录下,有一个export文件。调用这个文件可以实现配置。该文件对所有的从0开始。GPIOn_x的编号为32*n+x,例如此处用的GPIO1_6的编号为32*1+12=44。在终端输入:# echo "44" > /sys/class/gpio/export,在此回到目录/sys/class/gpio下,可以看到产生了一个新的目录./gpio44,里面包含了该IO口的输入输出设置等配置文件。注意:export文件只有root写权限,执行上述命令或者以后用C编写的可执行文件要以ROOT身份执行。不具有读的权限


2. 设置GPIO的方向(输入输出):在终端输入:# echo "out" > /sys/class/gpio/gpio44/direction,即设置该GPIO为输出。
3. 设置GPIO的输出电平:在终端输入:#echo "1" > /sys/class/gpio/gpio44/value,即设置GPIO输出高电平,输入echo "0" > /sys/class/gpio/gpio44/value设置GPIO输出低电平。
4. 关闭GPIO:在终端输入:#echo "4" > /sys/class/gpio/unexport,即删除GPIO配置文件,可以看到目录gpio38已经被删除。


程序1:直接当做普通文件读写


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
int main()
{
        FILE *fp=NULL;
        int i=0;
        fp=fopen("/sys/class/gpio/export","w");
        fprintf(fp,"%d",44);//44 is GPIO1_12 in P8
        fclose(fp);
        fp=fopen("/sys/class/gpio/gpio44/direction","w");
        fprintf(fp,"out");//set output model
        fclose(fp);
        while(i++<3)
        {
                fp=fopen("/sys/class/gpio/gpio44/value","w");
                fprintf(fp,"1");
                fclose(fp);
                sleep(1);
                fp=fopen("/sys/class/gpio/gpio44/value","w");
                fprintf(fp,"0");
                fclose(fp);
                sleep(1);

        }
        fp=fopen("/sys/class/gpio/unexport","w");
        fprintf(fp,"44");
        fclose(fp);
        return 1;

}



程序2:直接系统调用,不过这个速度没有第一个块,因对读快了,系统反应不过来,需要加上延迟

#include <stdlib.h>
int main()
{
        int i=0;
        system("echo 44 > /sys/class/gpio/export");
        sleep(1);
        system("echo out > /sys/class/gpio/gpio44/direction");
        sleep(1);
        while(i++<3)
        {
                system("echo 1 > /sys/class/gpio/gpio44/value");
                sleep(1);
                system("echo 0 > /sys/class/gpio/gpio44/value");
                sleep(1);

        }
        system("echo 44 > /sys/class/gpio/unexport");
        return 1;

}


标签beagle bone GPIO编程

最新评论