Модераторы: PILOT, ManiaK, Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как использовать printf() в Keil? Не могу подключить 
V
    Опции темы
Курсант
Дата 18.3.2015, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 338
Регистрация: 21.2.2009
Где: Балашиха или Воро неж

Репутация: нет
Всего: 4



Всем доброго времени суток!

У меня есть проект в Keil, я пытаюсь использовать функцию printf() для вывода текстовой информации о выполнении программы в COM-порт компьютера. Для этого я выполнил следующие действия:
1. Подключил к среде Keil библиотеку MicroLIB. ( Options -> Target -> Use MicroLIB )
2. Заглянул в файл Keil\ARM\Startup\Retarget.c. Для нормальной работы необходимо переопределить функцию fputc ().
Код

extern int  sendchar(int ch);  /* in Serial.c */
extern int  getkey(void);      /* in Serial.c */
extern long timeval;           /* in Time.c   */


struct __FILE { int handle; /* Add whatever you need here */ };
FILE __stdout;
FILE __stdin;


int fputc(int ch, FILE *f) {
  return (sendchar(ch));
}

3. Реализовал в своей программе функцию sendchar ()
Код

extern int sendchar ( int ch ) {
    return 0;
}

4. В одной из функций добавил функцию вывода строки:
Код

    printf ("In funtion(c)");


Ожидалось, что программа будет работать как и раньше, т.к. вместо функции sendchar () установлена заглушка. Однако программа "виснет", когда доходит до printf().
Вопрос: что я сделал не так? smile
PM ICQ Skype   Вверх
Romikgy
Дата 18.3.2015, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Цитата

Adapt file RETARGET.c to your microcontroller and add it to your project. 
in the retarget.c is
Код

int fputc(int ch, FILE *f) {

        volatile unsigned int i;

        while (COM1_putchar (ch) != 0) {
        for (i=0; i<1000; i++) {
                /*** DO NOTHING ***/
        }
        }
        return (ch);
}


http://www.keil.com/forum/10998/


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.0379 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.