A bare-metal STM32F429I-Discovery project built without a vendor framework.

The project starts from startup code and a linker script, configures the microcontroller directly through registers, and gradually builds toward more complete board functionality.

STM32F429I Discovery demo

Current scope

  • custom interrupt vector table and startup code
  • custom GNU linker script
  • register-level peripheral configuration
  • 168 MHz clock configuration
  • SysTick millisecond timebase
  • on-board LED control
  • USART2 debug output
  • SPI ILI9341 LCD bring-up
  • EXTI user/external button handling
  • RGB565 sprite rendering
  • Make and optional CMake build flows
  • OpenOCD flashing

Why this repository exists

The goal is to keep the hardware visible rather than hiding it behind a framework:

reset
  |
  v
startup code
  |
  v
linker-defined memory layout
  |
  v
clock / SysTick / GPIO / USART / SPI / EXTI
  |
  v
display + input
  |
  v
small interactive demos

It is both a working firmware project and a progressively documented bare-metal reference.

View the source on GitHub