萤火工场GD32VW553-IOT开发板RISC-V开源硬件测评 - 多彩流水灯实现
分享作者:stc98
评测品牌:萤火工场
评测型号:GD32VW553-IOT
发布时间:2025-06-09 09:59:33
0
视频链接
【萤火工厂gd32vw553流水灯-哔哩哔哩】 https://b23.tv/BpvnO4K
前言
本项目利用GD32VW553-IOT开发板的GPIO(通用输入输出)功能,通过控制RGB LED不同颜色引脚的电平状态,实现红、绿、蓝及混合颜色的循环点亮,打造出绚丽的流水灯效果,展示开发板的基本外设控制能力。
开源口碑分享内容

环境搭建

1. 开发环境准备:选用GD32 Embedded Builder IDE作为开发工具,用于工程的编译与调试工作。

​2. 工程组构成:工程组由MBL和MSDK两个工程组成。MSDK包含WiFi和BLE协议栈、外设驱动及应用程序等;MBL主要负责从两个MSDK固件(当前固件和OTA固件)中选择正确的运行。

​3. 软件及SDK下载安装:完成相关软件及SDK的下载和安装后,按以下步骤进行工程导入和调试:

​- 双击EmbeddedBuilder目录下的Embedded Builder.exe启动IDE。

​- 选择SDK目录GD32VW55x_RELEASE为workspace,点击launch按钮。

​- 导入MBL工程:在File菜单点击Open Projects from file System,选择工程路径GD32VW55x_RELEASE\MBL\project\eclipse。

​- 导入MSDK工程:在File菜单点击Open Projects from file System,工程路径选择GD32VW55x_RELEASE\MSDK\projects\eclipse\msdk。

​- 编译MBL工程:右击工程,点击build project。

​- 编译MSDK工程:右击工程,依次点击Build Configurations -> Set Active -> 选择需要的配置;再次右击工程,点击Build project。

​- 生成的镜像烧录固件位于GD32VW55x_RELEASE_V1.0.2\scripts\images\image-all.in。

硬件连接

1. RGB LED与开发板连接:

​- RGB LED的红色引脚(R)连接开发板的PA3。

​- RGB LED的绿色引脚(G)连接开发板的PA4。

​- RGB LED的蓝色引脚(B)连接开发板的PA5。

​- RGB LED的公共阴极(GND)连接开发板的GND。

代码编译

1. 工程创建:运行Embedded Builder软件,执行以下操作创建工程:

​- 点击File - New - Project... 。

​ 选择C/C++ - C Project - 点击Next 。

​- 设置工程名称、工程路径,目标设备选择GD32VW553HMQ7 ,点击Finished完成工程创建。

​2. 工程代码编写:打开main.c文件,编写如下代码:

#include "gd32vw55x.h"

#include "systick.h"

#include <stdio.h>

#include "main.h"

// 定义RGB LED对应的GPIO引脚

#define LED_R_PIN    GPIO_PIN_3

#define LED_G_PIN    GPIO_PIN_4

#define LED_B_PIN    GPIO_PIN_5

#define LED_R_PORT   GPIOA

#define LED_G_PORT   GPIOA

#define LED_B_PORT   GPIOA


// 延时函数

void delay_ms(uint32_t ms)

{

   for (uint32_t i = 0; i < ms; i++)

   {

       for (uint32_t j = 0; j < 24000; j++)

       {

           __asm__ volatile("nop");

       }

   }

}


int main(void)

