Forum: Compiler & IDEs stdout -> uart


von Tilo (Gast)


Lesenswert?

Hallo

Ich bin Anfänger und versuche mit WinARM, GCC 4.1.1 einen ARM uC
zu programmieren.

Ich will stdout und stdin auf den uart umleiten. Ich habe hier im Forum
Beispiele für AVR gefunden:
1
#include <stdio.h>
2
#include <stdint.h>
3
4
int PutCharUart2(char ch, FILE *stream);
5
static FILE uartstdout = FDEV_SETUP_STREAM(PutCharUart2, NULL, _FDEV_SETUP_WRITE);
6
7
int PutCharUart2 (char ch, FILE *stream) {  // Schreibe Char auf uart
8
     while ((COMSTA0 & 0x40)==0) {} // Warte bis Sendepuffer leer ist
9
  if (ch==LF) { // Wandle Zeilenende um
10
    COMTX = CR; // Sende Zeichen
11
    return 0;
12
  }
13
  COMTX = ch; // Sende Zeichen
14
  return 0;
15
}
16
17
int main(void) {
18
  stdout = &uartstdout;
19
  printf("test\n");
20
  return 0;
21
}

Leider gibt mir make einen Fehler aus:
uart.h:21: warning: implicit declaration of function 'FDEV_SETUP_STREAM'
uart.h:21: error: '_FDEV_SETUP_WRITE' undeclared here (not in a 
function)
uart.h:21: error: invalid initializer

Google hat zu _FDEV_SETUP_WRITE nichts gefunden.
Wenn ich FDEV_SETUP_STREAM richti verstanden habe, stellt die Funktion 
einen Stream bereit.
_FDEV_SETUP_WRITE gibt die Eigenschaft schreiben an.

Warum kennt mein Compiler _FDEV_SETUP_WRITE nicht?

Vielen Dank, Tilo

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

> Warum kennt mein Compiler _FDEV_SETUP_WRITE nicht?

Weil das Ganze eine avr-libc-spezifische Methode ist.  Wie das
bei deinem ARM funktioniert, musst du in der Dokumentation
deiner (stdio-)Bibliothek nachlesen.

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.