[MCU] 【中科蓝讯AB32VG1 RISC-V板“碰上”RTT】GPIO模拟实现全彩LED灯

臭弟弟   2021-4-16 15:33 楼主

1、开发环境:
    RT-Thread版本:4.0.3
    操作系统:Windows 10
    RT-Thread Studio版本:2.1.0

    微控制器: AB32VG1(32位 RISC-V 处理器)

2、板载介绍

    开发板的资料比较少,下图是通过RT-Thread Studio获得的资料信息。本文将通过GPIO模拟控制RGB LED灯实现全彩控制。

image.png

LED对应的IO口
LED-R PE1
LED-G PE4
LED-B PA2

3、环境搭建

    环境的搭建主要是RT-Thread Studio安装与包管理、项目的创建于配置和程序下载。环境的配置是参考博客文章环境搭建参考

4、实现全彩LED灯闪烁

(1)LED灯电路图

image.png

 

 

 

 

 

 

 

 

 

 

 

 

 

LED灯采用共阳极连接。

(2)实现代码

    

/**Includes*********************************************************************/
#include <rtthread.h>
#include "board.h"

 

int main(void)
{
    uint32_t cnt = 0;

    uint8_t pin_r = rt_pin_get("PE.1");
    uint8_t pin_g = rt_pin_get("PE.4");
    uint8_t pin_b = rt_pin_get("PA.2");


    rt_pin_mode(pin_r, PIN_MODE_OUTPUT);
    rt_pin_mode(pin_g, PIN_MODE_OUTPUT);
    rt_pin_mode(pin_b, PIN_MODE_OUTPUT);


    while (1)
    {
        //红
        rt_pin_write(pin_r, PIN_LOW);
        rt_pin_write(pin_g, PIN_HIGH);
        rt_pin_write(pin_b, PIN_HIGH);
        rt_thread_mdelay(1000);

        //绿
        rt_pin_write(pin_r, PIN_HIGH);
        rt_pin_write(pin_g, PIN_LOW);
        rt_pin_write(pin_b, PIN_HIGH);
        rt_thread_mdelay(1000);

        //蓝
        rt_pin_write(pin_r, PIN_HIGH);
        rt_pin_write(pin_g, PIN_HIGH);
        rt_pin_write(pin_b, PIN_LOW);
        rt_thread_mdelay(1000);

        //黄(红+绿)
        rt_pin_write(pin_r, PIN_LOW);
        rt_pin_write(pin_g, PIN_LOW);
        rt_pin_write(pin_b, PIN_HIGH);
        rt_thread_mdelay(1000);

        //紫(红+蓝)
        rt_pin_write(pin_r, PIN_LOW);
        rt_pin_write(pin_g, PIN_HIGH);
        rt_pin_write(pin_b, PIN_LOW);
        rt_thread_mdelay(1000);

        //青(绿+蓝)
        rt_pin_write(pin_r, PIN_HIGH);
        rt_pin_write(pin_g, PIN_LOW);
        rt_pin_write(pin_b, PIN_LOW);
        rt_thread_mdelay(1000);

        //白(红+绿+蓝)
        rt_pin_write(pin_r, PIN_LOW);
        rt_pin_write(pin_g, PIN_LOW);
        rt_pin_write(pin_b, PIN_LOW);
        rt_thread_mdelay(1000);

        //黑(全部关闭)
        rt_pin_write(pin_r, PIN_HIGH);
        rt_pin_write(pin_g, PIN_HIGH);
        rt_pin_write(pin_b, PIN_HIGH);
        rt_thread_mdelay(1000);
        cnt++;

    }

    return 0;
}

(3)实验现象

4c4fad529663f7e9faf84dcd4b8e428a.gif

 

 

本帖最后由 臭弟弟 于 2021-4-16 15:44 编辑

回复评论 (1)

恭喜啊,环境搞定啦,话说最后是怎么搞定的?

 

点赞  2021-4-16 16:16
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复