beaglebone black flash onboard USR0 led c ++,代码运行但led并没有改变

时间:2015-12-01 03:59:55

标签: c++ debian beagleboneblack

我安装了Debian的BeagleBone Black。我成功地使用MobaXterm进行了ssh,并编写了以下代码(已经在nano和gedit中编写/编译/运行):

 #include <iostream>
 #include <stdio.h>
 #include <unistd.h>
 using namespace std;

 int main(){
 cout << "LED Flash Start" << endl;
 FILE *LEDHandle = NULL;
 const char *LEDBrightness="/sys/class/leds/beaglebone:green:usr0/brightness";

 for(int i=0; i<10; i++){ 
    if((LEDHandle = fopen(LEDBrightness, "r+")) != NULL){
        fwrite("1", sizeof(char), 1, LEDHandle);
        fclose(LEDHandle);
    }
    usleep(1000000);

    if((LEDHandle = fopen(LEDBrightness, "r+")) != NULL){
        fwrite("0", sizeof(char), 1, LEDHandle);
        fclose(LEDHandle);
    }
    usleep(1000000);
  }
  cout << "LED Flash End" << endl;
 }

基本上我按照此处显示的步骤进行操作:http://elinux.org/Beagleboard:C/C%2B%2B_Programming

代码编译并运行。在终端中它显示预期的输出,但是在BeagleBone Black上,USR0 led从未改变其通常的心跳模式。有谁知道为什么会这样?

提前致谢。

1 个答案:

答案 0 :(得分:1)

首先检查它是否全部来自命令行

# cd beaglebone:green:usr0
# more trigger
  none ...... mmc0 mmc1 timer oneshot [heartbeat] backlight gpio cpu0 default-on transient
# echo none > trigger

你会看到指示灯停止闪烁。现在试试这个

# echo 1 > brightness

第一个LED应该亮起

# echo 0 > brightness

第一个LED应该熄灭。

# echo heartbeat > trigger

将其设置回心跳。

如果所有这些都有效,那么可能是你做错了什么。进行适当的错误检查,然后调试它会更容易。