1.开发板介绍:
近年来,物联网(IoT) 的爆炸式增长正在重塑全球科技产业的格局。据IDC预测,到2025年,全球物联网设备数量将突破 550亿台,其中智能家居、工业自动化、智慧城市等场景对 高速无线连接 与 低功耗计算 的需求愈发迫切在快速发展的物联网与智能设备时代,RISC-V 作为一种先进的开源指令集架构,正逐步成为业界的焦点。
中电港萤火工场推出基于兆易创新(GigaDevice)GD32VW553——一款RISC-V内核的32位MCU的开源硬件板GD32VW553-IOT。该板集成了主控芯片卓越的无线连接能力、强大的性能与能效比以及丰富的外设接口,可享受到开源社区带来的丰富资源和便利,极大地方便了开发者的快速部署和应用创新。

GD32VW553主控芯片拥有4MB FLASH,320KB SRAM,其余常用的外设也是一应俱全。而最大的优势在于同时板载了蓝牙与WIFI接口,这使得这款开发板具有强大的潜力,尤其是在物联网方面。
2.开发环境搭建
首先来到 兆易创新官网 下载

GD32EmbeddedBuilder:基于eclispe的集成开发环境(需要安装),用于编写代码和构建,编译
GD32AllInOneProgrammer:串口烧录软件(免安装),将编译生成的bin文件通过串口烧录到开发板上
GD32VW55x_Firmware_Library:标准固件库,里面包括示例程序等。
安装好GD32EmbeddedBuilder后打开,我们创建一个工程
首先选择开发语言,我这里选的是C

然后选择GD的RISC-V工具链

然后选择芯片型号,这里选择GD32VW553HMQ7

3.编写代码
打开新工程的main.c,里面已经默认生成了一些代码,我们首先来分析这些代码:

1.首先检查是否定义了__FIRMWARE_VERSION_DEFINE宏,如果定义了,则获取固件版本号并打印。
2.配置系统滴答定时器(SysTick)和异常控制器(EClic)的优先级分组。
3.初始化LED1、LED2、LED3、USART(串口通信)和按键(KEY_TAMPER_WAKEUP)。其中,LED的初始化是为了在后续可以控制它们的亮灭状态;USART初始化是为了可以在串口输出信息;按键初始化则允许程序检测按键状态。
4.再次检查_FIRMWARE_VERSION_DEFINE宏是否定义,如果定义,则打印固件版本信息到串口。
5.打印系统时钟、AHB总线时钟、APB1总线时钟和APB2总线时钟的频率。
6.进入无限循环,循环内部检查按键状态:
7.如果检测到按键按下(RESET),则延迟50毫秒再次检测按键状态,以防止误触发。
8.如果再次检测到按键处于按下状态(SET),则调用gd_eval_led_toggle(LED1);来切换LED1的亮灭状态。

led_spark()函数
这个函数用于控制LED2和LED3的闪烁效果。其工作原理如下:
1.定义了一个静态的__IO类型的uint32_t变量timingdelaylocal,用于记录延时计数值,并且这个变量的值在函数多次调用间保持不变。
2.函数内部通过这个延时变量来决定LED2和LED3的状态:
3.当timingdelaylocal大于0时,如果其值小于500,则调用gd_eval_led_on(LED2);和gd_eval_led_on(LED3);点亮LED2和LED3;否则调用gd_eval_led_off(LED2);和gd_eval_led_off(LED3);熄灭LED2和LED3。
4.每次调用该函数时,timingdelaylocal都会减1,以实现延时效果。
5.当timingdelaylocal等于0时,重新设置timingdelaylocal为1000,这样LED2和LED3每隔1000毫秒(即1秒)就会切换一次状态,实现闪烁效果。
那么,LED,KEY和串口的引脚在哪里定义呢?
转到gd32vw553h_eval.h,会发现这里已经写好了这些引脚的宏定义

而gd32vw553h_eval.c文件中,也写好了需要用到的初始化函数。
我们这里只需要点灯即可,其他的功能之后再测试,将主程序稍微修改:

这里A4引脚对应的就是默认程序中的LED1,我这里直接换成A4引脚,方便查看。
接着点击Project-》Build All,构建项目。
4.烧录代码并运行测试
打开GD32AllInOneProgrammer,使用一个USB转TTL模块将开发板与电脑连接,注意RX接PA6引脚,TX接PA7引脚

先选择开发板型号和串口,再进行连接,注意板子上的跳线帽要接成下图:


连接到电脑后,点击Download下载,按下开发板上的RESET按键,连接好电路,即可观察到LED闪烁。

