一、资料获取
开发者可通过兆易创新的官网获取关于该板卡的全套资料,链接: GD32VW5全部资料。
主要包含:
①、编译IDE:EmbeddedBuilder_v1.4.7.26843.7z
②、板卡SDK工程:GD32VW55x_Demo_Suites_V1.2.0.7z
③、程序烧录软件:GD32AllInOneProgrammer_win_V4.2.10.28180.7z
④、如附件中的“GD32VW55原理图”,“GD32VW553-IOT用户手册”,“GD32VW553-IOT硬件规格书”
二、编译环境搭建
1、由于该开发板是基于RISC-V内核,因此采用的IDE是基于类似Eclipse的EmbeddedBuilder工具,下载完“EmbeddedBuilder_v1.4.7.26843.7z”文件后,直接解压到不含中文、空格字符的文件夹路径中。该工具无需安装,直接打开路径下“EmbeddedBuilder_v1.4.7.26843\EmbeddedBuilder”中的“Embedded Builder.exe”文件即可运行。在该工具的“EmbeddedBuilder_v1.4.7.26843\Tools”文件夹下存放各编译工具链,压缩包中已包含,打开该工具自动会加载进编译环境中。
2、将下载的“GD32VW55x_Demo_Suites_V1.2.0.7z”文件解压,将“GD32VW55x_Demo_Suites_V1.2.0\GD32VW553H_EVAL_Demo_Suites\Projects\01_GPIO_Running_LED”目录加载到EmbeddedBuilder中,然后编译,“GD32VW55x_Demo_Suites_V1.2.0\GD32VW553H_EVAL_Demo_Suites\Projects\01_GPIO_Running_LED\eclipse\GD32VW553xM”目录下生成了“GD32VW553H_EVAL.bin”文件,说明完成编译环境的搭建。
三、代码编写
原工程代码中,采用GPIOA_4,GPIOA_5,GPIOA_6三个引脚做为控制LED灯的信号脚,板上并无焊接LED,结合“用户手册”可知,GPIOA_6与GPIOA_7做为UART2的复用管脚,因此,如果采用UART2接口去烧录程序,接口上存在冲突。笔者这里使用GPIOB_11,GPIOB_12,GPIOB_13做为驱动RGB灯的三个信号脚。自制的RGB灯板模块是采用共阴性,因此给高电平则点亮LED灯。
#include "gd32vw55x.h"
#include "systick.h"
#include <stdio.h>
#include "gd32vw553h_eval.h"
#define Time 500
/*!
\brief main function
\param[in] none
\param[out] none
\retval none
*/
int main(void)
{
systick_config();
/* enable the LED clock */
rcu_periph_clock_enable(RCU_GPIOB);
/* configure LED GPIO port */
gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13);
/* reset LED GPIO pin */
gpio_bit_reset(GPIOB, GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13);
while(1) {
/* turn on LED1, turn off LED3 */
gpio_bit_set(GPIOB, GPIO_PIN_11);
gpio_bit_reset(GPIOB, GPIO_PIN_13);
delay_1ms(Time);
/* turn on LED2, turn off LED1 */
gpio_bit_set(GPIOB, GPIO_PIN_12);
gpio_bit_reset(GPIOB, GPIO_PIN_11);
delay_1ms(Time);
/* turn on LED3, turn off LED2 */
gpio_bit_set(GPIOB, GPIO_PIN_13);
gpio_bit_reset(GPIOB, GPIO_PIN_12);
delay_1ms(Time);
/* turn on LED1,LED2,turn off LED3 */
gpio_bit_set(GPIOB, GPIO_PIN_11);
gpio_bit_set(GPIOB, GPIO_PIN_12);
gpio_bit_reset(GPIOB, GPIO_PIN_13);
delay_1ms(Time);
/* turn on LED2,LED3,turn off LED1 */
gpio_bit_set(GPIOB, GPIO_PIN_12);
gpio_bit_set(GPIOB, GPIO_PIN_13);
gpio_bit_reset(GPIOB, GPIO_PIN_11);
delay_1ms(Time);
/* turn on LED3,LED1,turn off LED2 */
gpio_bit_set(GPIOB, GPIO_PIN_13);
gpio_bit_set(GPIOB, GPIO_PIN_11);
gpio_bit_reset(GPIOB, GPIO_PIN_12);
delay_1ms(Time);
/* turn on LED1,LED2,LED3 */
gpio_bit_set(GPIOB, GPIO_PIN_11);
gpio_bit_set(GPIOB, GPIO_PIN_12);
gpio_bit_set(GPIOB, GPIO_PIN_13);
delay_1ms(Time);
}
}
四、硬件准备
收到的GD32VW553-IOT开发板两边的管脚是没焊接插针的,因此需要先手动焊接好2.54mm插针,当然焊插座也行。至于排针靠正面焊接还是靠底面焊接,根据个人需要吧,怎么方便怎么来。这里笔者将插针焊接在底面,正面可使用杜邦线直连针脚;如若将插针焊接在正面,使用底面上的排针接入面包板中,也是比较方便的。排针焊好后,下载程序需要采用串口调试工具,即USB转TTL模块。还有准备一块共阴极的RGB灯板模块。
五、硬件连线
这里笔者采用UART2接口烧写程序,由于更新程序需要注意boot模式,结合“用户手册”可知。
因此J3处的跳线帽设置如下:运行应用程序时,boot0,boot1的跳线帽均靠板上天线这边;运行bootloader,烧录程序时,boot0需要拉高,即将boot0处的跳线帽连接换成靠Type-C接口边。
结合上面的部分原理图可知,boot0拉高时与R4电阻相连,而板上实物并没有焊接该1KΩ电阻,因此进入bootloader需要手动将boot0拉高,即使用一根杜邦线将PC8与3V3短接,或者镊子短接。硬件实物连接如下:
六、烧录程序
打开“GD32AllInOneProgrammer.exe”烧录软件,设置J3跳线帽,将PC8与3V3短接,使板子进入bootloader阶段。硬件连线示意图如下:
接着在烧录软件中选择串口模块烧写,连接好当前的串口号,选择对应的设备型号,加载刚才编译完成后生成的hex文件,最后点击“Download”即可完成程序烧录。
七、点灯效果
烧录完成后,再将J3处的boot0跳线帽调过来,即将boot0拉低,然后重启开板后,点灯程序则更新ok,正如下图所示。个人感觉该板设计存在些许不足之处,小板底面并没有将管脚丝印标识;跳线帽易脱落,而且这种不太好找,本人使用一根杜邦线的插孔,压扁来代替掉落的跳线帽;板上的电阻有缺失焊接,且板上并无设置用户LED,但demo工程中有点灯设置。以上种种也许是该板比较新的原故吧,希望萤火工场做进一步优化,也期待萤火工场推出越来越多的新品,越办越红火!

