我正在爲SAM3N arm cortex-M3微控制器編寫一個C程序。當我嘗試打印浮點數時,它只打印'f'。 例如:printf("%f",43.12);
僅打印f
,而不是43.12
。arm-none-eabi-gcc:使用printf打印浮點數
但用整數打印工作正常。
如何啓用浮動的完整打印?我知道,默認情況下,編譯器禁用浮動打印以減少代碼大小(即,看起來,它們鏈接了裁減版本)。另請注意,makefile中沒有使用CFLAGS=-Dprintf=iprintf
。
工具細節:
- ARM/GNU C編譯器(的crosstool-NG 1.13.1 - 愛特梅爾構建:13)4.6.1
- 以上工具來與Atmel Studio 6.0中。
AFAIK這個微控制器沒有FPU。因此,您需要參考編譯器文檔以瞭解如何啓用完整的printf功能。例如在AVR上,它是「-Wl,-u,vfprintf -lprintf_flt -lm」。另一種方法,你應該聯繫你的工具供應商或許是已知的問題。 –
不幸的是,這個-lprintf僅適用於AVR-GCC,但不適用於ARM。 – Prabhu