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 移植(部分版本)
安装步骤很简单:
- 下载 Nuclei Studio 并安装
- 下载 GD32VF103 的 SDK 压缩包
- 解压 SDK 到工作目录
- 在 Nuclei Studio 中导入示例工程
- 连接开发板,编译并下载
嗯,这里有个细节:SDK 中的链接脚本(.ld 文件)是根据芯片型号配置的。如果你换了芯片型号,记得修改链接脚本中的 Flash 和 SRAM 大小,否则程序可能跑飞。
1.5 知识体系总览
下面这张图概括了本章的核心知识点。你可以把它当作一张地图,后续章节都会围绕这些模块展开。
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”。如果没有,检查调试器连接和驱动安装。