Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: RTX Keil
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы
uriy
Кто как использует функции putchar(), getchar(), printf(), scanf() в RTX.
При том что эти функции могут использовать разные задачи.
Хотелось бы примеры.
haker_fox
QUOTE (uriy @ Feb 16 2012, 21:53) *
Кто как использует функции putchar(), getchar(), printf(), scanf() в RTX.
При том что эти функции могут использовать разные задачи.
Хотелось бы примеры.

Необходимо в проект добавить файл retarget.c, где переопределяется поток ввод-вывод. В примерах Кейла и справке есть необходимая информация. У меня работало)
uriy
Да я это видел. Но получается в таком случае я могу использовать эти функции лишь для одного UART. Не придумал способа использовать эти переопределения при использовании нескольких UART. Мне нужно на консоль и на SIM900.
Shein
Цитата(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 его брал.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.