Hallo!
Ich will die Funktion printf() benutzen, um bei einem Mikrocontroller Daten über den USART (serielle Schnittstelle) auszugeben. Die Daten müssen also ins Transmit-Buffer gelangen. Damit verbindet sich die Frage, wie ich das der Funktion bzw. dem Compiler klar mache. Von dem bißchen C-Programmieren, das ich am PC gemacht habe, weiß ich nur, dass bei printf() normalerweise die Standardausgabe adressiert wird und das ist der Monitor. Warum das so ist und wie man das ändern kann, darüber habe ich mir bislang noch keine Gedanken gemacht. Beim PC hängt zudem das Betriebssystem dazwischen, bei meinem Mikrocontrollerprogramm nicht.
Also erste Frage: Wodurch wird bestimmt, wohin printf() die Daten schreibt?
Die an der seriellen Schnittstelle ausgegebenen Daten sollen natürlich von einem anderen Gerät empfangen werden. Dazu möchte ich wissen, was denn nun genau auf der Leitung liegt. Ich weiß, dass der USART Zeichen sendet und dass prinft() die Funktion putchar aufruft, die Zeichen ausgibt. Soweit passt das also. Heißt aber, das printf() wohl irgendwie beliebige elementale Datentypen (int, float) in Zeichen (char) umwandelt. Aber wie sieht das aus? Wenn ich z.B. den Integer 2318 ausgebe, sendet der USART dann hintereinander die Zeichen ‚8‘, ‚1‘, ‚3‘, ‚2‘? Und was ist, wenn es sich um einen float-Typ hadelt, z.B. die Zahl 23,65? Kommen da wirklich nur die Zeichen, die man am Ende sieht, und in der richtigen Reihenfolge?
Also zweite Frage: Welche Zeichen macht printf() aus den verschiedenen elementaren Datentypen?
Danke im Voraus.