Цитата(dimka76 @ Oct 25 2007, 13:45)

Когда изпользуетс вывод через один UART все понятно, пишем свою putchar.
А если требуется работать с несколькими UART и еще SPI, TWI и во всех случаях использовать printf, как быть в этом случае?
putchar можно сделать зависимым от какого-то глобального флага, e.g.
Код
U8 DevConOut = 0;
int putchar( int ch)
{
switch( DevConOut )
{
case DEV_UART0:
....
break;
case DEV_UART1:
....
break;
case DEV_SPI:
...
break;
default:
...
break;
}
}
printf заменить макросом:
Код
#define my_printf( conout, x ) do \
{\
DevConOut = (conout);\
printf (x);\
} while (0)
который использовать например так:
Код
my_printf( DEV_UART1, ("hello"));
my_printf( DEV_SPI, ("hello"));
Обрамлять второй параметр my_printf в скобочки - обязательно!