第1章 开发环境搭建:从零开始点亮第一颗LED
各位同学,咱们正式开始。做嵌入式开发,第一件事就是把家伙事儿备齐。MounRiver Studio 这个 IDE,说白了就是沁恒官方为 RISC-V 芯片量身定做的开发环境。我刚开始用的时候也觉得它界面有点「复古」,但用顺手了会发现,它对 CH32 系列的支持确实是最到位的。
1.1 MounRiver Studio 安装与配置
安装过程其实没什么玄学,但有几个细节我建议你留意一下。
- 下载地址:去沁恒官网找 MounRiver Studio,目前最新版是 MRS v1.9x 系列。别去第三方下载站,我吃过亏,下载了个捆绑了广告的版本。
- 安装路径:我个人习惯装到
D:\MounRiver这种纯英文路径下。为什么?因为有些插件对中文路径支持不好,你想想看,万一编译报错是因为路径里有中文,排查起来多冤枉。 - 驱动安装:安装完成后,插上开发板,系统会自动识别 WCH-Link 调试器。如果没识别,去安装目录下的
Driver文件夹手动装一下。嗯,这里要注意:Windows 10/11 需要先禁用驱动签名强制,不然驱动装不上。
1.2 CH32V307 开发板快速认识
咱们课程用的是 CH32V307VCT6 核心板。这块板子性价比很高,RISC-V 内核跑 144MHz,带以太网、USB、CAN 等外设,做物联网节点绰绰有余。
| 项目 | 参数 | 备注 |
|---|---|---|
| 主控芯片 | CH32V307VCT6 | RISC-V RV32IMAC |
| 主频 | 144MHz | 实际可超频到 160MHz |
| Flash | 256KB | 够用,但别浪费 |
| SRAM | 64KB | 注意堆栈分配 |
| 调试接口 | WCH-Link (SWD) | 板载,无需额外购买 |
| 板载 LED | PC0 (红灯) | 咱们第一个程序就点它 |
板子背面有个跳线帽,用来选择供电方式。我建议用 USB 供电,省事。如果你用外部电源,注意电压别超过 5V,否则芯片会冒烟——别问我怎么知道的。
1.3 第一个LED闪烁程序
好,现在咱们写代码。打开 MounRiver Studio,新建一个 CH32V307 工程。模板选「CH32V307_StdPeriph_Template」,这是官方标准外设库。
代码其实很简单,就是操作 GPIO 寄存器。我直接贴核心部分:
#include "ch32v30x.h"
void Delay(uint32_t count) {
while(count--);
}
int main(void) {
// 使能 GPIOC 时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
// 配置 PC0 为推挽输出,50MHz
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
while(1) {
GPIO_SetBits(GPIOC, GPIO_Pin_0); // 点亮 LED
Delay(500000);
GPIO_ResetBits(GPIOC, GPIO_Pin_0); // 熄灭 LED
Delay(500000);
}
}
RCC_APB2PeriphClockCmd 这个函数必须调用。我见过不少新手忘了开时钟,结果 GPIO 死活没反应。记住:RISC-V 的外设时钟默认是关闭的,你得手动打开。
编译一下,按 Ctrl+B。如果没报错,你会看到控制台输出 Build Finished。嗯,到这里代码部分就完成了。
1.4 调试器连接与验证
接下来是最激动人心的环节——下载程序。把开发板通过 USB 线连到电脑,打开设备管理器,确认出现 WCH-Link 设备。
- 在 MRS 里点击
Debug按钮(绿色小虫子图标)。 - 第一次调试会弹出配置窗口,选择
WCH-Link调试器,接口选SWD。 - 点击
Debug,程序会自动下载并停在main函数入口。 - 按
F8全速运行。
如果一切顺利,板子上的红色 LED 会以大约 1 秒的间隔闪烁。
Cannot connect to target。排查了半天,发现是调试器的 SWD 接口被板子上的其他外设占用了。解决办法:按住板子上的 RST 键,再点击 Debug,等开始下载时松手。这叫「冷启动下载」,对付顽固情况很管用。
1.5 本章知识体系
为了让你对整个流程有个全局印象,我画了一张图。这张图把从安装 IDE 到 LED 闪烁的完整链路串起来了。
这张图从左到右、从上到下,把整个流程分成了三个阶段:环境准备、代码开发、下载验证。你跟着这个流程走,基本不会出大问题。
1.6 常见问题与排查
最后,我列几个我实际遇到过的坑,你心里有个数:
- 编译报错找不到头文件:检查工程路径是否包含中文或空格。我建议所有工程都放在
D:\Workspace\CH32这种路径下。 - 下载成功但 LED 不亮:先确认板子供电正常,再用万用表量一下 PC0 引脚电平。如果一直是高电平,检查代码里有没有把引脚配置成复用功能。
- 调试器连接不稳定:换一根短一点的 USB 线,或者加一个 USB 磁环。我在现场调试时经常遇到干扰问题,磁环是神器。
好了,第一章的内容就到这里。你跟着操作一遍,把 LED 点亮了,这节课就算过关了。后面咱们会在这个基础上,逐步加入更多外设和通信协议。