STM32 gotchas
STM32 timeline and peripherals changes

We concentrate on the "general purpose" STM32, omitting 'WB/'WL (wireless).
We don't treat 'L4+ as a separate sub-family here, as it shares most characteristics with 'L4.

The original idea was to fill out the table with various modules' versions. However, this is a very hard task, and honestly, it should be ST doing it (link points to a lost "Idea" post in the STM32 forum, where several users requested this, and as most "Ideas", has been ignored by ST). Below the table there are links to gotcha articles which deal with variants of some of the peripherals. Also, a significant UART/I2C/SPI change happened at the point of introduction of 'F0/'F3.

STM32
Family
Introduced Perk Aims to
replace
Cortex max clock FLASH GPIO DMA BKPSRAM SPI USB
F1 2007 First M3 72 MHz no ECC APB single-port
ORed requests
device
(except OTG FS
in 'F105/107)
L1 2009
NRND 2023
Low‑power
Mid‑end
M3 32 MHz erased at 0x00
has EEPROM with ECC
AHB single-port
ORed requests
device
F2 2010 Hi‑end M3 M3 120 MHz no ECC, has OTP AHB 2x dual-port
channel select
4kB OTG FS+OTG HS
F4 2011 Hi‑end M4 M4 180 MHz no ECC, has OTP AHB 2x dual-port
channel select
4kB OTG FS+OTG HS
F0 2012 Low‑end M0 48 MHz no ECC AHB single-port device
F3 2012 Analog/ Mixed M4 72 MHz no ECC AHB single-port
ORed requests
device
L0 2013 Low‑power
Low‑end
M0+ 32 MHz erased at 0x00
has ECC, has EEPROM
IOPORT single-port device
F7 2014 Hi‑end M7 M7 216 MHz no ECC, has OTP AHB 2x dual-port
channel select
4kB OTG FS+OTG HS
(HS PHY 'F723)
L4 2015 Low‑power
Hi‑end
L0 M4 80 MHz has ECC, has OTP AHB single-port device (in lower-end)
OTG FS (in higher-end)
H7 2016 Hi‑end M7(+M4) M7(+M4)480 MHz has ECC AHB4 4x(mixed)
DMAMUX
4kB OTG FS+OTG HS
G0 2018 Low‑end F0 M0+ 64 MHz has ECC, has OTP IOPORT single-port
DMAMUX
device+host, but
only in 'G0Bx/0C1
G4 2019 Analog/ Mixed F3 M4 170 MHz has ECC, has OTP AHB single-port
DMAMUX
device
L5 2019 Low‑power
Secure Mid‑end
M33 110 MHz has ECC, has OTP, AHB 2x single-port
DMAMUX
device
U5 2021 Low‑power
Secure Hi‑end
L4 M33 160 MHz has ECC, has OTP AHB GPDMA+LPDMA device ('U53x)
OTG FS ('U57x)
OTG HS+HS PHY
C0 2023 Lowest‑end M0+ 48 MHz no ECC, has OTP IOPORT single-port
(3ch only)
DMAMUX
---
H5 2023 Secure Hi‑end F4 M33 250 MHz has ECC, has OTP AHB 2x GPDMA 2kB/4kB
with ECC
device+host
U0 2024 Low‑power
Low‑end
L0 M0+ 56 MHz has ECC, has OTP AHB 2x single-port
DMAMUX
device

FLASH variants across families discussed here. RTC variant across families discussed here.

GPIO on AHB is faster, but GPIO on APB in 'F1 allows bit-banding.
IOPORT is a dedicated port on the Cortex-M0+ processor, allowing faster access from processor to GPIO at the cost of preventing DMA from accessing it. Note, that 'U0 while based on Cortex-M0+, its GPIO are on AHB rather than IOPORT.
In 'H7, GPIO is on a secondary bus-matrix, removed from processor and DMAs (except BDMA) through two busmatrices and respective bridges, making "manual toggling" of GPIO surprisingly slow.

The single-port DMA is described in AN2548, dual-port DMA in AN4031.
The DMA column also indicates, how requests from peripherals are steered to DMA: the simplest approach is that requests from several peripherals to an individual DMA channel are simply ORed together; in more advanced models there is a request-selecting multiplexer controlled by bits in DMA registers; and in the newest models there is a standalone DMAMUX unit, effectively implementing a full matrix between requests from various peripherals and the set of available DMA channels (plus some additional features).
In 'H7, there's one advanced MDMA on the AXIM bus matrix, two dual-port DMA and one single-port DMA (as BDMA).
In 'U5 and 'H5, the DMAs are very different from rest of the STM32. An update to the original single/dual port DMAs, with substantially extended features, GPDMA is dual-port, LPDMA is single-port. As far as requests go, GPDMA and LPDMA both contain an embedded unit similar to DMAMUX.


Folowing "10th anniversary" infographics from 2017 (i.e. 'G0/'G4/'L5/'U5/'C0/'H5/'U0 missing) linked from community.st.com:

STM32 timeline