# cpq/bare-metal-programming-guide

A bare metal programming guide (ARM microcontrollers)

Repository: https://github.com/cpq/bare-metal-programming-guide
Canonical: https://ross.abutalabs.com/products/bare-metal-programming-guide
Language: C
License: MIT
License Family: permissive
Topics: baremetal, gcc, make, stm32, arm, cmsis, ethernet, gpio, tutorial, uart, irq, embedded-web-server, embedded-webserver, webserver
Last push: 2026-07-03T05:44:31+00:00

## Health v2 (maintenance only)
Score: 73/100 (v2, computed 2026-09-02T17:46:02.011165+00:00)
- activity 90, release rhythm 35, longevity 100
- inputs: {"age_days": 1448, "days_push": 61, "days_rel": null, "gap_med": null, "n_releases_24m": 0}
- flags: no_releases
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 4841, forks 445 (observed 2026-08-28T04:09:01.268770+00:00)

## What it is
An open-source tutorial guide teaching bare-metal ARM microcontroller programming using only GCC and datasheets, without frameworks. It includes progressively complete source code and template projects (blinky, CLI, littlefs, embedded web server) for several STM32 Nucleo boards.

## Use cases
- learn bare-metal embedded programming on ARM microcontrollers
- understand how embedded frameworks like Cube and Arduino work under the hood
- set up a GCC + Make toolchain for STM32 without an IDE
- implement UART command line interfaces on microcontrollers
- build an embedded web server with a device dashboard UI
- use littlefs to store data in flash memory on an MCU
- learn GPIO, interrupts, and peripheral programming from datasheets

## When to choose
- you want to learn microcontroller fundamentals without vendor frameworks
- you prefer working directly from datasheets with GCC and Make
- you need minimal bare-metal template projects for STM32 boards
- you want to understand what frameworks like Cube or Keil abstract away

## When to avoid
- you need a production framework or HAL with broad chip support
- you want rapid prototyping with Arduino-style convenience
- you target non-ARM or non-STM32 hardware not covered by the guide

## Facets
- artifact type: learning-resource
- maturity: active
- function: developer-tools, embedded, documentation, cli, gui
- domain: embedded-systems, tutorials, developer-tools, hardware
- platform: embedded, cross-platform, cli
- tags: bare-metal, stm32, arm-cortex-m, gcc, microcontrollers, embedded-web-server, gpio, uart, cmsis, tutorial

## Member repositories
- cpq/bare-metal-programming-guide (main) score 73

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:09:01.268770+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-29T18:18:27.780024+00:00, confidence not recorded.
  - readme: https://github.com/cpq/bare-metal-programming-guide (fetched 2026-08-28T04:09:01.268770+00:00, sha a0f8a710f359)
- Data as of 2026-08-30T08:39:29.467469+00:00.
