专栏首页嵌入式iotrv-star RGB LED灯实验

rv-star RGB LED灯实验

  • 1.实验目的
  • 2.环境搭建
  • 3.实验结果与代码分析
  • 4.调用层次分析

1.实验目的

本实验主要在rv-star的板子上点亮RGB灯。

通过一个简单的GPIO操作实验,分析RISCV MCU目前的编程模型。

本实验的工程已经上传到

https://github.com/bigmagic123/RV-STAR

2.环境搭建

实验下载操作可以按照我之前的文章来操作

首先导入工程

然后选择工程

调试选择openocd

最后,直接下载即可。

3.实验结果与代码分析

入口在main函数

main函数中调用了led_config();函数

该函数的实现如下:

void led_config(void)
{
    for(int i=0; i<LEDn; i++)
    {
        gd_rvstar_led_init(i);
        gd_rvstar_led_on(i);
        delay_1ms(1000);
        gd_rvstar_led_off(i);
    }
}

首先LEDn在gd32vf103_rvstar.h中

/* rvstar board low layer led */
#define LEDn                             3U

定义了三个LED。

接着调用gd_rvstar_led_init初始化gpio。

其实际的实现可以看如下的代码

/* Defines for LED functio/* Defines for LED / Key functions to new / general API */
#define gd_rvstar_led_init         gd_led_init
#define gd_rvstar_led_on           gd_led_on
#define gd_rvstar_led_off          gd_led_off
#define gd_rvstar_led_toggle       gd_led_toggle

实际上执行的是gd_led_init,现在看看该函数的实现

/* eval board low layer private functions */
/*!
 *  \brief      configure led GPIO
 *  \param[in]  lednum: specify the led to be configured
 *  \arg        LED1
 *  \param[out] none
 *  \retval     none
 */
void gd_led_init(led_typedef_enum lednum)
{
    /* enable the led clock */
    rcu_periph_clock_enable(`[lednum]);
    /* configure led GPIO port */
    gpio_init(GPIO_PORT[lednum], GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN[lednum]);
    GPIO_BOP(GPIO_PORT[lednum]) = GPIO_PIN[lednum];
}

首先调用rcu_periph_clock_enable初始化对于的GPIO时钟。

对于GPIO_CLK有如下的定义。

static const rcu_periph_enum GPIO_CLK[LEDn] = {LEDG_GPIO_CLK,LEDB_GPIO_CLK,LEDR_GPIO_CLK};
#define LEDG_PIN                         GPIO_PIN_1
#define LEDG_GPIO_PORT                   GPIOA
#define LEDG_GPIO_CLK                    RCU_GPIOA

#define LEDB_PIN                         GPIO_PIN_3
#define LEDB_GPIO_PORT                   GPIOA
#define LEDB_GPIO_CLK                    RCU_GPIOA

#define LEDR_PIN                         GPIO_PIN_2
#define LEDR_GPIO_PORT                   GPIOA
#define LEDR_GPIO_CLK                    RCU_GPIOA

简单的说,就是LED绿灯对应的是PA1,LED蓝灯对应PA3,LED红灯对应PA2。

查看原理图

对应芯片的引脚

不难看出,操作一个gpio的流程主要是三部分

1.设置GPIO时钟

2.设置初始化设置GPIO

3.操作对应的GPIO位

4.调用层次分析

main-->gd32vf103_rvstar-->gd32vf103_xx.c-->寄存器操作

所以如果需要自己实现板子的定义,只需要修改gd32vf103_rvstar中间层即可。

本文分享自微信公众号 - 嵌入式IoT(Embeded_IoT),作者:bigmagic

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-03-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 树莓派基础实验22:红外遥控传感器实验

       红外接收头的主要功能为IC化的一种受光元件,其内部是将光电二极管(俗称接收管)和集成IC共同组合封装而成,其IC设计主要以类比式控制,一般主要接收38KH...

    张国平
  • 树莓派基础实验1:双色LED灯实验

       双色发光二极管(LED)能够发出红色和绿色,两种不同颜色的光。正电压指向LED端子之一,使LED发出相应的颜色的光,一次只能有一个引脚接受电压,常用着各种...

    张国平
  • 树莓派基础实验2:RGB-LED实验

       RGB LED模块可以发出各种颜色的光。红色,绿色和蓝色的三个LED被封装到透明或半透明塑料外壳中,并带有四个引脚。红色,绿色和蓝色三原色可以按照亮度混合...

    张国平
  • 树莓派综合项目1:智能温度测量系统实验

      我们可以在编程时通过操纵杆PS2调整下限和上限值。操纵杆PS2有五个操作方向:向上、向下、向左、向右和向下按压。在这个项目中,我们将使用左右方向来控制上限值...

    张国平
  • 智能家居制作之WiFi遥控家中设备

    现如今,智能家居行业发展迅速,得益于物联网和人工智能技术的迭代发展,各类智能家居设备已不知不觉的走进我们的生活中。

    跋扈洋
  • 蓝牙小程序开发板功能说明

    1、控制板有一个由继电器控制的主控开关,过电流能力为6A,最大电压为220V,主控开关可由小程序直接控制、定时控制、板上按键控制。

    燧星科技
  • “2017美国春晚”上为Lady Gaga助演的无人机大有来头…

    北京时间2017年2月6日,美国第五十一届NFL超级碗正式开打,双方是新英格兰爱国者队以及亚特兰大猎鹰队,而今年超级碗的中场秀,也被誉为“美国春晚”的舞台,嘉宾...

    机器人网
  • 华引芯孙雷蒙:主攻高端LED芯片,推出全球可量产的最小尺寸Mini LED | 镁客请讲

    在刚刚于武汉举办的光博会上,光源供应厂商华引芯首发了全球可量产的最小尺寸Mini LED产品,这也意味着国内创企在高端LED芯片上取得了新进展。

    镁客网
  • 实践干货 | 自动化视觉跟踪

    在之前的某个教程里,我们探讨了如何控制Pan/Tilt Servo设备来安置一个PiCam(树莓派的相机)。这次,我们将使用你的设备来帮助相机自动地跟踪某种颜色...

    AI研习社

扫码关注云+社区

领取腾讯云代金券