ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
16 августа
1536063 Топик полностью
Nikolay_Po (Вчера, 12:59, просмотров: 47) ответил petrd на Следите! Уже сделано так. Все имеют доступ к printf(), внутри него, когда сообщение готово, вызывается _write() в котором сообщение отправляется в завернутый в критическую обертку StreamBufferSend(). В задаче из завернутого в критическую обертку StreamBufferRecieve() это сообщение копируется, его длина и адрес передается в DMA, пуск DMA, начинается транзакция в UART, задача ставится на ожидание, пока от прерывания DMA не придет уведомление о завершении транзакции. C приходом
Начало новой транзакции никак не мешает завершению передачи предыдущего символа. Вы же, по опустошению буфера DMA, UART не выключаете? 

DMA просто пишет или не пишет в во внутренний буфер передачи UART. А передача UART идёт из сдвигового регистра, отвязанного от буфера. Поэтому не выключайте transmit enable, и никакой символ на линии не исказится.