// the find
libopencm3/libopencm3
Open source ARM Cortex-M microcontroller library
libopencm3 is a bare-metal C firmware library for ARM Cortex-M microcontrollers, written from scratch against vendor datasheets rather than wrapping vendor SDKs. It targets embedded developers who want a clean, open alternative to ST's HAL or NXP's SDK and are comfortable working without an RTOS abstraction layer.
The from-scratch approach means no vendor SDK baggage — register definitions and peripheral drivers are derived directly from datasheets, so you know exactly what you're getting. STM32 coverage is genuinely deep: F0/F1/F2/F3/F4/F7/H7/G0/G4/L0/L1/L4 series all present, which covers most real projects. The git submodule + static library model is the right call for embedded — you pin an exact version, nothing drifts at build time. IRQ tables are generated from JSON descriptors, so adding a new MCU variant doesn't require manually counting interrupt slots.
Nordic NRF51/52 support is skeletal — you'll find clock, GPIO, and UART but no SoftDevice integration or BLE stack hooks, making it basically useless for anything that actually uses the radio. API stability before 1.0 is still a concern: the README explicitly warns to expect breaking changes, and the project has been 'pre-1.0' for over a decade. The EFM32 support is listed as 'only core support' and hasn't materially grown. Documentation is Doxygen auto-generated from headers — useful for looking up register names, not useful for understanding how peripherals interact or what initialization order matters.