1. 点亮LED
任务目标
编写并运行一个最小程序,控制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闪烁而非常亮:检查是否有看门狗或中断服务程序干扰,本案例未使能任何中断,不应出现此现象。