1. 课程导入

各位同学,欢迎来到《GD32V 实战》的第一章。咱们不绕弯子,直接聊点实在的。GD32V 这颗芯片,说白了就是一颗跑 RISC-V 内核的国产 MCU。我最早接触它是在一个工业控制项目里,当时客户要求国产化替代,又对成本敏感。试了一圈,发现 GD32V 在性能和价格之间找到了一个不错的平衡点。

这一章,我会带你搞清楚三件事:RISC-V 到底是个什么架构、GD32V 系列怎么选型、以及怎么把开发环境搭起来。嗯,环境搭建这块坑不少,我会把踩过的坑都指出来。

1.1 RISC-V 架构概述

RISC-V 是一个开放指令集架构。注意,是“开放”,不是“开源”。它由加州大学伯克利分校提出,现在由 RISC-V 基金会维护。你不需要向任何人交授权费,就能用它设计芯片。

为什么嵌入式圈子突然开始追捧 RISC-V?我个人觉得,核心原因就两个:

  • 免费:ARM 的授权费对中小公司来说不是小数目。RISC-V 零授权费,直接降低了芯片设计的门槛。
  • 可定制:RISC-V 把指令集分成了基础指令集(如 RV32I)和扩展指令集(如 M、F、D、C)。你可以按需裁剪,只保留需要的部分。

我记得第一次看 RISC-V 的指令集手册时,发现它居然只有几十条基础指令。相比之下,ARM 的指令集动辄几百条。精简带来的好处是:芯片面积更小、功耗更低、编译器也更容易优化。

核心概念:GD32V 使用的是 RV32IMAC 指令集组合。其中:

  • RV32I:32位基础整数指令集,必选
  • M:整数乘除法扩展
  • A:原子操作扩展
  • C:压缩指令扩展(16位指令,减少代码体积)

你可能会问:为什么没有浮点扩展(F/D)?因为 GD32V 定位是低成本 MCU,浮点运算靠软件模拟就够了。如果你需要硬件浮点,可以选带 FPU 的型号,比如 GD32VF103 系列的部分型号。

1.2 GD32V 系列芯片选型

GD32V 系列目前主要有两个子系列:GD32VF103 和 GD32VW553。我重点讲前者,因为它是目前最成熟、资料最多的系列。

型号 主频 Flash SRAM 特色外设 适用场景
GD32VF103C8T6 108 MHz 64 KB 20 KB 2x SPI, 2x I2C, 3x USART 通用控制、传感器采集
GD32VF103CBT6 108 MHz 128 KB 32 KB 2x SPI, 2x I2C, 3x USART 中等复杂度应用
GD32VF103RBT6 108 MHz 128 KB 32 KB 2x SPI, 2x I2C, 3x USART, USB OTG 需要 USB 通信的场景
GD32VF103VBT6 108 MHz 128 KB 32 KB 3x SPI, 2x I2C, 5x USART, USB OTG, DAC 复杂外设需求

选型时,我一般遵循这个原则:先看 Flash 和 SRAM 够不够用,再看外设接口数量是否满足需求。曾经有个项目,我选了 C8T6,结果发现 SPI 接口不够用,最后只能换 RBT6。嗯,选型时多留点余量,省得后面折腾。

选型小技巧:如果你不确定用哪个型号,直接选 GD32VF103CBT6。128KB Flash + 32KB SRAM 的组合,能覆盖大部分应用场景。而且这个型号供货最稳定,价格也适中。

1.3 开发板介绍

市面上常见的 GD32V 开发板主要有两种:官方评估板和第三方的核心板。

  • 官方 GD32VF103V-EVAL:功能最全,板载调试器、LCD、按键、LED、各种外设接口。适合评估芯片全部功能,但价格偏高(约 300 元)。
  • 第三方核心板(如 Sipeed Longan Nano):价格便宜(约 30 元),板载 GD32VF103CBT6、一个按键、两个 LED、一个 SPI 屏幕接口。适合入门学习。

我个人建议初学者先买一块 Longan Nano。便宜,坏了不心疼。而且它的原理图是公开的,方便你对照学习。等把基础外设驱动都调通了,再考虑上官方评估板做更复杂的验证。

