This course teaches you the hands-on skills of STM32 programming using HAL library. This course is divided into 3 parts. After finishing the first part, you will be able to write codes for basic peripherals like Clock Control, GPIO, Interrupt, and DMA. After finishing the second part, you will be able to write codes for commonly used peripherals like UART, Timer, ADC, SPI, and I2C. After finishing the third part, you will be able to write codes for other peripherals like WDG and Power. This course is suitable for those who want to learn about HAL library but don't really want to read the documentation. This course provides you example codes that can be reused in the future as a template codes for your embedded system projects.