在运行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.是否有某种方法将引脚写入导出文件,以便它们全部导出?谢谢你的时间!
答案 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]);
}
}