I found this forum while searching for information about the STM32F1. Roger, you did an exceptional work!
About me: I code computers since the stone age (1982 or so). My first computer was a Casio PB100 with 544, byte RAM. Then Sinclair Spectrum, Atari ST and more x86 computers than I can count. Normally I program Windows machines to pay my rent, up to quite large systems, eg. with databases in the TB range.
Some time ago I stated to tinker with the simplest Arduinos. But the limitations drove me nuts. I am not new to optimization, but that was too much. Then I found the STM32F103 on my regular hunts at aliexpress. Finally, enough humph for some real work, and cheap as dirt, too! But only your code made it possible for me to get something done with this beauty. At my current project, I have to get a signal from a TCRT5000L, display something on a color LCD and run two tiny motors. It is amazing what you can do with some cheap boards and wires. I also ordered some GD32F103 boards, even when they are relatively expensive (https://de.aliexpress.com/item/100-new- ... 82303.html
). More is better
So, after getting so much from you, I try to give something back. It won't be much because microcontrollers are not my specialty, but I'll try.
Fun fact: I got some STM32L053 Discovery boards for almost free. ST integrated a ST-LINK V2 on that board, with a STM32F103CBT, which is was way more powerful than the mc you are encouraged to play with.
Oh, and a question. In my current project, I use SPI1 with DMA and DIV2 to push data to a display. Additionally, I put a 10 kHz PWM signal on A2 (I need that resolution for the project), connected to the LED+ of the display (yes, I suffer with that LED background light, too). Sometimes the data are not sent correctly via SPI. Is there some side effects between A2 / Timer 2 and SPI, or is it just the flimsy free flying cabling or crosstalking on the display board that cause this effect? I think of the latter because everything is nice when I simply don't connect die PWM signal to the display. It is not a real problem because I can simply switch PWM off before starting the transfer, I am just curious.