STM32 are 32 bit ARM microcontrollers, that are in generally too small for Linux but also to big to have a DIL case for the hobbyist. However when cost is an issue and a Linux board is too expensive or not robust enough and a small device as a AVR is too much a compromise to write Software or if a hobbyist wants to do something professional, then STM32 are a good choice.

There is good support with gcc. There are different ways to start with programming them. The most modern way is cube that has, libraries, tools, board support packages, high abstraction layer including RTOS, FAT, TCP/IP and USB: or for the specific micro-controller series F4. Registration is required to get the software.

A tool chain is required and does not come from ST. However ST supports different tool chains and even onces that are free as:

Linurs Servernest startpage