搜索
热搜: ROHM 模拟 车载
查看: 1732|回复: 1

[Z-turn Board] zturn板控制led经验

[复制链接]

该用户从未签到

32

主题

34

帖子

0

精华

中级会员

最后登录
2020-3-28
发表于 2020-3-6 19:46:04 | 显示全部楼层 |阅读模式
本帖最后由 firefirefire 于 2020-3-10 22:57 编辑

      不管是gpio还是LED的控制都有两种方式,一种是在串口终端直接输入echo等命令控制灯亮灭,一种是编写应用程序去自动控制。
       Led的路径是 /sys/class/leds/usr_led1/,而led的名称则由设备树标明,如下是米尔设备树代码。GPIO编号的计算公式是GPIO号=bank*32+24;比如usr_led1和usr_led1在原理图中对应着PS的mdio0和mdio9,这个可以在设备树中得到验证。
   gpio-leds {
       compatible = "gpio-leds";

       led_r {

           label = "led_r";

           gpios = <&gpio0 114 1>;

           default-state = "on";

           linux,default-trigger = "heartbeat";

       };

       led_g {

           label = "led_g";

           gpios = <&gpio0 115 1>;

           default-state = "on";

           linux,default-trigger = "heartbeat";

       };

       led_b {

           label = "led_b";

           gpios = <&gpio0 116 1>;

           default-state = "on";

           linux,default-trigger = "heartbeat";

       };

       usr_led1 {

           label = "usr_led1";

           gpios = <&gpio0 0 1>;

           default-state = "off";

           linux,default-trigger = "none";

       };

       usr_led2 {

           label = "usr_led2";

           gpios = <&gpio0 9 1>;

           default-state = "off";

           linux,default-trigger = "none";

       };



    };

第一种方式shell控制灯:



      通过shell进入usr_led1文件路径 然后点亮命令是 echo 1 >brightness          关闭是echo 0>brightness;

然后输入echo heartbeat>trigger是让usr_led1这个灯一闪一闪的心跳灯。



第二种方式应用程序控制灯:

      应用程序的操作流程是先打开usr_led1的trigger文件,然后将“none”字符串写入这个文件,以取得对此led的控制。然后再打开此led的brightness文件,写入字符“1”或者“0”进行灯的点亮和关闭操作。具体代码如下:

void led_settrigger()
{
        int ret;
        int fd;
      
        fd = open("/sys/class/leds/usr_led1/trigger",O_WRONLY);
        char tri[NAME_MAX_LENGTH] = "none";
        printf("set trigger to none\n");
        IF (fd < 0) {
                printf("Can't open this led\n");
            }
        ret = write(fd, "none", strlen(tri));
        close(fd); }
void led_twinkle()
{
        int ret;
        int fd = open("/sys/class/leds/usr_led1/brightness", O_WRONLY);
      
        if (fd < 0) {
                printf("Can't open this led\n");
                        }
        while(1)
        {
                ret = write(fd, "1", 2);
                sleep(1);
                ret = write(fd, "0", 2);               
                sleep(1);
        }
        close(fd);


}
     直接使用之前配置好的eclipse工具进行编译,然后将目标文件下入板子运行,成功闪烁。
回复

使用道具 举报

该用户从未签到

1347

主题

6657

帖子

0

精华

论坛元老

最后登录
2020-7-26
发表于 2020-4-16 11:37:02 | 显示全部楼层
学习学习新技术
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

Archiver|手机版|小黑屋|罗姆半导体技术社区

GMT+8, 2024-4-20 17:33 , Processed in 0.101370 second(s), 12 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表