Gnu-手臂浮于字符串(sprintf)

时间:2019-07-19 12:54:23

标签: c eclipse arm printf

我在日食(lpc1769 m3 cortex)上使用gnu臂。我想用sprintf将float值转换为字符串,但是它不起作用。

我在链接器选项中添加了-u_printf_float,但是它不起作用。 我该如何解决?

int main(void) {

    InitBoard();

        float flt = 1.1;
        char msg[256];
        sprintf(msg , "number is %.3f ", flt);
        while (1){

            KC_UART_sendstring(LPC_UART0, msg);

            delay_ms(500);
        }
}

这是我的链接器选项

-T“ C:\ Users **用户名** \ Eclipse-workspace \ Test_1 \ ldscript \ LPC17xx.ld” -Xlinker --gc-sections -L“ C:\ Users **用户名** \ AppData \ Roaming \ xPacks @ gnu-mcu-eclipse \ arm-none-eabi-gcc \ 7.2.1-1.1.5.content \ arm-none-eabi \ lib \ thumb \ v7-m“ -Wl,-Map,” Test_1 .map“ --specs = nano.specs -u_printf_float

1 个答案:

答案 0 :(得分:-2)

看着LPC1769 datasheet时,我看不到任何FPU

因此,如果没有FPU ,您如何管理floats

  • 购买具有FPU的新芯片
  • 没有浮点数的代码
  • software FPU,但请注意,您的程序会遇到性能问题(速度,RAM)

无浮点代码

使用除数和除数。 Pi只是unsigned pi_x_1000000 = 3141593;

然后,如果您想计算圆周长,

unsigned circumference = (pi_x_1000000 * 2 * radius) / 1000000;

注意:您的芯片可能要花费12美元,受速度/ RAM的限制,并且,根据具体情况以及您要实现的目标,您可能会考虑使用软件FPU以外的其他解决方案。在行业中,由于成本和性能问题,我们不使用浮动广告。