Forum: Mikrocontroller und Digitale Elektronik STM32F4 sprintf mit float


von Martin F. (martin_f70)


Angehängte Dateien:

Lesenswert?

Hallo!

Ich will an meinem STM32F4 DISCOVERY BOARD einen ADC-Wert umrechnen und 
per USB an den PC senden. Klappt auch alles, außer den float senden. 
sprintf tut sich mit float irgendwie schwer:
1
p=(adc_wert*1.0f/4096.0f)*3.0f;
2
sprintf(buf,"%f", p);

In der Console kommt nur nichts an.

Woran liegt das? Was muss zu den LDFLAGS noch dazugepackt werden?

von holger (Gast)


Lesenswert?

>sprintf tut sich mit float irgendwie schwer:

Vieleicht kann dein sprintf gar kein float.

von Martin F. (martin_f70)


Lesenswert?

wieso sollte es das net können? Oder wie kann ich dann mein problem 
lösen?

von holger (Gast)


Lesenswert?

>wieso sollte es das net können?

Ich hab schon häufer printf/sprintf gesehen die das nicht können.

> Oder wie kann ich dann mein problem lösen?

Sende den ADC Wert direkt an den PC und rechne da um.

von Martin F. (martin_f70)


Lesenswert?

gut idee, spaart auch leistung im mikrocontroller, eigl optimale lösung 
oder?

von Jim M. (turboj)


Lesenswert?

Hint: Das STM32F4 DISCOVERY BOARD hat eine integrierten Debugger. Den 
sollte man mal benutzen.

Falls das newlib ist: Für "float" Formatierung braucht newlib malloc(). 
Wenn man das nicht hat, packt man Vor- und Nachkommastellen in Integer 
Variablen und gibt diese aus.

von holger (Gast)


Lesenswert?

>gut idee, spaart auch leistung im mikrocontroller

Das kratzt den dicken STM32F4 nicht unbedingt.
Vieleicht gibt es bei dir ja ein dtostr()?

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.