Я совсем зелёный... Но что то потыкал это палочкой. Потом включил dma и запустил кольцевой буффер апаратно, а эти хитрсплетения оставил олимпиадникам по си))
Вот и я не сильно красноватый. ) Вы говорите можно принимать данные переменной длины через дма? А мне казалось, что приём по уарту неизвестного количества байт можно организовать только с помощью кольцевого массива.