1. Introduction
  2. Background
  3. Hardware/knowledge requirements
  4. Setting up a development environment
    1. Linux
    2. Windows
    3. macOS
    4. Verify the installation
  5. Meet your hardware
  6. LED roulette
    1. Build it
    2. Flash it
    3. Debug it
    4. The led and delay abstractions
    5. The challenge
    6. My solution
  7. Hello, world!
    1. panic!
  8. Registers
    1. RTRM
    2. (mis)Optimization
    3. 0xBAAAAAAD address
    4. Spooky action at a distance
    5. Type safe manipulation
  9. LEDs, again
    1. Power
    2. Configuration
    3. The solution
  10. Clocks and timers
    1. for loop delays
    2. NOP
    3. One-shot timer
    4. Initialization
    5. Busy waiting
    6. Putting it all together
  11. Serial communication
    1. *nix tooling
    2. Windows tooling
    3. Loopbacks
  12. USART
    1. Send a single byte
    2. Send a string
    3. Buffer overrun
    4. uprintln!
    5. Receive a single byte
    6. Echo server
    7. Reverse a string
    8. My solution
  13. Bluetooth setup
    1. Linux
    2. Loopback
    3. AT commands
  14. Serial over Bluetooth
  15. I2C
    1. The general protocol
    2. LSM303DLHC
    3. Read a single register
    4. The solution
    5. Read several registers
  16. LED compass
    1. Take 1
    2. Solution 1
    3. Take 2
    4. Solution 2
    5. Magnitude
    6. Calibration
  17. Punch-o-meter
    1. Gravity is up?
    2. The challenge
    3. My solution
  18. What's left for you to explore
  19. General troubleshooting
  20. How to use GDB