Microcontrollers

MIT-Licensed STM32C5 BluePill Clone Runs Oberon-2 Instead of C

MIT-Licensed STM32C5 BluePill Clone Runs Oberon-2 Instead of C

What you need on the bench

A breadboard, a USB-C cable, jumper wires, and one thing most BluePill tutorials skip: an SWD programmer. An ST-Link V2 clone runs about PHP 300 locally, and on this board it is not optional. The USB Type-C port carries power and serial traffic through a CH340E bridge, but it will not flash the chip. Wire SWDIO and SWCLK to the on-board header first, then worry about code.

The board itself

Norwegian engineer Runar Tenfjord, working through his company Tenko, published KiCad v10 design files and firmware for an STM32C5 board shaped exactly like the BluePill everyone already owns. Everything sits under the MIT license on GitHub, so you can fork the schematic, move a footprint, and send it to a fab without asking anyone. Tenfjord notes the STM32C5 family is new enough that supply was thin when he laid the board out, so he designed around an LQFP-48 footprint that should accept other variants as they land at distributors.

What is inside

The silicon is an STM32C551CE: one 32-bit Arm Cortex-M33 core at up to 144MHz, 128kB of SRAM, and 512kB of flash. Around it sit a 3.3V LDO regulator, a reset button, and a user LED and button for the first blink test. The interesting part is the toolchain. Alongside normal C/C++, the board supports ECSOberon, an embedded dialect of Oberon-2 with a native bit SET type that makes poking peripheral registers read like set arithmetic instead of shift-and-mask soup. Modules replace header files, so name collisions stop being a build problem. Tenfjord is honest about the tradeoffs: uppercase keywords everywhere, no preprocessor, and almost no example code, which means writing your own drivers from scratch.

Worth a weekend?

If you have ever wondered why embedded programming feels welded to C, this board is a cheap way to test that assumption on real hardware you can also program the boring way. Pull the KiCad project and firmware from the GitHub repo linked in Hackster’s write-up, check STMicro’s LQFP-48 stock before you commit to a variant, and flash a plain C blink over SWD before switching languages. If your ST-Link refuses to connect, hold reset while it probes; the C5 boots fast enough to lock the debug port on a cold start.

Frequently Asked Questions

Can you program this STM32C5 board over the USB-C port?

No. The Type-C connector handles power and serial data through the CH340E bridge only. Flashing goes through the on-board SWD header, so you need an ST-Link V2 or an equivalent programmer wired to SWDIO and SWCLK.

What does ECSOberon give you that C does not?

A built-in bit SET type, which turns register manipulation into set operations rather than shift-and-mask expressions, plus modules instead of header files so symbol collisions disappear. The cost is uppercase keywords, no preprocessor, and very little example code to copy from.

What will I learn if I build this?

Reading and modifying a real KiCad project, flashing a Cortex-M33 over SWD instead of a bootloader, checking a datasheet for pin-compatible LQFP-48 parts before ordering, and comparing two toolchains on identical hardware. That last skill is what separates a thesis project from a kit assembly.

This article was inspired by reporting from Hackster. Find the parts and modules to build it at Circuitrocks.

// written by Ann Arandia

Ann Arandia covers community projects and maker events for the Circuitrocks blog. She writes about local workshops, kid-friendly electronics, and the Philippine maker scene — the people, the meet-ups, the projects that come out of them.