【萤火工场】GD32VW553-IOT开发环境搭建和串口烧写程序
分享作者:LiuQX
评测品牌:萤火工场
评测型号:GD32VW553-IOT
发布时间:2025-05-19 10:50:21
2
前言
使用GD官方编辑编译软件GD32EmbeddedBuilder作为开发环境,使用GD官方程序烧写软件GD32AllInOneProgrammer通过串口为GD32VW553烧写程序。
开源口碑分享内容

开发环境搭建

       在对比多种可以开发GD32VW553芯片的软件后,觉得GD官方的GD32EmbeddedBuilder作为GD32VW553芯片开发软件上手更快一点。不仅是因为这是GD官方推荐的软件,也是因为GD32EmbeddedBuilder使用大多数软件工程师比较熟悉的开源软件Eclipse作为软件架构,更是因为其环境搭建非常简单和快速,工程创建也是非常简单的,编译工具也不需要额外的配置。

GD32EmbeddedBuilder软件可以在官网上下载,链接为 GD应用软件下载 。下载如下图的文件就可以,其他的资料也可以在官网上找到。

      下载后的文件是一个压缩包,打开后如下图所示,有examples、GD32EmbeddedBuilder、Tools文件夹和软件使用说明PDF文档。Examples文件夹里面是GD32F3x0的例程和芯片资料。GD32EmbeddedBuilder和Tools文件夹是编辑软件和编译工具,也是搭建开发环境所必须的,需要将这两个文件夹解压到一个文件夹下,否则在编译的时候提示无法找到make文件而无法编译程序,也可以修改对应的设置来配置编译工具的位置。不过建议将这两个文件夹解压到一个文件夹下。软件使用说明是一个英文版说明文档,没有中文的,在这里强烈建议也放个中文版的软件使用说明文档。

      解压的文件夹可以直接打开GD32EmbeddedBuilder文件夹下的GD32EmbeddedBuilder.exe软件打开编辑软件GD32EmbeddedBuilder。打开后的软件首界面如下图所示

      至此GD32VW553的开发环境搭建完成,就是这么的简单快速,也是我在开发RISC-V芯片搭建开发环境最快的一个了,也是比搭建ARM芯片开发环境还快的一个了。

GD32VW553工程创建

      在打开GD32EmbeddedBuilder软件后在软件首界面可以看到Create GD Project字眼,点击后会发现创建不了GD32VW553的工程。但是不要怀疑GD32EmbeddedBuilder创建不了GD32VW553的工程。这一点也是让人比较疑惑。创建GD32VW553的工程的方式是点击File下点击New下点击Project,选择C Project,点击Next。

      在Project Name中输入工程名称,可以去掉Use default location后在Location选项中选择工程保存路径。在Project type中选择GigaDevice RISC-V C Project,然后点击Next。

      之后跳转到芯片型号选择界面,如下图选择对应的型号即可

      点击Finish后便回到GD32EmbeddedBuilder软件,并在左侧Project Explorer栏中有对应创建好的工程名称和工程文件。

打开工程文件夹后,有如下的文件夹结构

      其中GD RISC-V MCU Debug是编译后的文件夹,里面有编译好后的bin文件等。main文件在src文件夹下,打开后有如下的代码

 /*!
    \file    main.c
    \brief   led spark with systick, USART print and key example

    \version 2024-07-29, V1.3.0, firmware for GD32VW55x
*/

/*
    Copyright (c) 2024, GigaDevice Semiconductor Inc.

    Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

    1. Redistributions of source code must retain the above copyright notice, this
       list of conditions and the following disclaimer.
    2. Redistributions in binary form must reproduce the above copyright notice,
       this list of conditions and the following disclaimer in the documentation
       and/or other materials provided with the distribution.
    3. Neither the name of the copyright holder nor the names of its contributors
       may be used to endorse or promote products derived from this software without
       specific prior written permission.

    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
OF SUCH DAMAGE.
*/

#include "gd32vw55x.h"
#include "systick.h"
#include <stdio.h>
#include "main.h"
#include "gd32vw553h_eval.h"

/*!
    \brief      toggle the led every 500ms
    \param[in]  none
    \param[out] none
    \retval     none
*/
void led_spark(void)
{
    static __IO uint32_t timingdelaylocal = 0U;

    if(timingdelaylocal) {

        if(timingdelaylocal < 500U) {
            gd_eval_led_on(LED2);
            gd_eval_led_on(LED3);
        } else {
            gd_eval_led_off(LED2);
            gd_eval_led_off(LED3);
        }

        timingdelaylocal--;
    } else {
        timingdelaylocal = 1000U;
    }
}

