I have programed on STM32 about 5 years, and try to tell you some basic method about studying STM32.
when you what to study STM32,you need to know some basic knowledge about C language.
At the beginning, you can just start with the develop kit from ST, run the official demo,read the code and try to adjust it to achieve you own project.you can read the datasheet of the specific chip which you used, and read the reference book about the STM32 series you used.the reference book will tell more detail about the ship and it's modules.
At start of studying, you may do some simple experiment such as clock config, GPIO, UART, IIC, SPI, DMA etc. you can study this all by reading a MEMS sensor, after study the drivers, you may need to study something like RTOS.
Now,ST ‘s new driver lib is HAL lib,which is easy to develop, you can start it with the software STM32Cube to develop your own project, if you use the develop kit form ST like nucleo series, you can find the hardware model is already on the STM32Cube, and what you need do is just click mouse to choose which hardware module you need and what config you need, and the Cube will automatically generate the driver code for you. when you need to do a project on STM32 using HAL driver lib, you need to familiar with the HAL lib’s API, and you can find the reference book about the API in the Cube package,and ST also provide many demo project in the package,including basic drivers and middleware such as RTOS, USB lib, file System etc. if you are faced with some bug, you can find the analogous project in the demo, you may find the different between the demo and your code.
If you have other question when you study, you can ask the question at the STM32 technical forums, their will be many peoples using STM32,and the problem you meet may also meeted by them, and most of them are willing to help you.