小猎骨黑闪光板载 USR0 LED C++,代码运行但 LED 不变

beaglebone black flash onboard USR0 led c++, code runs but led doesn't change

本文关键字:LED C++ 代码 运行 不变 USR0 板载      更新时间:2023-10-16

我有一个安装了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从未改变其通常的心跳模式。有人知道为什么会这样吗?

提前谢谢。

首先从命令行检查是否全部工作

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

你会看到led停止闪烁。现在试试这个

# echo 1 > brightness

第一个LED应点亮

# echo 0 > brightness

第一个LED应该熄灭。

# echo heartbeat > trigger

将其设置回心跳。

如果所有这些都有效,那么可能是你做错了什么。做一个正确的错误检查,这样调试它会更容易。