STM32 Series #12: Optimization and Assembly in C

The compiler transforms code while preserving meaning — but forget volatile and it changes the meaning too. See how assembly changes between -O0 and -O2 with objdump, and close out 12 episodes with the ‘conditions for embedded mastery.’

May 8, 2026 · 26 min · 

STM32 Linker Script and Map File: Find What Eats Flash/RAM

“RAM is full!” “A variable is changing on its own…” The answer is in the map file. This episode covers what .text/.data/.bss really are, how to read a linker script, how to stop stack overflows — and what the 512,000-line Claude Code leak teaches us about map file hygiene.

May 2, 2026 · Updated: August 18, 2026 · 19 min · 

STM32 Series #10: DMA — Transfers That Free the CPU

Stop having the CPU send bytes one at a time — let DMA handle everything. By DMA-ifying UART transmission, the CPU is freed to do real work. Episode 10 builds intuition for throughput, latency, and bus contention.

April 30, 2026 · 16 min · 

STM32 Series #8: Interrupts — Vector Table, NVIC, Context

Why does polling fail when you need to ‘do something every 1ms’? Understand the vector table, NVIC, and context saving — then implement a 1ms periodic event with TIM2 interrupts.

April 17, 2026 · 24 min · 

STM32 Series #7: The Weight of a Single Clock Cycle

How many CPU cycles does ‘wait 1 second’ actually consume? Learn to measure execution time in µs using DWT CYCCNT, and internalize the embedded engineer’s iron rule: ‘you can’t discuss it without measuring it.’

April 8, 2026 · 20 min · 

STM32 Series #6: The Complete Pointer Accident Handbook

NULL dereference, dangling pointers, out-of-bounds array access, undefined behavior — we deliberately trigger the classic pointer land mines of embedded development and observe them under the debugger. Knowing how things break is the most powerful way to learn.

March 28, 2026 · 29 min · 

STM32 Series #5: Pointers as Typed Addresses

Demystify C’s most feared concept — pointers — from the core principle of ’typed addresses.’ What casts mean, how memory-mapped I/O connects to pointers, and what CMSIS headers are actually doing. Stop fearing pointers and start using them as a weapon.

March 25, 2026 · Updated: March 29, 2026 · 28 min · 

STM32 Series #0: Why Embedded Programming Looks Hard — Place and Time

Embedded programming looks hard because it requires awareness of ‘place’ (memory) and ’time’ (execution timing). What does it mean to operate hardware directly without an OS protecting you? This article explains the core mental model.

February 17, 2026 · 10 min · 

13-Part Series: The Embedded World Beyond Pointers

The next step after Arduino! Serious embedded programming with the STM32 microcontroller. Addresses, bits, and time — understand the essence of embedded systems step by step, building a solid mental model that applies to any platform.

February 12, 2026 · Updated: April 8, 2026 · 11 min ·