Forum: Mikrocontroller und Digitale Elektronik stdio.h sprintf/sscanf


von Moritz M. (Gast)


Lesenswert?

Hallo,

ich möchte die Funktionen sprintf / sscanf in meinem Programm für ein 
STM32 verwenden. Wie muss ich die stdio.h einbinden? Mit #include 
<stdio.h> findet er die Datei nicht. Ich benutze die CoIDE und 
arm-none-eabi (WinARM).

Moritz

von Oliver J. (skriptkiddy)


Lesenswert?

stdio.h ist schon mal richtig. Da sind die Funktionsprototypen drin. 
Wenn der Compiler das nicht findet, dann musst du ihm den Include-Pfad 
mitgeben. Das lässt sich sicher irgendwie bei den Projekteinstellungen 
erledigen.

Warum nimmst du überhaupt Winarm? Das Projekt ist doch mause-tot. Ich 
würde dir eher zu Codesourcery, Yagarto oder zu der von ARM gepflegten 
Toolchain[1] raten.

Die hier genannten Toolchains (auch Winarm) nutzen die newlib. Diese 
braucht zum  funktionieren von (s)printf und (s)scanf zusätzliche 
Funktionen, die du implementieren musst. Der Linker wird dir noch 
mitteilen, welche das sind. Die Implementationen der Stdio-Funktionen in 
der newlib sind aber alles andere als ressourcenschonend, sodass sich 
Alternativimplementationen anbieten. Für (s)printf verwende ich diese 
hier:
http://www.firefly-power.de/ARM/printf.html
Die passt in ca. 1kb Flash. Für (s)scanf sollte sich auch so etwas 
finden lassen.

Für den Fall dass du die newlib-Funktionen nutzen willst, schau mal 
hier:
https://sites.google.com/site/stm32discovery/open-source-development-with-the-stm32-discovery/getting-newlib-to-work-with-stm32-and-code-sourcery-lite-eabi


[1] https://launchpad.net/gcc-arm-embedded

Gruß Oliver

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.