Es gibt von ST übrigens ein Werkzeug, womit du den ganzen Konfigurationskram automatisch erstellen kannst. Du wählst (auf einer Klicki-Bunti-Oberfläche) erstmal deinen Mikrocontroller oder das Board aus, dann kannst du jeden Pin einzeln konfigurieren (E/A, PushPull, Open-Drain, Pullups/downs, ...), Hardwareperipherie wie Timer, ADCs, SPI, UART, ...und dann macht der ein fertiges Projekt daraus wo du sofort loslegen kannst.

Vielleicht erleichtert das den Einstieg etwas.

https://www.youtube.com/watch?v=szMGedsp9jc