OpenWrt:通过GPIO管脚控制LED灯

在Linux中,GPIO表达为设备文件, 对GPIO的操作采用文件读写方式即可完成, 这些设备文件在目录/sys/class/gpio/ 中,如下所示:


目录中文件或子目录的作用如下所示:
export    导出控制的GPIO引脚编号
unexport    取消控制的GPIO引脚编号
gpio*    对应的gpio引脚信息
我要控制的LED灯对应的gpio*文件夹为gpio11,但是/sys/class/gpio/中并没有这个文件夹,可以按下列步骤操作
1.导出gpio11
echo 11 > export


2.然后需要设置该GPIO作为输入还是输出,这个LED灯是作为组网成功的指示灯的,所以我们需要输出
cd gpio11
echo out > direction


3.最后通过设置value为0或1来控制LED的开关
echo 1 > value
echo 0 > value


既然可以读写,那当然就通过编程来控制了,下列代码可以使该LED灯间隔1秒闪烁100次

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

int main(void)
{
    FILE *f=nullptr;
    int i=0;
    for(;i<100;i++)
    {
        if(i%2==0)
        {
            f=fopen("/sys/class/gpio/gpio11/value","w");
            fprintf(f,"%s","1");
            fclose(f);
        }
        else
        {
            f=fopen("/sys/class/gpio/gpio11/value","w");
            fprintf(f,"%s","0");
            fclose(f);
        }
        sleep(1);
    }

    fclose(f);
    return 0;
}

原文链接:https://blog.csdn.net/caoshangpa/article/details/78582158


版权声明:本文为caoshangpa原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。