Перейти к содержанию
    

как в IAR AVR переопределить getchar

в IAR перерепределяю функцию putchar и все работает.

начинаю переписывать getchar как прописано в EWAVR_CompilerReference.pdf

выкидывает ошибку Error[e27]: Entry "getchar" in module main ( C:\Documents and Settings\seregio\Мои документы\Release\Obj\main.r90 ) redefined in module.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

выкидывает ошибку Error[e27]: Entry "getchar" in module main ( C:\Documents and Settings\seregio\Мои документы\Release\Obj\main.r90 ) redefined in module.

И что, так текст ошибки и оборван, или Вы не скопипастили правильно?

Как функция getchar в хэдере записана?

Как файлы включаются?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Error[e27]: Entry "getchar" in module main ( C:\Documents and Settings\seregio\Мои документы\Release\Obj\main.r90 ) redefined in module

?getchar ( L:\Program Files\IAR Systems\Embedded Workbench Evaluation 5.3\avr\LIB\DLIB\dlAVR-3s-ec_mul-64-n.r90 )

Error while running Linker

 

в хедере прописана стандартно: __INTRINSIC int getchar(void); т.е. ничего не трогал

printf - работает без замечаний, scanf ругается

 

код

 

#include <iom128.h>

#include <stdio.h>

#include <intrinsics.h>

 

int putchar(int c)

{

while ( !UCSR0A_UDRE0 ){};

UDR0 = c; return c;

}

int getchar(void)

{

while ( !(UCSR0A_RXC0) ){}

return UDR0-1;

}

 

void main (void)

{

float x;

 

DDRB_DDB0=1; PORTB_PORTB0 = 0;

UCSR0A=0x00; UCSR0B=0x18; UCSR0C=0x86; UBRR0H=0x00; UBRR0L=0x33;

 

scanf("%f", &x);

printf("X = %f ", x);

 

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в хедере прописана стандартно: __INTRINSIC int getchar(void); т.е. ничего не трогал

printf - работает без замечаний, scanf ругается

Сейчас нет компилятора AVR под рукой, на MSP-шном все компилируется.

Можен что-то не то в свойствах проекта?

Но тут ничего не могу уточнить, scanf практически не использую, так как у меня событийная обработка, и клавиши считываются в фоне.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уменя таже проблема и printf не работает как надо, выводит только первый символ (попадает в putchar только один рас)

 

#include <stdio.h>
#include "wh2004.h"

wh2004 lcd;
int putchar(int c)
{
  lcd.printChar(c);
  return 1;
}
int getchar()
{
  return 0;
}
int main()
{
  printf("Hello world!");
  printf("Hello world!");
   

  return 0;
}

 

Выводит :

HH

 

 

с printf разобрался.

putchar должна возврачать тотже символ, что и принемает

int putchar(int c)
{
  lcd.printChar(c);
  return c;
}

 

а scanf дает ошибку

Error[e27]: Entry "getchar" in module main ( C:\Documents and Settings\D!m@\Ðàáî÷èé ñòîë\USA\project\boot\Debug\Obj\main.r90 ) redefined in

module ?getchar ( C:\Program Files\IAR Systems\Embedded Workbench Evaluation 5.3\avr\LIB\DLIB\dlAVR-3s-ec_mul-f.r90 )

Error while running Linker

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...