STM32 printf

OP #2417262
Lesenswert?

Hallo Forum!

Ich programmiere einen STM32F100 mit dem STM32VL-Discovery Board 
(http://www.st.com/internet/evalboard/product/250863.jsp) mit der IAR 
Workbench Kickstart 6.3 und probiere schon wie wild die printf-Funktion 
zum laufen zu bekommen. Man muss sie ja "redirecten", also gewisse 
Funktionen überschreiben um printf hardwarespezifisch anzupassen.

In der StandardPeripheralLibrary von ST ist ein Beispiel unter USART wie 
man dies bewerkstelligen könnte:
1
#include <stdio.h>
2

3
#ifdef __GNUC__
4
  /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
5
     set to 'Yes') calls __io_putchar() */
6
  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
7
#else
8
  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
9
#endif /* __GNUC__ */
10

11
// MAIN usw
12

13
PUTCHAR_PROTOTYPE
14
{
15
  /* Place your implementation of fputc here */
16
  /* e.g. write a character to the USART */
17
  USART_SendData(USART1, (uint8_t) ch);
18

19
  /* Loop until the end of transmission */
20
  while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
21
  {}
22

23
  return ch;
24
}

Nur mault der Compiler dass er den Datentyp FILE nicht kennt.
Ich bin davon ausgegangen dass dieser in stdio.h definiert wird, was 
aber bei mir nicht zu passieren scheint.

Die Funktion printf kann ich aber ohne Fehler aufrufen, nur wird eben 
nichts gesendet.

Ich vermute es liegt an bestimmten Linkereinstellungen oder soetwas in 
der Art.

Vielen Dank schonmal!

Mfg
Christoph

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren