1677|1

291

帖子

5

TA的资源

纯净的硅(中级)

楼主
 

【平头哥Sipeed LicheeRV 86 Panel测评】9-闪烁LED [复制链接]

 

本篇来介绍LicheeRV 86 Panel板子的LED控制。

SD里的这个Linux系统里,已经有LED的驱动程序了,本篇在控制LED,其实是在应用层通过操作文件的方式实现LED的控制(Linux中一切皆文件,LED也一样)。

注意,对于这个86 Panel板子,需要把核心板拆下来进行实验,因为对应引脚连接了外设。

1 控制LED亮灭

1.1 原理图

查看原理图,可知该LED连接的是PC1:

看IO复用情况表,可知该IO的数字标号为65:

cat /sys/kernel/debug/pinctrl/2000000.pinctrl/pinmux-pins

1.2 指令控制LED

我们先导出该GPIO:

echo 65 > /sys/class/gpio/export
cd /sys/class/gpio/gpio65

然后再将该IO置为输出状态,即可操作其电平:

echo out>direction
echo 1 > value  #LED点亮
echo 0 > value  #LED熄灭

具体操作如下图:

LED亮起,如图:

2 控制LED闪烁

通过指令,可以控制LED亮灭了,可以继续编写程序来实现LED的闪烁:

2.1 程序

在Ubuntu中编写ledtest.c程序:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
​
#define LED_GPIO "/sys/class/gpio/export"
#define LED_DIR  "/sys/class/gpio/gpio65/direction"
#define LED_VAL  "/sys/class/gpio/gpio65/value"
​
int main()
{
    printf("led test begin\n");
​
    int fd_gpio = 0;
    int fd_dir = 0;
    int fd_val = 0;
​
    //导出LED的GPIO
    fd_gpio = open(LED_GPIO, O_WRONLY);
    if (fd_gpio < 0)
    {
        printf("fd_gpio:%s open fail\n", LED_GPIO);
        exit(1);
    }
    write(fd_gpio, "65", 2);
​
    //设置为输出
    fd_dir = open(LED_DIR, O_WRONLY);
    if (fd_dir < 0)
    {
        printf("fd_dir:%s open fail\n", LED_DIR);
        exit(1);
    }
    write(fd_dir, "out", 3);
​
    //控制LED闪烁
    fd_val = open(LED_VAL, O_WRONLY);
    if (fd_val < 0)
    {
        printf("fd_val:%s open fail\n", LED_VAL);
        exit(1);
    }
    for (int i=0; i<10; i++)
    {
        write(fd_val, "1", 1);
        sleep(1);
        
        write(fd_val, "0", 1);
        sleep(1);
    }
    
    //释放资源
    close(fd_gpio);
    close(fd_dir);
    close(fd_val);  
    printf("led test end\n");
​
    return 0;
}

以上程序,本质就是将手动控制LED的指令,通过代码的形式实现出来。

最后是一个for循环,LED每隔1s亮/灭一次,10次循环后退出。

2.2 编译

编译工具链的搭建,上一篇已有介绍。

编译指令如下:

unset LD_LIBRARY_PATH
source ~/.local/riscv64-toolchain/environment-setup-riscv64-oe-linux
$CC -o ledtest ledtest.c

编译结果如图:

2.3 运行

通过ADB工具将led测试程序拷贝到开发板,运行:

运行效果如下:

3 总结

本篇介绍了LicheeRV 86 Panel板子如何控制核心板上的LED亮灭。

最新回复

看来前面的编译环境只要搭建好,Linux系统玩板子跑程序很顺溜     详情 回复 发表于 2022-2-24 07:10
点赞 关注
 
 

回复
举报

6802

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

看来前面的编译环境只要搭建好,Linux系统玩板子跑程序很顺溜

 

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表