I’ve written a few tutorials on various programming topics, mostly to do with embedded software.
STM32 ADC + DMA + timers
Collecting regular ADC samples is a common microcontroller task, and this three-part tutorial guides you through setting this up on a STM32 MCU, using the STM32’s internal ADC, its DMA controllers and a timer to end up with a system that collects ADC samples autonomously, only interrupting application code when a full set of samples is ready. All of the setup is done solely by writing the STM32’s peripheral registers, so you get a good low-level look at how the peripherals involved work. There’s a tiny USB oscilloscope demonstration project as a sweetener at the end.
(Hardware used: STM32F767ZI Nucleo-144 development board)