是否可以在嵌入式Linux中一次导出多个GPIO?

时间:2014-03-06 20:08:44

标签: c linux raspberry-pi embedded-linux

在运行Raspbian的Raspberry Pi上工作时,我试图使用驱动程序式的C代码来访问GPIO。要将GPIO引脚导出到用户空间,我必须将引脚号写入/ sys / class / gpio / export。是否可以在单个文件写入中导出多个引脚?例如,我想这样做:

int initGPIO(int pins[], int numPins){
char buffer [50]; int numBytes; 

int fh = open("/sys/class/gpio/export", O_WRONLY);
if(fh<0) return -1;

int i;
numBytes = 0; 
sprintf(buffer, "");
for (i=0; i<numPins; i++){
    numBytes += sprintf(buffer, "%s\n%d", buffer, pins[i]);
}
return write(fh, buffer, numBytes);
close(fh);
}

当给出[2,3,4]作为输入数组时,此函数仅导出引脚2.是否有某种方法将引脚写入导出文件,以便它们全部导出?谢谢你的时间!

1 个答案:

答案 0 :(得分:2)

不::)

快速解决方案可能是将代码包装在循环中,如下所示:

int initSingleGPIO(int pin)
{
    char buffer [50]; 
    int numBytes; 

    int fh = open("/sys/class/gpio/export", O_WRONLY);

    if(fh<0) return -1;

    sprintf(buffer, "");

    numBytes = sprintf(buffer, "%s\n%d", buffer, pin);

    int rv = write(fh, buffer, numBytes);

    close(fh);

    return rv;
}

int initGPIO(int pins[], int numPins)
{     
    int i;   
    for (i=0; i<numPins; i++)
    {
        initSingleGPIO(pins[i]);
    }

}