STM32: sprintf wandelt nicht richtig

OP #5527689
Lesenswert?

Hallo,

ich habe einen Quellcode von einem Atmega2560 auf einen STM32 gespielt. 
Nun macht sprintf Ärger. Anstelle einer Zahl in ASCII kommt nur Mist.
1
char caMinuten[4];
2
char caSekunden[4];
3
unsigned char ucMinuten;
4
unsigned char ucSekunden;
5

6
sprintf(caMinuten, "%2d", (int)ucMinuten);
7
sprintf(caSekunden, "%02d", ucSekunden);


Als String kommt "d" und "2d" anstelle der zu wandelnden Zahl. Mit Itoa 
geht es, aber Sekunden muß ich dann noch per Hand in eine zweistellige 
Zahl wandeln.

Warum geht sprintf beim STM32 (Segger Compiler) nicht richtig?

Gruß
Martin
OP #5527844
Lesenswert?

>Was passiert wenn du mal %2i oder %2u benutzt?
Es wird "i" und "u" in den String geschrieben.


>#include <stdio.h>  ist vorhanden?
ja

>oder braucht der Linker Optionen für das printf?
Das von dem Segger-Link habe ich nun nicht so ganz verstanden.
Ich habe mal den Tooltip angehängt, was der Segger zu sprintf sagt. Wo 
muß ich da was machen?
Angehängte Dateien:
Gast #5527846
Lesenswert?

Irgendwo in den Projekteinstellungen für den Linker, ich kenne die 
Segger Tools/IDE nicht, deshalb kann ich das nicht konkreter sagen. Aber 
laut dem Link wird das so sein. Printf kostet viel Speicher und da ist 
es plausibel das es verschiedene Optionen gibt.
Was kommt den raus bei %d ohne die Längenangabe? Das sollte als Minimum 
funktionieren.
Gast #5527862
Lesenswert?

Aus der oben verlinkten Doku:

"Some library variants do not support width and precision specifiers in 
order to reduce code and data space requirements; please ensure that you 
have selected the correct library in the Printf Width/Precision Support 
property of the project if you use these."
OP #5527872
Lesenswert?

foobar schrieb:
> Aus der oben verlinkten Doku:
>
> "Some library variants do not support width and precision specifiers in
> order to reduce code and data space requirements; please ensure that you
> have selected the correct library in the Printf Width/Precision Support
> property of the project if you use these."

Wo kann ich das bei Segger einstellen?
Anbei eine Hardcopy der Options.
Angehängte Dateien:

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