ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
16 августа
1535281
Nikolay_Po (11.08.2025 21:34, просмотров: 9819)
FreeRTOS. Вывод отладочной информации в UART. Что-то я не справляюсь. Сделал функцию быстрого вывода блока символов в буфер с последующей передачей при помощи DMA. Отладил, работает отлично. Потокобезопасно - быстро и блокирует прерывания в критической секции. 

Проблема теперь в том, как выводить печать из кода, из задач или функций расширений, например, стека TCP-IP?

Сделал свою функцию _write():


__attribute__((used)) int _write(int FileHandle, char *Data, int Size) {
	(void) FileHandle;
	UART_DMAtx(Data, Size); //Put printed data block into Tx buffer and start DMA transmission
	return Size;
}

Подхватилась. Если печатать из main() - то работает. А если из задачи - то (спасибо отладочному функционалу) - вываливаюсь в обработчик переполнения стека задачи. Задача, естественно, та, из которой вызывался printf().

Как вообще быть, чтобы печатать, но не раздувать стек? А если и раздувать, то как понять насколько?