第一次使用GD32VW553V2开发板,拿到手后我最先惊讶于它的小巧,相比于其他的开发板明显小了一圈。同时它的做工也非常不错;

使用的时候自带的按键挺好用的;
蓝牙和wifi功能还没来得及测试,下一步准备试试蓝牙功能;
C口下载也是很不错的功能,就是BOOT有点小,要是再方便拨动一点就好了。
整体图(使用一同邮寄过来的排针焊接):


这个弯的排针不是很方便插入面包板,建议还是用直的。
接下来是使用官方的程序进行LED灯的点亮:
主要是使用以下两个软件,这两个软件可以在商城的资料下载中找到

在资料下载中的这个位置:

解压后打开GD32EmbeddedBuilder,依次进行如下图中的操作新建文件:

点击project

点击C Project

选择RISC-V C Project,并且输入一个项目名称

进行上图中选择后点击Finish即完成新项目创建
新项目创建完成后自带官方写好的程序,可以直接编译烧录然后电灯,我们先编译一下

点击小锤子,就可以开始了,时间有点久,我们先看看别的
按住键盘ctrl,左键点击即可查看定义

我们可以看到LED2和3分别对应PA5和PA6,这就是我们等下要连接的引脚
等待完成后,我们通过properties找到bin文件的位置,复制地址


然后在将BOOT1拨至ON,BOOT2不变,C口连接电脑,打开烧录程序
烧录程序和我选择一样的,除了串口,串口选择对应的

点击download下载,下在完成后记得将BOOT1拨回原来的位置,然后连接电路如图,LED灯闪烁

如果没有拨回BOOT1的话,会出现LED2微亮(对应PA5),LED3不亮(对应PA6)的情况
我试着用我示波器测了下引脚,对应的是
PA5一直维持在3.3V-3.4V之间

PA6则是一直在0V:

以后大家遇到类似的情况可以借鉴下,不要像我一样检查半天,还以为是给板子焊坏了
然后是按键控制LED灯的反转
板子自带的按键为PB11,如下图:

自带的LED灯为PB2,如下图:

然后是删除main函数,复制如下代码至main函数:
#include "gd32vw55x.h"
#include "systick.h"
#include "gd32vw553h_eval.h"
// 定义引脚
#define KEY_PIN GPIO_PIN_11
#define KEY_PORT GPIOB
#define LED_PIN GPIO_PIN_2
#define LED_PORT GPIOB
// 按键状态
#define KEY_PRESSED 0 // 按键按下(假设低电平有效)
#define KEY_RELEASED 1 // 按键释放
// 全局变量
volatile uint8_t key_state = KEY_RELEASED;
volatile uint8_t led_state = 0; // 0:熄灭, 1:点亮
// 函数声明
void gpio_config(void);
uint8_t gpio_level_read_stable(void);
int main(void)
{
// 系统初始化
systick_config();
gpio_config();
// 初始状态:LED熄灭
gpio_bit_reset(LED_PORT, LED_PIN);
led_state = 0;
while(1) {
// 检测按键状态
uint8_t current_key_state = gpio_level_read_stable();
if(current_key_state == KEY_PRESSED && key_state == KEY_RELEASED) {
// 按键按下
key_state = KEY_PRESSED;
// LED状态反转
if(led_state == 0) {
// 点亮LED
gpio_bit_set(LED_PORT, LED_PIN);
led_state = 1;
} else {
// 熄灭LED
gpio_bit_reset(LED_PORT, LED_PIN);
led_state = 0;
}
// 等待按键释放
while(gpio_level_read_stable() == KEY_PRESSED) {
delay_1ms(10);
}
key_state = KEY_RELEASED;
}
delay_1ms(10); // 防止过于频繁的检测
}
}
// GPIO配置
void gpio_config(void)
{
// 启用GPIOB时钟
rcu_periph_clock_enable(RCU_GPIOB);
// 配置按键引脚(PB11)为上拉输入
gpio_mode_set(KEY_PORT, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_PIN);
// 配置LED引脚(PB2)为输出
gpio_mode_set(LED_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, LED_PIN);
gpio_output_options_set(LED_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, LED_PIN);
// 初始状态:LED熄灭(低电平)
gpio_bit_reset(LED_PORT, LED_PIN);
}
// 带防抖的按键电平读取
uint8_t gpio_level_read_stable(void) {
uint8_t level1, level2, level3;
level1 = gpio_input_bit_get(KEY_PORT, KEY_PIN);
delay_1ms(5);
level2 = gpio_input_bit_get(KEY_PORT, KEY_PIN);
delay_1ms(5);
level3 = gpio_input_bit_get(KEY_PORT, KEY_PIN);
return (level1 == level2 && level2 == level3) ? level1 : level2;
}
并且,在gd32vw55x_it.c中删除或注释掉led_spark(),如下图

然后重复之前的步骤烧录进板子就可以实现按键控制LED灯翻转了

本文章结束,最近时间比较少,有时间的话还是想玩玩板子的蓝牙、wifi等功能,感觉这板子还是很有意思的,之后如果有时间的话还是会发布相关的测评

