【发布时间】:2012-10-03 06:53:19
【问题描述】:
我正在为 SAM3N arm cortex-M3 微控制器编写 C 程序。当我尝试打印浮点数时,它只打印'f'。
示例:printf("%f",43.12); 仅打印 f,而不是 43.12。
但使用整数打印效果很好。
如何启用浮点数的完整打印?我知道编译器默认禁用浮点打印以减少代码大小(即,它们似乎链接了缩减版本)。另请注意,makefile 中没有使用CFLAGS=-Dprintf=iprintf。
工具详情:
- ARM/GNU C 编译器:(crosstool-NG 1.13.1 - Atmel 版本:13)4.6.1
- Atmel studio 6.0 附带上述工具。
【问题讨论】:
-
AFAIK 这个微控制器没有 FPU。因此,您需要参考编译器文档来了解 libc 如何启用完整的 printf 功能。例如在 AVR 上它是“-Wl,-u,vfprintf -lprintf_flt -lm”。另一种方式,您应该联系您的工具供应商,也许这是已知问题。
-
不幸的是,这个 -lprintf 仅适用于 AVR-GCC,但不适用于 ARM。