/*!
    \brief      main function
    \param[in]  none
    \param[out] none
    \retval     none
*/
int main(void)
{
#ifdef __FIRMWARE_VERSION_DEFINE
    uint32_t fw_ver = 0;
#endif /* __FIRMWARE_VERSION_DEFINE */

    /* configure systick */
    systick_config();
    eclic_priority_group_set(ECLIC_PRIGROUP_LEVEL3_PRIO1);
    /* initilize the LEDs, USART and key */
    gd_eval_led_init(LED1);
    gd_eval_led_init(LED2);
    gd_eval_led_init(LED3);
    gd_eval_com_init(EVAL_COM0);
    gd_eval_key_init(KEY_TAMPER_WAKEUP, KEY_MODE_GPIO);

#ifdef __FIRMWARE_VERSION_DEFINE
    fw_ver = gd32vw55x_firmware_version_get();
    /* print firmware version */
    printf("\r\nGD32VW55X series firmware version: V%d.%d.%d", (uint8_t)(fw_ver >> 24), (uint8_t)(fw_ver >> 16), (uint8_t)(fw_ver >> 8));
#endif /* __FIRMWARE_VERSION_DEFINE */

    /* print out the clock frequency of system, AHB, APB1 and APB2 */
    printf("\r\nCK_SYS is %d\r\n", rcu_clock_freq_get(CK_SYS));
    printf("\r\nCK_AHB is %d\r\n", rcu_clock_freq_get(CK_AHB));
    printf("\r\nCK_APB1 is %d\r\n", rcu_clock_freq_get(CK_APB1));
    printf("\r\nCK_APB2 is %d\r\n", rcu_clock_freq_get(CK_APB2));

    while(1) {
        if(RESET == gd_eval_key_state_get(KEY_TAMPER_WAKEUP)) {
            delay_1ms(50);
            if(SET == gd_eval_key_state_get(KEY_TAMPER_WAKEUP)) {
                gd_eval_led_toggle(LED1);
            }
        }
    }
}

      main函数也是非常的熟悉,和其他芯片的代码几乎无异。首先是时钟的配置,然后是按键和LED的初始化。工程实现的功能是按下按键后对应的LED灯的状态会由亮灭不断变化,即控制LED引脚的电平不断反转。因为GD32VW553-IOT板卡没有在对应引脚接LED和按键,所以无法实现例程的功能。

      点击功能栏的编译按钮就可以进行编译,或者右键工程选择Build Project进行编译。编译结果会在控制台中显示出来。

程序烧录

      最后就是烧写程序查看程序运行效果了。这里因为GD32VW553-IOT是最小系统板,也没有接按键或用户LED灯。所以只能验证程序烧写功能。这里使用的是GD官方推出的程序烧录软件GD32AllInOneProgrammer,在官网上下载如下图的文件

     下载后的文件也是一个压缩包,解压后打开GD32AllInOneProgrammer.exe就可以。打开后的界面如下

     然后是需要用板卡上带的跳线帽按照如下画红框的方式短接起来。

     找到一个USB转TTL窗口,RX接PA6,TX接PA7。对应引脚如下图

      接Type-C给板卡供电。查找对应的串口,在GD32AllInOneProgrammer的串口中选择对应的串口号,在Device Information中选择芯片型号为GD32VW553HMQ7,按下板卡上的复位按键,点击Connect连接芯片。若提示连接失败,需要多次按下复位按键或者查看对应引脚是否连接正确。连接成功后需要在Browse中选择对应的bin文件(在工程GD RISC-V MCU Debug文件夹下),点击Download烧写程序,烧写成功后会在右下角显示烧写结果。

GD32EmbeddedBuilder汉化方式

     GD32EmbeddedBuilder软件也可以进行汉化。汉化方式也是非常简单。点击Help下点击Install New Software,点击Add,在Location中输入:https://mirrors.ustc.edu.cn/eclipse/technology/babel/update-site/R0.20.0/2022-12/。

      之后会检索一下选项,选择带有Chinese (Simplified)的选项,点击Finish。之后就是点击Next和修改同意条款等。最后会重启软件,这样软件就汉化了。整个流程如下

      汉化后的软件编译工程结果会显示乱码,这是因为编码选择的是UTF-8导致,修改编码方式就可以解决。

      修改方式是点击项目,点击属性;或者右键项目点击属性。在资源下的文本文件编码选择其他,输入GBK点击应用和关闭就可以了。

      重新编译程序就不会有乱码了。

Tools编译工具修改文件路径

      在开始搭建环境时没有将GD32EmbeddedBuilder和Tools两个文件夹放在一个文件夹下,所以导致编译的时候显示make文件没有找到而无法编译工程。后来发现Tools是编译工具,需要放在和GD32EmbeddedBuilder同一个路径下。

      修改Tools的方式也是右键项目点击属性,在C/C++构建下的环境中修改PATH的值。但是修改起来比较麻烦,所以建议将两个文件夹放在一起。

全部评论
暂无评论
0/144