{

   systick_config();


   // 使能GPIOA时钟

   rcu_periph_clock_enable(RCU_GPIOA);


   // 配置RGB LED引脚为推挽输出模式,无上拉下拉

   gpio_mode_set(LED_R_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, LED_R_PIN);

   gpio_output_options_set(LED_R_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, LED_R_PIN);


   gpio_mode_set(LED_G_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, LED_G_PIN);

   gpio_output_options_set(LED_G_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, LED_G_PIN);


   gpio_mode_set(LED_B_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, LED_B_PIN);

   gpio_output_options_set(LED_B_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, LED_B_PIN);


   // 初始关闭所有LED

   gpio_bit_reset(LED_R_PORT, LED_R_PIN);

   gpio_bit_reset(LED_G_PORT, LED_G_PIN);

   gpio_bit_reset(LED_B_PORT, LED_B_PIN);


   while (1) {

       // 点亮红色LED

       gpio_bit_set(LED_R_PORT, LED_R_PIN);

       delay_ms(500);

       gpio_bit_reset(LED_R_PORT, LED_R_PIN);


       // 点亮绿色LED

       gpio_bit_set(LED_G_PORT, LED_G_PIN);

       delay_ms(500);

       gpio_bit_reset(LED_G_PORT, LED_G_PIN);


       // 点亮蓝色LED

       gpio_bit_set(LED_B_PORT, LED_B_PIN);

       delay_ms(500);

       gpio_bit_reset(LED_B_PORT, LED_B_PIN);


       // 点亮黄色(红 + 绿)

       gpio_bit_set(LED_R_PORT, LED_R_PIN);

       gpio_bit_set(LED_G_PORT, LED_G_PIN);

       delay_ms(500);

       gpio_bit_reset(LED_R_PORT, LED_R_PIN);

       gpio_bit_reset(LED_G_PORT, LED_G_PIN);


       // 点亮青色(绿 + 蓝)

       gpio_bit_set(LED_G_PORT, LED_G_PIN);

       gpio_bit_set(LED_B_PORT, LED_B_PIN);

       delay_ms(500);

       gpio_bit_reset(LED_G_PORT, LED_G_PIN);

       gpio_bit_reset(LED_B_PORT, LED_B_PIN);


       // 点亮紫色(红 + 蓝)

       gpio_bit_set(LED_R_PORT, LED_R_PIN);

       gpio_bit_set(LED_B_PORT, LED_B_PIN);

       delay_ms(500);

       gpio_bit_reset(LED_R_PORT, LED_R_PIN);

       gpio_bit_reset(LED_B_PORT, LED_B_PIN);


       // 点亮白色(红 + 绿 + 蓝)

       gpio_bit_set(LED_R_PORT, LED_R_PIN);

       gpio_bit_set(LED_G_PORT, LED_G_PIN);

       gpio_bit_set(LED_B_PORT, LED_B_PIN);

       delay_ms(500);

       gpio_bit_reset(LED_R_PORT, LED_R_PIN);

       gpio_bit_reset(LED_G_PORT, LED_G_PIN);

       gpio_bit_reset(LED_B_PORT, LED_B_PIN);

   }

}

3. 编译程序:右键工程 - 编译程序,生成Debug文件夹,右键bin文件 - Show In - System Explorer ,打开系统路径并找到生成的*.bin固件。

固件上传

1. 采用ISP方式上传固件至开发板,具体操作如下:

- 将BOOT0拉高,使用USB转TTL工具连接开发板。

- 运行GD32 All-In-One Programmer软件。

- 进行设备端口选择、串口参数设置,设备名称选择GD32VW553HMQ7 。

- 加载生成的镜像固件(*.bin文件)、设置起始地址,点击Download按钮。

- 待固件上传结束,点击Disconnect断开烧录工具串口连接,将BOOT0重新拉低。

- 打开串口调试助手,配置串口参数,打开串口,短按RST复位按键,程序开始运行。

效果演示

RGB LED按照红、绿、蓝、黄、青、紫、白的顺序循环点亮,每个颜色持续显示500毫秒,呈现出流畅且绚丽的多彩流水灯效果。

总结

本文完整地展示了使用萤火工场GD32VW553-IOT开发板实现多彩流水灯的全过程。通过该项目,不仅熟悉了开发板的GPIO配置与使用,也掌握了基本的嵌入式开发流程,为后续更复杂的项目开发积累了经验。

全部评论
暂无评论
0/144