Wo schreibt eigentlich printf() auf dem STM32F4 Disco very Board hin? Hab bisher immer nur sprintf() genommen und den String dann mit meiner eigenen Funktion auf dem Displai ausgegeben. Und könnte man printf() umleiten? Wie?
Hab ich mich auch schon gefragt und diesen link gespeichert: www.scienceprog.com/connecting-stm32-usart-to-standard-io-streams-in-gcc /#more-2682 Bin aber noch nicht weiter eingestiegen. Vielleicht kannst Du eine Kurzfassung erstellen...
Das Zauberwort lautet "syscalls". Kurzfassung sieht so aus:
1 | int _write(int fd, char *str, int len) { |
2 | // todo: implement your printf()-interface here!
|
3 | |
4 | // use USART for printf!
|
5 | /**/
|
6 | ELWMD_USART2_SendStream((uint8_t*)str, len); |
7 | return len; |
8 | |
9 | // use USB for printf!
|
10 | /*
|
11 | // check for connection
|
12 | ELWMD_UsbVcp_Status_t Con = ELWMD_UsbVcp_GetStatus();
|
13 | if ((Con == ELWMD_UsbVcp_Connected) || (Con == ELWMD_UsbVcp_NewConfig)) {
|
14 | // termiate string with /0
|
15 | //str[len] = 0;
|
16 | // standard string should already be terminated by \0!
|
17 | ELWMD_UsbVcp_SendData((uint8_t*)str);
|
18 | return len;
|
19 | }
|
20 | */
|
21 | // use ethernet for printf!
|
22 | /*
|
23 | not yet implemented
|
24 | */
|
25 | return 0; |
26 | }
|
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.