STM32F103C8 V/S GD32VF103Cx¶
These two MCU’s have totally different CORES, yet many of the PERIPHERALS are identical and both have Mecrisp Forth support, so this is a comparison page.
Note re GD32VF103Cx conditional branch range¶
Just a small correction: you mention that the conditional branches range is +/-2048 bytes, which is not exact. Since instructions can only be
aligned to 4 bytes, or 2 bytes for compressed instructions, the 12-bit offset actually encodes an offset that is in multiples of 2 bytes, which
is clever, so the range is +/-4096 bytes.
Mecrisp Support¶
| MCU | Mecrisp Variant | Status | Tarball URL | 
|---|---|---|---|
| STM32F103C8 | Mecrisp-Stellaris | Stable | https://sourceforge.net/projects/mecrisp/files/mecrisp-stellaris-2.5.2.tar.gz/download | 
| GD32VF103Cx | Mecrisp-Quintus | Experimental | https://sourceforge.net/projects/mecrisp/files/mecrisp-quintus-0.26-experimental.tar.gz/download | 
Note
Mecrisp-Quintus for the GD32VF103Cx is still experimental because the INTERRUPT support is not finalised.
Specifications¶
| Parameter | STM32F103C8 | GD32VF103Cx | 
|---|---|---|
| Architecture | 32-bit ARM Cortex M3 | 32 bit RISC-V | 
| Operating Voltage | 2.7V to 3.6V | 2.6v to 3.6V | 
| CPU Frequency | 72 MHz | 108 MHz | 
| Number of GPIO pins | 37 | 37 ? | 
| Number of PWM pins | 12 | ? | 
| Analog input Pins | 10 (12-bit) | ? | 
| ADC | 1 | 2 | 
| DAC | 0 | 1 | 
| SDIO | 1 | 0 | 
| USART | 3 | 3 | 
| UART | 0 | 2 | 
| I2C | 2 | 2 | 
| SPI | 2 | 3 | 
| Can 2.0 | 1 | 2 | 
| Timers | 4 | 7 | 
| Flash Memory | 64kB stated, usually 128kB | 128kB | 
| RAM | 20kB | 32kB | 
| Peripherals | 33 | 46 | 
| Registers | 466 | 1074 | 
| Bitfields | 3503 | 7713 | 
Peripherals¶
| STM32F103C8 | STM32F103C8 Peripheral | GD32VF103Cx | GD32VF103Cx Peripheral | 
|---|---|---|---|
| . | ADC0 | ||
| ADC1 | ADC1 | ||
| AFIO | Alternate function I/O | AFIO | |
| BKP | Backup registers | BKP | |
| CAN | CAN0 | ||
| . | CAN1 | ||
| CRC | CRC | ||
| . | DAC | 12 bit digital to analog converter | |
| DBG | Debug support | DBG | |
| DMA1 | DMA0 | ||
| DMA2 | DMA1 | ||
| . | EXMC | External memory controller (EXMC) | |
| EXTI | External interrupt/event controller | EXTI | External interrupt/event controller | 
| FLASH | FMC | Flash memory controller (FMC) | |
| GPIOA | GPIOA | ||
| GPIOB | GPIOB | ||
| GPIOC | GPIOC | ||
| GPIOD | GPIOD | ||
| I2C1 | I2C0 | ||
| I2C2 | I2C1 | ||
| IWDG | Independent watchdog | FWDGT | Free watchdog timer (FWDGT) | 
| NVIC | Nested Vectored Interrupt Controller | ECLIC | Enhancement Core.Local Interrupt Controller (ECLIC) | 
| PWR | Power control | PMU | Power management unit (PMU | 
| RCC | Reset and clock control | RCU | Reset and clock unit (RCU | 
| RTC | Real time clock | RTC | |
| SDIO | Secure digital input/output interface | . | |
| . | SPI0 | ||
| SPI1 | SPI1 | ||
| SPI2 | SPI2 | ||
| TIM1 | Advanced timer | TIMER0 | Advanced-timers | 
| TIM2 | General purpose timer | TIMER1 | General-purpose-timers | 
| TIM3 | General purpose timer | TIMER2 | General-purpose-timers | 
| TIM4 | General purpose timer | TIMER3 | General-purpose-timers | 
| . | TIMER4 | General-purpose-timers | |
| . | TIMER5 | Basic-timers | |
| . | TIMER6 | Basic-timers | |
| USART1 | Universal synchronous asynchronous receiver transmitter | USART0 | Universal synchronous asynchronous receiver transmitter | 
| USART2 | USART1 | ||
| USART3 | USART2 | ||
| . | UART3 | Universal asynchronous receiver transmitter | |
| . | UART4 | ||
| USB | Universal serial bus full-speed device | USBFS_DEVICE | USB on the go full speed device | 
| . | USBFS_GLOBAL | USB full speed global registers | |
| . | USBFS_HOST | USB on the go full speed host | |
| . | USBFS_PWRCLK | USB on the go full speed power and clock gating control | |
| WWDG | Window watchdog | WWDGT | Window watchdog timer | 
ISA Comparisons¶
| Description | RISC-V | Thumb | 
|---|---|---|
| Conditional branches | 
 | signed 8-bit (-256 to +256 bytes) | 
| Register Load-Store Immediate | A base register Rn plus a 5-bit immediate | |
| Peripherals reset to default | ? | SYSRESETREQ | 
- RISC-V Conditional branch workaround: invert the sense of the test and conditionally branch over an unconditional branch with more offset bits. 
Premade Boards¶
See also
RISC-V¶
Sipeed Longan Nano¶
RISC-V GD32VF103CBT6 Development Board
https://www.seeedstudio.com/Sipeed-Longan-Nano-RISC-V-GD32VF103CBT6-Development-Board-p-4205.html $4.90 USD
 
Wio Lite RISC-V (GD32VF103) - With ESP8266¶
Wio Lite RISC-V is a feather form factor RISC-V development board Based on GD32VF103, with the onboard ESP8266 Wio Core, it also features WiFi function.
https://www.seeedstudio.com/Wio-Lite-RISC-V-GD32VF103-p-4293.html $6.90 USD
 
Polos GD32V Alef¶
Polos GD32VF103 Alef Board – RISC-V MCU Board with 128KB Flash 32KB RAM
https://www.analoglamb.com/product/polos-gd32v-alef-board-risc-v-mcu-board/ $2.99 USD
 
STM32F103C8¶
Blue Pill¶
Available everywhere on the Internet around $2USD
See also
See also
 
