Forum: Compiler & IDEs [WinARM] printf-Problem


von Pototschnig Thomas (Gast)


Lesenswert?

Hallo,

ich versuche gerade printf dazu zu bringen Text auf meinem LCD
auszugeben. Dazu hab ich syscalls.c eingebunden und folgendes gemacht:

1. Einen Funktionspointer deklariert, weil ich es nicht hingekriegt
habe das syscalls.c die Referenzen auf meine putc-Funktion findet, die
sich in einem C++-Kompilierten Objekt befindet.
1
void (*LCD_PUTC) (char c);

2. _write_r von syscalls.c entsprechend angepasst
1
_ssize_t _write_r (
2
    struct _reent *r, 
3
    int file, 
4
    const void *ptr, 
5
    size_t len)
6
{
7
  int i;
8
  const unsigned char *p;
9
  
10
  p = (const unsigned char*) ptr;
11
  
12
  for (i = 0; i < len; i++) {
13
    LCD_PUTC(*p++);
14
  }
15
  
16
  return len;
17
}

3. Den Funktionspointer in meiner main.cpp initialisiert
1
extern void (*LCD_PUTC) (char c);
2
3
void Init()
4
{
5
  LCD_PUTC  = LCD_putc;
6
}

4. LCD_putc sieht so aus:
1
void LCD_putc(char c)
2
{
3
  myLCD.PutC(c);
4
}

Aber LCD_putc wird anscheinend nie aufgerufen. (myLCD ist korrekt
initialisisert)

Ich tippe ja darauf, dass _write_r schon nicht aufgerufen wird. Ich hab
das aus dem HelloWorld Example übernommen, in dem mit iprintf() etwas
über die RS232 ausgegeben und eingelesen werden kann. Das verwendet die
gleichen Funktionen.

Weiß da jemand Rat?

von Pototschnig Thomas (Gast)


Lesenswert?

Problem gelöst:
1
fflush(stdout);
vergessen.

von Mario (Gast)


Lesenswert?

Wo hast Du >> fflush(stdout); << eingefügt ???

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.