1. GD32V开发环境搭建与点灯

GD32V开发环境搭建与点灯 学习卡片

任务目标

编写并运行一个最小程序,控制GD32V开发板上的板载LED点亮,以此熟悉GPIO输出配置与基本开发烧录流程。

硬件与依赖

  • 开发板:GD32VF103V-EVAL(或任意GD32VF103核心板,需确认LED引脚)
  • 工具链:RISC-V GCC工具链(riscv-none-embed-gcc)或Nuclei Studio IDE
  • 调试器:GD-Link或J-Link(用于烧录)
  • SDK:Nuclei SDK或GD32VF103标准固件库(本案例直接操作寄存器,不依赖固件库)

LED硬件连接

以GD32VF103V-EVAL板为例,板载LED(LED1)连接在PC6引脚,低电平点亮。若使用其他开发板,请查阅原理图确认LED对应引脚及点亮电平,修改下方代码中的端口和引脚宏即可。

关键完整代码

以下代码直接操作寄存器完成GPIO时钟使能、引脚模式配置和电平输出,不依赖任何库函数:

#include "gd32vf103.h"

// 若使用其他板卡,修改此处引脚定义
#define LED_GPIO_PORT    GPIOC
#define LED_GPIO_PIN     GPIO_PIN_6
#define LED_GPIO_CLK     RCU_GPIOC

int main(void)
{
    // 1. 使能GPIOC时钟
    rcu_periph_clock_enable(LED_GPIO_CLK);

    // 2. 配置PC6为推挽输出,最大速度50MHz
    gpio_init(LED_GPIO_PORT, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, LED_GPIO_PIN);

    // 3. 输出低电平,点亮LED(低电平点亮)
    gpio_bit_reset(LED_GPIO_PORT, LED_GPIO_PIN);

    while(1)
    {
        // 保持点亮状态
    }
}

若你的开发板LED为高电平点亮,将第3步改为gpio_bit_set(LED_GPIO_PORT, LED_GPIO_PIN);即可。

编译与烧录

在Nuclei Studio中新建RISC-V C工程,将上述代码放入main.c,编译生成.hex或.elf文件。使用GD-Link通过OpenOCD烧录:

openocd -f interface/gd-link.cfg -f target/gd32vf103.cfg -c "program build/led.elf verify reset exit"

若使用命令行工具链,编译命令参考:

riscv-none-embed-gcc -march=rv32imac -mabi=ilp32 -O2 -nostartfiles -T link.ld main.c -o led.elf

验证方法

烧录成功后,观察开发板上连接PC6的LED灯状态:

  • 通过条件:LED持续点亮且不闪烁,程序正常运行。
  • 若LED不亮,依次检查:
    ① 电源是否正常;
    ② 烧录是否成功(调试器连接是否正常);
    ③ LED引脚与代码定义是否一致(对照原理图);
    ④ 点亮电平是否正确(低/高电平点亮)。

常见问题

  • 编译报错找不到gd32vf103.h:确认SDK头文件路径已加入工程包含目录。
  • 烧录后无反应:先确认调试器驱动安装正确,再检查LED引脚是否被其他外设复用。
  • LED闪烁而非常亮:检查是否有看门狗或中断服务程序干扰,本案例未使能任何中断,不应出现此现象。