Onboard LED
Every Core has one onboard LED on a dedicated pin — the simplest way to see firmware is alive. It’s really just a GPIO, so you can drive it at whichever level suits you: the core_* helpers, or the raw ll_gpio writes underneath. Use the Core / HAL / LL toggle at the top of the sidebar to switch.
Overview
The onboard LED is wired to a dedicated GPIO on every Core, auto-configured by core_init() — no pad to assign. How you drive it depends on the layer:
Core — header-only helpers (core_led_*): on / off / toggle plus blink and heartbeat patterns. The everyday path, and what Studio emits.
It’s also the SDK’s failure indicator: the fault handler blinks SOS on it.
On, off, toggle
The direct controls. toggle is non-blocking — good from an event handler that already fires at the rate you want:
#include "core.h"
core_led_on(); // light it
core_led_off(); // and off
core_led_toggle(); // flip — no delayPatterns
Two timed helpers. core_led_blink blinks a fixed number of times and blocks; core_led_heartbeat toggles + delays once per call, for a main-loop “alive” indicator:
core_led_blink(3, 100, 100); // 3 quick blinks, then return
while (1) {
do_work();
core_led_heartbeat(500); // ~1 Hz idle blink
}core_led_sos() blinks SOS forever and never returns — the fault handler already calls it for you.Cross-architecture support
The onboard LED is part of every Core’s baseline (and its GPIO underpinning is verified everywhere):
See the implementation status for the full matrix.
API reference
void core_led_on(void);void core_led_off(void);void core_led_toggle(void);void core_led_blink(int n, int on_ms, int off_ms);void core_led_heartbeat(int period_ms, int on_ms);void core_led_init(void);void core_led_sos(void);Generated from core_led.h — tiles@cf97a14.

