Appendix D: Learning Path

This is a week-by-week study plan for working through this book. It assumes you can dedicate around 5-8 hours per week — some reading, some coding, some staring at a blinking LED wondering why it stopped blinking.

The Plan

WeeksChaptersFocusMilestone
1–21–4Setup and first blinkLED blinks, defmt logs appear in terminal
3–45–6GPIO and clocksButton toggles LED, clock configured for full speed
5–67–8Timers and interruptsPWM-controlled LED brightness, button interrupt
7–89–10UART and SPISerial terminal communication, SPI sensor reading
9–1011–14I2C, ADC, DMA, WatchdogI2C sensor working, ADC reads voltage, DMA transfer, watchdog active
11–1215–17Memory, patterns, sensor hubComplete multi-sensor system running
13+18–19Production and referenceUnderstand production considerations, have a reference to return to

Week-by-Week Details

Weeks 1–2: Getting Started (Chapters 1–4)

Goal: Get a working development environment and blink an LED.

This is where most people get stuck — not because the concepts are hard, but because toolchain setup has many small steps that must all be correct. Be patient. Once the LED blinks, you have crossed the hardest part.

  • Install Rust, probe-rs, and your IDE
  • Wire up your dev board and debugger
  • Create the project from the Cargo.toml template (Appendix C)
  • Flash and run, see defmt output
  • Blink an LED — celebrate, you have earned it

Weeks 3–4: GPIO and Clocks (Chapters 5–6)

Goal: Read a button, control an LED, understand the clock tree.

  • Read a physical button with debouncing
  • Configure the PLL to run the chip at full speed
  • Understand HSI vs HSE, PLL multiplication and division
  • Measure the actual clock frequency with a scope or timer

Weeks 5–6: Timers and Interrupts (Chapters 7–8)

Goal: Generate PWM, respond to hardware events asynchronously.

  • Fade an LED up and down with PWM
  • Set up a periodic timer interrupt
  • Understand Embassy's async model as an alternative to raw interrupts
  • Use a Ticker for precise periodic tasks

Weeks 7–8: Communication — UART and SPI (Chapters 9–10)

Goal: Talk to a computer and talk to a sensor.

  • Send and receive data over UART at 115200 baud
  • Read a SPI sensor (IMU or Flash memory)
  • Understand clock polarity, phase, and chip select
  • Use DMA for UART transmission

Weeks 9–10: More Peripherals (Chapters 11–14)

Goal: Use I2C, ADC, DMA, and the watchdog.

This is a dense two weeks. Four chapters with four different peripherals. Take it one at a time:

  • Week 9: I2C sensor (barometer or temperature) + ADC reading a potentiometer or battery voltage
  • Week 10: DMA for efficient data transfers + watchdog timer for system reliability

Weeks 11–12: Putting It All Together (Chapters 15–17)

Goal: Build the complete sensor hub from Chapter 17.

  • Understand memory architecture (especially if using H7)
  • Learn the embedded Rust patterns from Chapter 16
  • Combine everything into the multi-task sensor hub
  • Test each subsystem individually, then run everything together

Week 13 and Beyond (Chapters 18–19)

Goal: Think about production and keep the reference handy.

  • Read Chapter 18 to understand PCB design, testing, and chip selection
  • Bookmark Chapter 19 as your debugging reference
  • Start designing your own project

Think About It: The most important thing is to keep going when something does not work. Every embedded developer has spent an evening debugging a wiring mistake or a wrong clock configuration. The debug checklist in Chapter 19 exists because we have all been there.

Tips for Self-Study

  • Build every example. Reading code is not the same as running code. Type it out, flash it, and observe the result.
  • Break things on purpose. Set the wrong baud rate and see what happens. Swap SPI clock polarity. Remove the I2C pull-up resistors. Understanding failure modes is as important as understanding success.
  • Keep a lab notebook. Write down what you tried, what worked, and what did not. When you hit a similar problem six months later, your notes are invaluable.
  • Join the community. The Embassy Matrix chat and the Rust Embedded working group are welcoming to beginners. No question is too basic.