MounRiver Studio与WCH-Link实战:从零搭建CH32V103C开发环境与双LED控制

张开发
2026/4/17 5:33:39 15 分钟阅读

分享文章

MounRiver Studio与WCH-Link实战:从零搭建CH32V103C开发环境与双LED控制
1. 环境准备与工具安装第一次接触RISC-V开发板的朋友可能会被一堆专业术语吓到其实搭建CH32V103C开发环境比想象中简单。我去年刚开始用这款板子时也走了不少弯路现在把最顺手的配置方案分享给大家。必备工具清单MounRiver Studio最新版V1.80以上WCH-Link调试器建议用原厂版本CH32V103C开发板带Type-C接口的EVT板最佳杜邦线若干建议选用彩色线方便区分注意WCH官网提供的CH32V103EVT.ZIP压缩包一定要下载里面包含原理图、例程等关键资料解压后建议单独建个文件夹存放。安装MounRiver Studio时有个小技巧路径不要有中文和空格我遇到过因为安装路径含中文导致编译失败的情况。安装完成后记得勾选Add to PATH选项这样后续命令行操作会方便很多。第一次启动时可能会提示安装Java环境按照指引操作即可。2. 硬件连接实战技巧很多新手在连接WCH-Link时容易搞错线序这里我用实际接线图说明。拿出你的杜邦线按这个顺序连接WCH-Link引脚 → 开发板接口 SWCLK → P8的PA14时钟线 SWDIO → P8的PA13数据线 GND → P8的GND地线 5V → P8的5V供电线 TX → P9的PA10串口发送 RX → P9的PA9串口接收实测发现用彩色杜邦线可以大幅降低接错概率比如红色接5V黑色接GND黄色接信号线。接好后建议拍照留存下次调试时就不用反复查手册了。开发板上的LED1默认连接PA0引脚我们需要再找个LED接PA1引脚实现双灯控制。如果没有额外LED用万用表测量PA1引脚电压变化也能验证效果。我常用这种带鳄鱼夹的测试线比直接插杜邦线更稳固。3. 工程配置关键步骤打开MounRiver Studio后按CtrlShiftN导入GPIO_Toggle例程。这里有个容易踩的坑例程路径不能有中文我遇到过因为桌面文件夹名为桌面导致编译报错的情况。编译前必查三项项目属性 → C/C Build → Tool Chain路径是否正确项目属性 → Debugger → WCH-Link配置是否选择RISC-V模式项目属性 → Target → 芯片型号是否为CH32V103C8T6第一次下载程序时可能会弹出固件升级提示这是正常现象。我测试过不同版本的WCH-Link固件建议升级到最新版当前是V2.5。升级过程中不要断开USB连接整个过程约1分钟。4. 双LED控制代码详解原始例程只能控制单LED我们通过修改GPIO初始化代码实现双灯控制。关键改动点在GPIO_Toggle_INIT函数void GPIO_Toggle_INIT(void) { GPIO_InitTypeDef GPIO_InitStructure {0}; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // 修改点同时配置PA0和PA1两个引脚 GPIO_InitStructure.GPIO_Pin GPIO_Pin_0 | GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed GPIO_Speed_2MHz; GPIO_Init(GPIOA, GPIO_InitStructure); }主循环里的控制逻辑也要相应调整。我推荐这种写法可读性更好while(1) { // 第一种状态LED1亮LED2灭 GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_RESET); GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_SET); printf(LED状态: ● ○\r\n); Delay_Ms(1000); // 第二种状态LED1灭LED2亮 GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_SET); GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_RESET); printf(LED状态: ○ ●\r\n); Delay_Ms(1000); }串口打印用●○符号可以直观显示LED状态调试时一眼就能看出问题。如果发现LED亮灭状态与预期相反检查开发板LED电路是共阳还是共阴接法必要时对Bit_SET/Bit_RESET取值取反。5. 调试技巧与常见问题问题1下载失败提示No target connected检查WCH-Link模式指示灯是否为红色RISC-V模式重新插拔USB线试试在MounRiver Studio的Flash → Download Configuration里重置调试器问题2串口打印乱码确认波特率设置为115200检查TX/RX线是否接反尝试更换串口工具推荐使用Tera Term问题3LED不亮但代码已下载成功用万用表测量PA0/PA1引脚电压是否变化检查LED限流电阻是否合适1KΩ较稳妥确认LED正负极没有接反我习惯在代码里添加版本信息这样通过串口就能确认运行的是最新程序printf(双LED控制程序 v1.2\r\n); printf(编译时间: %s %s\r\n, __DATE__, __TIME__);6. 进阶功能拓展掌握基础控制后可以尝试更复杂的效果。比如用PWM实现呼吸灯// 在初始化中添加TIM1配置 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure {0}; RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); TIM_TimeBaseStructure.TIM_Period 255; TIM_TimeBaseStructure.TIM_Prescaler 0; TIM_TimeBaseStructure.TIM_ClockDivision 0; TIM_TimeBaseStructure.TIM_CounterMode TIM_CounterMode_Up; TIM_TimeBaseInit(TIM1, TIM_TimeBaseStructure); // PWM输出配置 TIM_OCInitTypeDef TIM_OCInitStructure {0}; TIM_OCInitStructure.TIM_OCMode TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse 0; TIM_OCInitStructure.TIM_OCPolarity TIM_OCPolarity_High; TIM_OC1Init(TIM1, TIM_OCInitStructure); TIM_CtrlPWMOutputs(TIM1, ENABLE); TIM_Cmd(TIM1, ENABLE);然后在主循环中修改占空比就能看到灯光渐变效果。通过这个案例你会发现RISC-V开发其实和STM32有很多相似之处关键是掌握外设配置方法。

更多文章