ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
16 августа
1535947 Топик полностью
Vit (Вчера, 08:38, просмотров: 37) ответил petrd на Хорошо, без аналогий. Цель, изо всех мест программы, где требуется вывод, без оглядки на FreeRTOS, писать printf() и получать вывод в терминале. Говорю исключительно про МК.
никто не мешает так писать:). но есть нюансы. при использовании без вытеснения (в т.ч. всяких вызовов в обработчиках прерываний) нужно, чтобы уход последнего байта контроллировался по TXC (если RS485 - аналогично снятию DE). при использовании DMA это не всегда решаемо без дополнительных сложностей, потому как событие окончания отправки по DMA возникает чуть раньше факического ухода байта. потому возникают варианты с расчетными таймаутами и т.п.. при вытеснении же всё то же, 

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