Quickstart: your first build
The shortest path to something running: blink the onboard LED on a Core tile. Pick the path that suits you — both target the same hardware.
Path A — Studio (no install)
Studio runs in the browser, so there’s nothing to set up. You compose the system visually, simulate the firmware, then build a binary.
- 1
Open Studio and add a Core
Start a new project and drop a Core tile onto the canvas. The Core is the tile that runs firmware. - 2
Blink the onboard LED
Add a behavior that toggles the Core’s onboard LED on a timer. Studio shows it running live in the simulator — no hardware required yet. - 3
Build & flash
Hit Build to compile a firmware image, connect your Core over USB, and flash it. The real LED blinks.
Path B — The C SDK
Prefer to write firmware directly? Start from the template for your Core — a complete project (Makefile, config.json, main.c) that builds as-is. The folder name becomes the project name:
cp -r templates/core-st-l4-1 ~/dev/my-firmware
cd ~/dev/my-firmware
makeThere’s one template per Core, because the Cores differ in what they can do — the USB-capable ones come pre-wired for DFU flashing and self-recovery, the others for SWD. At the heart of each is a blink loop:
#include "core.h"
int main(void)
{
core_init();
core_led_init();
while (1) {
LED_TOGGLE();
core_delay_ms(250);
}
}What each line does
core_init() brings up the system clock at the level config.json asks for, along with anything else declared there. core_led_init() configures the onboard LED pad as a push-pull output. LED_TOGGLE() flips it, and core_delay_ms(250) waits a quarter second — so the LED cycles every 500 ms, a 2 Hz blink. The while (1) loop never exits; firmware runs until power is removed.
Build and flash
From the project directory — the template already knows which Core it’s for, so there’s nothing to pass:
make
# flash over USB (triggers the bootloader automatically)
make flash-dfuStarting from scratch instead of a template? Name the Core yourself with make TILE=Core.ST.L4.1 — that value is the Core’s catalog id.
TILE variant, and how DFU flashing works are covered in Install & flash.Once the LED blinks, you’ve got the full loop — edit, build, flash. From here, add a peripheral tile and read it from your firmware: the per-tile catalog pages document every driver. And as the firmware grows beyond main.c, just add more .c files to the project directory — the build compiles every source it finds there.

