ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
11 июля
365108 Топик полностью
fk0, легенда (30.10.2012 13:12, просмотров: 125) ответил VVB на Я три дня трахаюсь с этой справкой. Вы делали буферное перенаправление?
Чего какое? Обычно заменяются open, close, read/write а-ля юникс. Так же и тут. В GNU libc можно ещё на уровне библиотеки перенаправить, но это отдельная история. Таки начинаю понимать, почему профессионалы не используют printf и C-библиотеку -- http://www.keil.com/support/man/docs/armlib/armlib_Chdchggb.htm
последние слишком "сложные"... Что значит "функция конфликтует"? Звучит как "компьютер не работает!" Ты не секретарша -- давай полное сообщение об ошибке. Скорей конфликтует прототип функции. Подсмотри (в дебрях *.h файлов KEIL) как сделано там и сделай так же. У линкера *.obj файлы идущие в командной строке имеют приоритет над *.lib файлами поэтому твои функции вытеснят библиотечные (у GCC есть ещё weak и т.п., но это даже не важно). Иногда важен порядок перечисления файлов в командной строке линкера (obj перед lib). UART, DMA и fgetc... вызовы write() тоже нужно буферизировать, а не вызывать сразу DMA из write(). Там тоже в силу разных причин может по-буковке записываться. Нужно сделать кольцевой буфер на несколько сотен байт и с ним работать независимо от вызовов write(). И с read() такая же история. Чтение с терминала будет всегда побайтовое. И, разумеется, неблокирующее. А без буфера запись всегда будет блокирующая, что полный неадекват. С буфером -- можно и так и эдак.
[ZX]