查看: 1114|回复: 0

[BBB试用之旅3] 命令行控制led+C控制led

[复制链接]
  • TA的每日心情
    难过
    2017-4-18 09:57
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2017-2-28 09:23:58 | 显示全部楼层 |阅读模式
    分享到:
    系列阅读:https://jingyan.eeboard.com/category/53

    前面一篇是用python熟悉了BBB的部分软件环境,但是毕竟C语言将成为试用之旅的主力,本篇重点用C实现对BBB小灯的控制。
    当然首先得先试试SHELL命令,这也是熟悉BBB的必经之路。
    仍旧选择P8_12管脚作为输出,找到手册上的Table 8 中P8管脚的说明。P8_12是GPIO1_12 ,计算对应Linux中的GPIO号为44(32 *1 +12)

    1. 首先进入 /sys/class/gpio目录

    默认情况下没有看到GPIO44的信息,使用echo命令产生GPIO44目录

    2 cd GPIO44 ,进入该目录,设置Direction为输出模式(OUT),设置输出电平value(1或0)
    在SHELL使用ECHO就能on/ off led灯,实际是对direction 和value文件写入相应的值就可以了,用C语言控制led灯也是这个思路,只不过调用库函数实现对指定文件的读写。

    适当改动了一下
    #include <string.h>
    #include <fcntl.h>
    #define SYSFS_GPIO_DIR "/sys/class/gpio"
    #define MAX_BUF 32
    void main()
    {
        char buf[MAX_BUF];
        char buf2[MAX_BUF];
        char ch;
        int i;
        //export gpio44
        fd = open(SYSFS_GPIO_DIR "/export", O_WRONLY);
        strncpy(buf,"44",strlen("44"));
        write(fd,buf,strlen("44"));
        close(fd);
        memcpy(buf,SYSFS_GPIO_DIR"/gpio44/direction",strlen(SYSFS_GPIO_DIR"/gpio44/di    rection"));
        fd = open(buf, O_WRONLY);
       write(fd, "out", 4);     //设置GPIO44 为输出
        close(fd);
        snprintf(buf,sizeof(buf),SYSFS_GPIO_DIR"/gpio44/value");
        fd = open(buf, O_RDWR);
        for(i=0;i<2;i++)
        {
          write(fd, "0", 1);
          usleep(1000000);
          write(fd, "1", 1);
          usleep(1000000);
        }
        close(fd);         //on off 若干次 ,1s闪烁一次现象
        fd= open(buf,O_RDWR);
        read(fd,&buf2,sizeof(buf2));
       printf("the last value: %s\n",buf2);
       close(fd);       //读出当前文件gpio44/value 中的值
    }

    整个过程很顺利,操作也很简单,证明当前BBB的环境都很正常,下一步可以研究下其他有意思的了。
    顺便再提个问题,用date 看了下系统时间,差的十万八千里。我参考了部分网友的分享,试了试出现以下报错,是否缺少一些组件,还是时间同步服务器端的问题呢?请大侠明示?谢谢喔

    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-18 22:54 , Processed in 0.104926 second(s), 14 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.