I did some work in 2020 with the F411 in the context of my "Hydra" framework.
Then in 2023 I got fairly serious writing code for the F103.
A note on the above -- I now consider the RP2040 chip on the Raspberry Pi Pico as an excellent candidate for learning USB, although I have yet to explore it.
All this USB stuff has been just one aspect (but a major one) of work I have done on the STM32 microcontrollers:
I intended (back in 2020) to write my own USB device driver for an STM32 family chip, probably the STM32F411 and/or some other F4 chip in the STM32 family. These are ARM based microcontrollers, not that the CPU architecture particularly matters for the purpose of learning USB details.
So, I will unavoidably end up discussing specific aspects of the STM32 USB subsystem. And I will be writing a driver for a slave device, not a host driver as might be used in a linux or windows system.
Here are some notes, mostly from back around 2020:
Tom's Computer Info / tom@mmto.org