微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > 射频无线通信设计 > 之编译测试和LED点灯实验

之编译测试和LED点灯实验

时间:10-02 整理:3721RD 点击:

   DragonBoard 410c板载了6个LED灯,其中两个分别为Wifi和蓝牙指示灯,另外四个位用户指示灯,这里首先通过一个helloworld测试下Ian编译环境,然后参考官方手册实现用户LED4的闪烁控制,具体如下:
  首先编写helloworld程序简单测试

  1. vi helloDragonboard.c

复制代码



  完成后通过gcc编译并输出,然后执行

  1. gcc helloDragonboard.c -o helloDragonboard

复制代码



  基本上没什么问题,当然你也可以通过gcc -V查看gcc版本
  接着便是led实验了,同样通过Vi进行编辑,然后用gcc进行编译输出并执行,这里参考官方手册给出测试源码。


  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <fcntl.h>
  4. #include <unistd.h>
  5. #define LED4 "/sys/class/leds/apq8016-sbc:green:user4/brightness"
  6. int main( void )
  7. {
  8.    int led4_fd = open( LED4, O_WRONLY);
  9.    if(led4_fd < 0)
  10.    {
  11.        printf("Could not open File: %s", LED4);
  12.        return 0;
  13.    }
  14.    int i;
  15.    for( i=0; i<10;i++)
  16.    {
  17.       write( led4_fd, "1", 2 ); //Turning the LED ON by writing 1 into the brightness file
  18.       sleep( 1 );
  19.       write( led4_fd, "0", 2 ); //Turning the LED OFF by writing 0 into the brightness file
  20.       sleep( 1 );
  21.    }
  22.     close(led4_fd);
  23. }

复制代码

  值得注意的是,官方demo编译会直接出错

  1. #define LED4 "/sys/class/leds/apq8016-sbc\:green\:user4/brightness"

复制代码

  这里反斜杠务必要去掉。这里主要是定义LED在文件系统中的访问路径,获得LED的文件标识符,打开LED的亮度文件,其中user3代表的板卡上的用户指示灯4,更改序号可以控制不同的用户LED灯。

  1. int led4_fd = open( LED4, O_WRONLY);

复制代码


  这里如果led4_fd的文件标识符小于零,说明我们无法打开文件

  1.    if(led4_fd < 0)

复制代码

  最后我将for循环十次改为循环100次对led4进行开关,方便观看效果

  1. close(led4_fd);

复制代码


close表示退出文件控制,实验效果如下所示:


fgdfgdfgdfgdfg

值得注意的是 ,执行文件的时候必须用sudo 不然就打不开文件:Could not open File:云云。搞了2个小时才发现。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top