я только-только с кодом разбираюсь, но тту же основной вопрос не в том, "что нового в USB CDC?", а например, чтобы можно было через дефайн делать не три порта, а два, и на эти два благодаря параметрам больше системных ресурсов выделять (у STM32F042 only two USART).
Там два порта вообще элементарно сделать, переопределяете дескрипторы, функции инициализации и геттеры для портов, дма и подобного и все. По памяти - надо где-то 9 кб RAM, и чуть меньше 19 кБ ROM. Указывать это в описании не счёл нужным: в описании есть требование по железу, а уж сколько я хочу ROM - дело вариативное, меняется от версии к версии и в-общем не должно волновать конечного пользователя. А вот того, кто хочет куда-то это встроить должно, но он уже пускай сам выясняет :)