Sto scrivendo un programma C per microcontrollore a corteccia da braccio cortex-M3 SAM3N. Quando provo a stampare numeri float, stampa solo "f". Esempio: printf("%f",43.12);
stampe solo f
, non 43.12
.arm-none-eabi-gcc: numero float di stampa utilizzando printf
Ma la stampa con numeri interi funziona correttamente.
Come abilitare la stampa completa dei galleggianti? So che il compilatore, per impostazione predefinita, disabilita la stampa flottante per ridurre la dimensione del codice (ad esempio, hanno collegato la versione ridotta). Si noti inoltre che non è disponibile CFLAGS=-Dprintf=iprintf
nel makefile.
Strumenti dettagli:
- ARM/GNU C Compiler: (CrossTool-NG 1.13.1 - Atmel costruire: 13) 4.6.1
- Sopra strumento venire con Atmel Studio 6.0.
AFAIK questo microcontrollore non ha FPU. Quindi è necessario fare riferimento alla documentazione del compilatore su libc su come abilitare la piena capacità printf. Ad esempio su AVR era "-Wl, -u, vfprintf -lprintf_flt -lm". Un altro modo, dovresti contattare il tuo fornitore di strumenti, forse è un problema noto. –
Sfortunatamente, questo -lprintf funziona solo per AVR-GCC, ma NON per ARM. – Prabhu