环境搭建
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配置与使用,也掌握了基本的嵌入式开发流程,为后续更复杂的项目开发积累了经验。

