EmbeddedSprint
A two-week, self-directed embedded bootcamp on the STM32 NUCLEO-F446RE to bridge coursework and production firmware. I’m building and validating bare-metal drivers (GPIO/EXTI/Timers/UART/SPI/ADC/PWM), a repeatable toolchain (CubeMX/CubeIDE + CMake, ST-LINK/OpenOCD, gdb-multiarch), and small, testable modules. Status: in progress; core toolchain + GPIO/1 Hz blink + 50 ms debounced button are working; interrupts, UART ring buffer, SPI loopback, ADC+PWM, and a tiny FreeRTOS prototype are next.
Why this sprint exists
This project simulates the day-to-day of a junior embedded SWE: start from a blank NUCLEO-F446RE, stand up a clean toolchain, bring up peripherals one by one, and prove behavior with instruments and logs. Each day ships a small, working slice—GPIO debounce, EXTI, timers, UART ring buffer, SPI loopback, ADC+PWM—so progress is measurable and reviewable.
Architecture & toolchain (so far)
Hardware: STM32 NUCLEO-F446RE (Cortex-M4).
Firmware: C with STM32 HAL, CubeMX codegen kept in
firmware/; user logic inapp/.Build/Debug: CMake + arm-none-eabi-gcc, ST-LINK/OpenOCD, gdb-multiarch; post-build
.hex/.bin.Validation: UART logs (planned), scope/logic analyzer for timing, ctest hooks for host utilities.
Completed: 1 Hz blink, 50 ms debounced button; clean repo layout and flash target.
Next: EXTI button, timer-driven tasks, UART ring buffer, SPI loopback, ADC+PWM, small FreeRTOS demo.
Outcomes & next milestones
On completion, this page will include short demos and diagnostics for each module (GPIO/EXTI, timers, UART, SPI, ADC, PWM) plus a compact FreeRTOS example. The deliverable is a portable starter firmware stack and step-by-step bring-up guide that I can reuse on future boards (and hand to a team without surprises).
