реклама на сайте
подробности

 
 
> RTX Keil, Вопросы Решения
uriy
сообщение Feb 16 2012, 13:53
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Кто как использует функции putchar(), getchar(), printf(), scanf() в RTX.
При том что эти функции могут использовать разные задачи.
Хотелось бы примеры.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
haker_fox
сообщение Feb 18 2012, 13:19
Сообщение #2


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (uriy @ Feb 16 2012, 21:53) *
Кто как использует функции putchar(), getchar(), printf(), scanf() в RTX.
При том что эти функции могут использовать разные задачи.
Хотелось бы примеры.

Необходимо в проект добавить файл retarget.c, где переопределяется поток ввод-вывод. В примерах Кейла и справке есть необходимая информация. У меня работало)


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
uriy
сообщение Feb 19 2012, 15:51
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Да я это видел. Но получается в таком случае я могу использовать эти функции лишь для одного UART. Не придумал способа использовать эти переопределения при использовании нескольких UART. Мне нужно на консоль и на SIM900.
Go to the top of the page
 
+Quote Post
Shein
сообщение Mar 8 2012, 12:43
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 4-03-07
Пользователь №: 25 855



Цитата(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 его брал.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 07:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.01356 секунд с 7
ELECTRONIX ©2004-2016