1.4 开发环境搭建

环境搭建是新手最容易卡住的地方。我当年第一次搭 RISC-V 开发环境时,光工具链就折腾了两天。现在好多了,但该注意的点一个都不能少。

1.4.1 IDE 选择

目前主流的 GD32V IDE 有两个:

IDE 优点 缺点 推荐指数
Nuclei Studio 官方支持,开箱即用,集成调试器驱动 基于 Eclipse,界面稍旧 ★★★★★
PlatformIO + VSCode 现代化界面,插件丰富,跨平台 需要手动配置工具链路径 ★★★★☆

我建议新手直接用 Nuclei Studio。它集成了 RISC-V GCC 工具链、调试器驱动和 GD32V 的 SDK,装完就能用。PlatformIO 虽然更现代,但配置过程对新手不太友好。

1.4.2 调试器

GD32V 支持两种调试接口:JTAG 和 SWD。常用的调试器有:

  • J-Link:稳定可靠,但价格贵(正版上千)。如果你有现成的 J-Link,可以直接用。
  • DAP-Link:开源方案,成本低(几十块)。Longan Nano 板载的就是 DAP-Link。
  • GD-Link:兆易创新自家的调试器,兼容性好,价格适中。

避坑指南:我曾经用 J-Link 调试 GD32V 时,发现连接不稳定。后来查资料才知道,J-Link 的 RISC-V 支持需要固件版本在 V9.4 以上。如果你的 J-Link 版本太老,记得先升级固件。

1.4.3 SDK 与固件库

GD32V 的 SDK 可以从兆易创新官网下载。它包含:

  • 标准外设库(类似 STM32 的 HAL 库)
  • 启动文件与链接脚本
  • 示例工程(GPIO、UART、SPI、I2C 等)
  • FreeRTOS 移植(部分版本)

安装步骤很简单:

  1. 下载 Nuclei Studio 并安装
  2. 下载 GD32VF103 的 SDK 压缩包
  3. 解压 SDK 到工作目录
  4. 在 Nuclei Studio 中导入示例工程
  5. 连接开发板,编译并下载

嗯,这里有个细节:SDK 中的链接脚本(.ld 文件)是根据芯片型号配置的。如果你换了芯片型号,记得修改链接脚本中的 Flash 和 SRAM 大小,否则程序可能跑飞。

1.5 知识体系总览

下面这张图概括了本章的核心知识点。你可以把它当作一张地图,后续章节都会围绕这些模块展开。

GD32V 入门知识体系 GD32V 入门知识体系 RISC-V 架构 芯片选型 开发板 开发环境 Flash/SRAM 外设接口 官方评估板 第三方核心板 IDE 选择 调试器配置 SDK 安装 示例工程 学习路径建议 先理解 RISC-V 基础 → 选型 → 搭建环境 然后从 GPIO 开始,逐步深入外设驱动

1.6 第一个程序:点亮 LED

环境搭好了,咱们跑个程序验证一下。以 Longan Nano 为例,板载的 LED 连接在 PC13 引脚上(低电平点亮)。

#include "gd32vf103.h"

void delay(void) {
    for (volatile uint32_t i = 0; i < 500000; i++);
}

int main(void) {
    // 使能 GPIOC 时钟
    rcu_periph_clock_enable(RCU_GPIOC);
    
    // 配置 PC13 为推挽输出
    gpio_init(GPIOC, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_13);
    
    while (1) {
        gpio_bit_reset(GPIOC, GPIO_PIN_13);  // 点亮 LED
        delay();
        gpio_bit_set(GPIOC, GPIO_PIN_13);    // 熄灭 LED
        delay();
    }
}

这段代码很简单:使能时钟、配置 GPIO、然后循环翻转电平。编译下载后,如果 LED 开始闪烁,说明环境搭建成功了。

调试技巧:如果 LED 不亮,先检查调试器是否识别到芯片。在 Nuclei Studio 中点击“Debug Configurations”,查看 Target 选项里是否显示“RISC-V Core”。如果没有,检查调试器连接和驱动安装。