Forum: Mikrocontroller und Digitale Elektronik STM32F4 printf und trace_printf


von timertick_t (Gast)


Lesenswert?

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?

von hp-freund (Gast)


Lesenswert?

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...

von Little B. (lil-b)


Lesenswert?

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
Noch kein Account? Hier anmelden.