臂-NONE-EABI-GCC:用printf打印浮点数(arm-none-eabi-gcc : P

2019-08-01 02:44发布

我写SAM3N的ARM Cortex-M3微控制器的C程序。 当我尝试打印浮点数,它只是打印“F”。 例如: printf("%f",43.12); 打印f只,而不是43.12

但随着整数打印工作正常。

如何启用浮动的完整的打印? 我知道,编译器,默认情况下,禁用浮动印刷,减少代码大小(即看起来,他们链接这个剪下来的版本)。 同时请注意,没有CFLAGS=-Dprintf=iprintf在Makefile中。

工具的详细信息:

  • ARM / GNU C编译器:(的crosstool-NG 1.13.1 - 爱特梅尔构建:13)4.6.1
  • 上述工具来与Atmel Studio 6.0中。

Answer 1:

你可以试试,在添加链接器设置下面的选项

-lc -lrdimon -u _printf_float

它在ARM-CORTEXM0为我工作



Answer 2:

它可以让你的平台/库不支持%f的格式说明符printf/sprintf 。 作为第一个方法,你可以滚你自己的花车/双打的printf:

void printDouble(double v, int decimalDigits)
{
  int i = 1;
  int intPart, fractPart;
  for (;decimalDigits!=0; i*=10, decimalDigits--);
  intPart = (int)v;
  fractPart = (int)((v-(double)(int)v)*i);
  if(fractPart < 0) fractPart *= -1;
  printf("%i.%i", intPart, fractPart);
}


Answer 3:

在彩车默认情况下禁用的编译器,这是不寻常的是,默认的库可以处理它们。 通过看你的推荐,你会发现关于如何重新编译浮点支持,或(更可能)在哪里可以找到已经构建与它的版本相应的库信息。



文章来源: arm-none-eabi-gcc : Printing float number using printf
标签: c gcc arm printf