0
我试图制作一个简单的按钮,并用BBB引导,并且成功完成工作。但是我的问题是,在我按下按钮之前,应该关闭LED,但是当我运行代码时LED会自动打开,而当按下按钮时会关闭LED。我试图通过cd /sys/class/gpio/gpio44/ - echo 0 > value
来设置上拉/下拉电阻,但它的“操作不允许”警告总是出现。有人能帮我吗?这里是我的代码:在Beaglebone黑色上设置上拉/下拉电阻
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
#include <time.h>
void sig_handler(int signo)
{
if (signo == SIGINT)
printf("\nRecieved SIGINT\n");
exit(1);
}
void GPIOREAD(char *url, char* val)
{
FILE *path = fopen(url,"r");
fread(val, 2, 1, path);
fclose(path);
}
int main(void)
{
int status;
unsigned int cnt=0;
status = access("/sys/class/gpio/gpio44/value", F_OK);
if (status == -1)
{
//file doesnt exist
printf("GPIO_44 file doesnt exist dude\n");
exit(1);
}
status = access("/sys/class/gpio/gpio45/value", F_OK);
if (status == -1)
{
//file doesnt exist
printf("GPIO_45 file doesnt exist dude\n");
exit(1);
}
//set GPIO 45 as output
system("echo in > /sys/class/gpio/gpio44/direction");
system("echo out > /sys/class/gpio/gpio45/direction");
sleep(1);
char val[10];
while(1)
{
GPIOREAD("/sys/class/gpio/gpio44/value", val);
printf("BUTTON STAT %s\n", val);
if(!strcmp(val,"1\n"))
{
printf("%u) AAA LED --- ON\n", cnt);
system("echo 1 > /sys/class/gpio/gpio45/value");
}
else
{
printf("%u) AAA LED --- OFF\n", cnt);
system("echo 0 > /sys/class/gpio/gpio45/value");
}
}
return 0;
}
我已经运行它作为根,但仍然..它不断告诉我,即使其中的文件已经rwx – user6318361
好吧,很高兴知道。 GPIO方向如何?它必须“出来”或不会让你更新价值。 – guycole
我已经设置了输入,但默认值是1而不是0 – user6318361