Advanced Programming with STM32 Microcontrollers