Wrap-Up & Next Steps

What You Learned Today

The Mental Model

Create → Configure → Control — it works for every peripheral, every HAL, every driver crate.

StepWhat You DoWhere in the Docs
CreateInstantiate a driverStruct page → new() or builder
ConfigureSet behavior optionsConfig structs, enums
ControlRead/write/interactTrait implementations, methods

The Ecosystem Layers

BSP → Driver Crates → embedded-hal → HAL → PAC → Hardware

You've worked at every level. You know what each layer does and how to read its documentation.

The Workflow

Working example → Read the docs → Adapt → Extend

The example shows ONE way. The docs show ALL ways. Your job is to explore.

Where to Go From Here

Keep Learning with uFerris

Your uFerris board has more peripherals to explore:

  • SPI — faster serial communication (displays, SD cards)
  • ADC — read analog values (potentiometers, light sensors)
  • PWM — control LED brightness, servo motors
  • ESP-NOW — wireless communication between ESP32 devices

Same pattern: find the module in esp-hal docs, Create → Configure → Control.

Level Up with Async

Embassy is an async runtime for embedded Rust. Instead of interrupt handlers with mutexes, you write async/await code:

#![allow(unused)]
fn main() {
// Instead of interrupt handler + AtomicBool flag:
let level = button.wait_for_falling_edge().await;
led.toggle();
}

Check out embassy.dev and the embassy-executor crate.

Stay Connected

  • The Embedded Rustaceannewsletter + blog
  • Embedded Rust books by Omar Hiari
  • esp-rs Matrix channel — community help for ESP32 Rust
  • Rust Embedded Working Grouprust-embedded.github.io

Keep Your uFerris Board

The board is yours. Experiment, break things, build projects. The best way to learn is to have a problem you actually want to solve.


Thank you for attending. Now go build something.