CH32V003: The $0.1 RISC-V MCU Getting Started Guide
From bare metal blink to USB device — everything you need to start with the world's cheapest RISC-V microcontroller.
Overview
The CH32V003 is WCH's entry-level RISC-V microcontroller based on the QingKe V2A core, running at 48MHz. At approximately $0.1 per unit, it is the world's most affordable RISC-V MCU, making it ideal for cost-sensitive IoT sensors, educational projects, and replacing traditional STM32F0/GD32E230 designs.
Key Specifications
| Core | QingKe RV32EC (RISC-V) |
| Max Frequency | 48 MHz |
| Flash | 16 KB |
| SRAM | 2 KB |
| Supply Voltage | 2.7V - 5.5V (wide voltage) |
| Debug Interface | SDI (single-wire debug) |
| Package | SOP8, SOP16, QFN20 |
Peripherals
- 1x ADC (10-bit, 10-channel)
- 1x OPA (operational amplifier)
- 1x Comparator
- 2x Timer (16-bit)
- 1x USART
- 1x I2C
- 1x SPI
- DMA controller
Development Environment
The official IDE is MounRiver Studio (MRS), a free Eclipse-based IDE specifically designed for WCH RISC-V chips. It includes:
- GCC RISC-V toolchain
- OpenOCD debug support
- Project templates for all CH32V series
- Peripheral register view
- One-click flash and debug
Download from: www.mounriver.com
Hardware Setup
You need a WCH-LinkE debugger (about $3) to flash and debug the CH32V003. Connect:
- WCH-LinkE SWDIO -> CH32V003 PD7 (SDI pin)
- WCH-LinkE GND -> CH32V003 GND
- WCH-LinkE 3V3 -> CH32V003 VDD
First Project: Blink LED
#include "ch32v00x.h"
int main(void) {
uint8_t led = 0;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
SystemCoreClockUpdate();
Delay_Init();
GPIO_InitTypeDef GPIO_InitStructure = {0};
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure);
while(1) {
GPIO_WriteBit(GPIOD, GPIO_Pin_0, (BitAction)led);
led = !led;
Delay_Ms(500);
}
}
Why CH32V003?
At $0.1, the CH32V003 is cheaper than most 8-bit MCUs while offering 32-bit RISC-V performance. It is the perfect entry point into the RISC-V ecosystem and an excellent replacement for STM32F030 in cost-sensitive designs.