The primary reference for this topic is the book The STM32F103 Arm Microcontroller and Embedded Systems: Using Assembly and C by Muhammad Ali Mazidi, Sepehr Naimi, and Sarmad Naimi. This text is widely adopted in universities and by self-taught engineers for its systematic approach to the STM32F103 platform.
While the concepts are transferable, the book is heavily tailored to the F10x series; those using newer boards like the Nucleo-F4 might prefer Mazidi's STM32 Arm Programming for Embedded Systems (Volume 6) .