Xmeg'и отличались от более ранних AVR и от STM тем, что их
периферия была набрана из множества стандартных блоков
ограниченного чиста типов с фиксированной раскладкой регистров всех
однотипных блоков и с понятными и очевидными способами
взаимодействия блоков периферии без участия ядра. Такой себе C++ в
железе. В классических AVR было "тут у нас такой таймер, а там вот
такой", "регистры этого UARTа мы разложили так, а того вот так". В
STM блоки периферии может быть и однотипные но количество разновидностей тех же таймеров всего в два раза меньше их общего количества в МК и как они могут между собой взаимодействать нифига не очевидно. В Xmeg'ах был типовой ответ для всех случаев взаимодействи блоков периферии - система событий (отдельный периферийный блок связывающий всё). В STM - ищи нужный бит и нужный режим, найдешь - получишь примерно то же самое. В классических AVR - ищи бит, но в большинстве случаев не найдешь, не завезли. +Блоки периферии Xmeg по набору функций мало уступают STM, а порты GPIO так вообще обходят. +Понятная система построения серии микроконтроллеров, а не "мы наделали таки, таких и еще вот таких МК, найдите наиболее подходящий". Недоделанность периферии Xmeg в том, что некоторые блоки слабо подвязаны в общую систему (особенно интерфейсы), DMA не со всеми блоками работает корректно, АЦП в большинстве типов слишком шумный и со специфическими требованиями к диапазону входных сигналов.
Презентация на тему:
XMEGA.ppt
В младших STM32 ничего интересного в том смысле, что через их преферию для получения нужного результатата приходится "продираться". Вроде и результат в конце получен, но никакого удовольствия от процесса. Куб на это особо не влияет, только борьба с регистрами заменяется на борьбу с HAL или LL.