0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在rv-star板子上点LED灯实验

嵌入式IoT 来源:嵌入式IoT 作者:嵌入式IoT 2021-03-29 16:05 次阅读

1.实验目的

2.环境搭建

3.实验结果与代码分析

4.调用层次分析

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

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

2.环境搭建实验下载操作可以按照我之前的文章来操作

首先导入工程

5ec83174-8ec6-11eb-8b86-12bb97331649.png

然后选择工程

调试选择openocd

5f7295f6-8ec6-11eb-8b86-12bb97331649.png

最后,直接下载即可。

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 */

/*!

* rief configure led GPIO

* param[in] lednum: specify the led to be configured

* arg LED1

* param[out] none

*

etval 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。

查看原理图

6034df9e-8ec6-11eb-8b86-12bb97331649.png

对应芯片的引脚

60a18c70-8ec6-11eb-8b86-12bb97331649.png

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

1.设置GPIO时钟

2.设置初始化设置GPIO

3.操作对应的GPIO位

4.调用层次分析main--》gd32vf103_rvstar--》gd32vf103_xx.c--》寄存器操作

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

原文标题:rv-star RGB LED灯实验

文章出处:【微信公众号:嵌入式IoT】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    237

    文章

    22449

    浏览量

    645853

原文标题:rv-star RGB LED灯实验

文章出处:【微信号:Embeded_IoT,微信公众号:嵌入式IoT】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    将helloworld代码替换为timper_pwm实验代码后,timer_pwm实验运行后一直加载没有反应是怎么回事?

    在按照《RV-STAR 开发板用户指南V2.0》上的教程将helloworld代码替换为timper_pwm实验代码后,点击编译成功,在运行后,terminal没有反应,打开progress发现一直
    发表于 08-17 06:58

    UART串口通信的应用方法

    建立连接的,了解了这个才便于我们稍后编写实验代码。 实验1:返回接收的字符 实验1是让RV-STAR开发板接收从PC主机发送的字符,再回发给PC主机。
    发表于 08-16 08:24

    RV-STAR开发板上的DAC的基础用法

    /模拟转换器)。这期内容我们将通过一个用旋钮控制LED亮度的小实验带领大家了解RV-STAR开发板上的DAC的基础用法。 系统环境 Windows 10-64bit 软件平台 NucleiStudio
    发表于 08-16 08:24

    使用Nuclei Studio+蜂鸟调试器进行RISC-V嵌入式开发的方法

    板子是自带调试器,连接非常的方便,一块板子一根线就可以接上,如下图; RV-STAR开发板用户手册(Nuclei Studio IDE版)》文档中找到如下方法; 我们先
    发表于 08-16 08:17

    GD32VF103 RTC外设的使用方法

    10-64bit 软件平台 NucleiStudio IDE 202102版或 PlatformIO IDE 硬件需求 RV-STAR开发板 GD32VF103的RTC电路 GD32VF103
    发表于 08-16 08:14

    看门狗的基本原理和RV-STAR独立看门狗(FWDGT)的使用方法

    版或 PlatformIO IDE 硬件需求 RV-STAR开发板 看门狗定时器的基本原理 看门狗定时器实际上一个计数器,计数溢出时会产生一个复位信号,正常情况下首先给看门狗定时器
    发表于 08-16 08:13

    RV-STAR开发板上ADC的使用方法

    容易储存、处理和发射的数字形式,因此被广泛应用在各种产品中。本期我们将通过一个读取电位器电压值的小实验来了解RV-STAR开发板上ADC的使用方法。 系统环境 Windows 10-64bit 软件
    发表于 08-16 07:47

    外部中断的非向量处理模式介绍

    [size=14.6667px]NucleiStudio IDE 202102版 硬件需求 RV-STAR开发板 中断知识介绍 外部中断处理介绍 SoC层面,GD32VF103芯片
    发表于 08-16 07:40

    RV-STAR开发板无法烧写程序是为什么?

    昨天下载烧写程序后直接拔掉了,今天再烧写就写不进去,显示是这样 端口是这样 昨天烧写的是按键控制LED变红,关闭,现在任然可以板子上运行,其他软件没法覆盖。
    发表于 08-16 07:20

    使用SEGGER Embedded Studio+JLink调试器进行RISC-V嵌入式开发的方法

    RGB LED下方的3V3接口。 使用时Type-C也需要连接,起到供电的作用。连接后参考实物图如下: 下载DEMO工程 Github下载RV-STAR的demo工程,其链接如下
    发表于 08-16 07:16

    GD32VF103是否支持高级调试器?

    当前 RV-STAR 和全功能开发板当前是使用Nuclei 和Segger进行调试,对变量的实时监控只能暂停程序运行。 是否可以支持 劳特巴赫和 PLS这种高级一点的调试器?可以看寄存器,可以看memory 里面的flash和Ram值 可以单步调试,打断点,和定时刷新监控变量不用暂停这种
    发表于 08-16 07:07

    使用RVSTAR开发板的常见问题

    RV-STAR进行开发。但有些时候,Windows系统并不能自动安装正确的串口驱动,进而影响到IDE的程序烧写和串口连接功能。另外,有些用户使用PlatformIO IDE进行开发也遇到相似问题。经实验
    发表于 08-16 06:51

    使用SEGGER Embedded Studio+蜂鸟调试器进行RISC-V嵌入式开发的方法

    本教程以板上控制点亮RV-STAR开发板上的LED为目标,从IDE的下载安装开始详细介绍了使用SEGGER Embedded Studio+蜂鸟调试器进行RISC-V嵌入式开发的方法。系统环境
    发表于 08-16 06:08

    SPI总线通信例程

    《GD32VF103中文用户手册》 实验部分 实验部分我们将实现一个简单的SPI通信过程:字符串数据由主机(RV-STAR)生成,并通过SPI接口发送到从机(Arduino UNO
    发表于 08-16 06:05

    GD32VF103进行仿真调试时使用的JTAG与ARM使用的JTAG是一样的吗?

    请问对GD32VF103(RV-STAR开发板)进行仿真调试时使用的JTAG与ARM使用的JTAG是一样的吗??
    发表于 08-15 07:52