никто не мешает так писать:). но есть нюансы. при использовании без
вытеснения (в т.ч. всяких вызовов в обработчиках прерываний) нужно,
чтобы уход последнего байта контроллировался по TXC (если RS485 -
аналогично снятию DE). при использовании DMA это не всегда решаемо
без дополнительных сложностей, потому как событие окончания
отправки по DMA возникает чуть раньше факического ухода байта.
потому возникают варианты с расчетными таймаутами и т.п.. при
вытеснении же всё то же, но вполне вероятен множественный вызов функции, соответственно нужно принимать меры. кто-то заворачивает printf в критическую секцию, а кто-то рассчитывает на реентерабельность (грубо чревато аллокацией буфера для пакета при каждом вызове), но тогда нужно рулить (семафором, например) и доступом к ресурсу - голому UART-у(если без DMA) или связке DMA и UART. для дебага обычно желательно не рвать временную последовательность выхлопов, потому возможно стоит обращать внимание на особенности реализации.