I am in the same boat as you.
I started using the AVR controllers about 10 years from before "arduino" existed and never understood why anyone would put up with such a piece of *&^%$#@! Especially the Java garbage they call an "ide".
Then I was looking for an "upgrade". Those 320x240 pixel TFT's from China are fun, but the AVR's do not have enough upmph to drive them comfortably. With the cheap ARM controllers (about same price as AVR) you get so much more for free:
* Much more MHz. (Thumb instructions seem to give Cortex-M about the same performance/MHz as AVR's. 32bit is not 4x faster then 8 bit, but 72MHz sure is a lot faster)
* Multiple ISR levels.
* Fractional baudrate generators.
* Motor timers for generating 3-phase PWM.
* Quadrature counters in hardware for the timers.
* More RAM / Flash.
I'm also a sort of cheapskate and I bought a bunch of "Blue Pills" and separate STM32F103C8T6 chips for even less money. ( I think about EUR1.2 each). With this combination I have both chips to put on self designed PCB's and simple development boards for quick prototypes, breadboards and one-off projects.
This chip is one of the oldest and apparently has some hardware bugs which makes me apprehensive to really dive into it's internals.
"Black Magic Probe" apparently also works with this chip, but I just bought a few "ST-Link V2" programmers for about EUR3 each. For those kind of prices I really do not care if I have to buy a separate programmer for each uC family. STM32 also has some other advantages. For example the DPS5005 power supplies use an STM32F100 (and "openDPS" is available as example software), so that is a good start for custom power supply firmware. For about EUR 20 you can also buy cheap PLC's form China (Search for FX2N). These boards have a pretty decent power supply (common mode filter, big elco's SMPS) and robust I/O (Optocouplers, Relay or Transistor outputs) These can be repurposed as excellent development boards for the STM32 family. You can also get TFT Lcd's with an STM32 on the back of them, so again, just put custom firmware in existing hardware.
The "Blue Pill" boards are also popular for hobbyists. Long before "arduino" i've written my own libraries for HD44780 I2C, UART, etc, and this takes a lot of time. I do not have much love for the whole "arduino" framework. It was never designed to be "useful" in complex applications. It also was not even intended as an educational tool. There is quite some usable code in the arduino framework itself though. Therefore it does seem a reasonable path to fork the arduino thing, remove all auto instantiated objects and the horrible "digitalWrite()". Then you can just link in the libraries you actually need. Also, by reading through code written by others (especially if it's well written) you learn some tricks you had not thought of yourself. I think that extracting useful libraries from "stm32duino" (stm32 fork for arduino) is less work than writing libraries from scratch. Same may be true for mbed. Mbed seems to want to fill up the whole uC with libraries and not leave any code for applications. Such fameworks are also written with not much thought in code efficiency. They are just stacked on top of lower level libraries such as CMSIS. It looks like a horrible mes to try to understand it all.
Because the "Blue Pill" is popular it's easy to find example projects for it. I currently have a CNC machine which runs on a STM32 port of GRBL. I've also tested an USB to 3 UART bridge with an example project from github for the STM32. My linux box sees all 3 ports, and loop back works if I put a wire between Tx of one port and connect it to Rx of the same or another port.
I very much enjoyed the STM32 tutorials from "PandaFruits"
http://pandafruits.com/stm32_primer/stm32_primer_hardware.phpIt handles the very bare bones low level stuff to get going with C, such as writing your own linker scripts. It's a very concise and well written tutorial. It's just a few short pages with loads of info. If you're interested in low-level stuff and don't know much about it (yet) then it is worth reading it even if your main interest is in the LPC uC's.
Then there are also some other frameworks.
LibOpenCM3 may be interesting, but I have not looked into it yet.
Then there are also some projects that use C++ Templates. This stuff is a bit over my head unfortunately. It seems wonderful if you can use well written libraries based on templates, but they have a bad name for debugability. Some projects based on C++ Templates are:
* Kvasir
* bmptk
* XPCC
Here a video from the young Davey Jones:
Some other links I found worth saving:
http://www.stm32duino.com/viewtopic.php?f=42&t=4460&p=51937#p51937https://jeelabs.org/projects/jeeh/https://jeelabs.org/2018/getting-started-bp/