А у меня стоит RTOS и одна из задач ожидает прихода символа по UART.
И когда символ приходит вызывает прерывание, а уже в прерывании символ записывается в буфер и посылается событие задачи.
Задача выходит из ожидания и собирает символы в команду.
При такой работе обработчика команд не возникает пауз во время приёма или передачи и остальные задачи работают без рывков...
Самый яркий пример эффективности такого способа - это вывод списка команд на экран размеров в 2кБ.
Раньше весь МК занимался передачей. Если буферизировать вывод, то всё равно не будеш же делать буфер в 2кБ.
А с RTOS список выводится в фоне работы других задач и МК 90% свободен