Цитата(uriy @ Feb 19 2012, 17:51)

Да я это видел. Но получается в таком случае я могу использовать эти функции лишь для одного UART. Не придумал способа использовать эти переопределения при использовании нескольких UART. Мне нужно на консоль и на SIM900.
Я использовал printf практически только для вывода служебной и отладочной информации на DBGU (отладочный UART, контроллеры Atmel). Соответственно переопределением на несколько портов не задавался. Переопределение делал стандартно, через retarget.c.
Единственно, printf не является reentrant, т.е. ее нельзя использовать параллельно из разных задач.
Я использую такой код:
Код
#define TRACE_INFO(...) { os_mut_wait (DBGU_busy_mutex, 0xffff); printf("-I- " __VA_ARGS__); os_mut_release (DBGU_busy_mutex); }
фактически немного переделав trace.h. Уж не помню из каких примеров Keil или Atmel его брал.