Ground Embedded KO Subscribe

Roadmap / Firmware

MCU Firmware

One register bit turns on a pin, runs a timer, moves a motor. This is the core of embedded development.

Goal Configure MCU peripherals from the datasheet alone.

  • BasicLevel
  • about 6 weeksat one hour a day
  • 12topics
  • 4labs
  1. 01
    Development environment

    Set up STM32CubeIDE, a compiler and a debugger, and light one LED.

    Read the note →

  2. 02
    Registers versus HAL

    Driving registers directly or through a HAL, and when to use which.

    Read the note →

  3. 03
    GPIO

    Input and output, push-pull and open-drain, internal pull-ups, at register level.

    Read the note →

  4. 04
    Clock tree

    HSE, PLL, prescalers: where the clock comes from and how it is divided.

    Read the note →

  5. 05
    Timers3D lab

    Periodic interrupts and measuring time with input capture.

    Read the note →

  6. 06
    PWM3D lab

    Generating PWM with a timer and calculating PSC, ARR and CCR.

    Read the note KR

  7. 07
    Interrupts and the NVIC3D lab

    Priorities, why handlers stay short, and shared variables.

    Read the note →

  8. 08
    ADC3D lab

    Single conversion, continuous conversion, and timer-triggered sampling.

    Read the note →

  9. 09
    Using DMA

    Moving ADC values and UART data to memory without the CPU.

    Read the note →

  10. 10
    Watchdog and low-power modes

    A watchdog that resets a hung program, and sleep modes for battery devices.

    Read the note →

  11. 11
    Writing Flash and EEPROM

    Keeping settings across power cycles, and write-cycle limits.

    Read the note →

  12. 12
    Bootloader

    How firmware updates itself, and how memory is partitioned.

    Read the note →

CHECK TASK

Build an LED dimmer with a timer interrupt

Configure timer PWM with registers only, no HAL, and step the brightness through five levels with a button interrupt.

If you can tick all three, move on to the next subject. Ticks are saved in this browser only.