c - Gnu - Arm float 到字符串 ( sprintf )

标签 c eclipse arm printf

我在 eclipse ( lpc1769 m3 cortex ) 上使用 gnu arm。我想用 sprintf 将浮点值转换为字符串,但它不起作用。

我将 -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\漫游\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

最佳答案

查看 LPC1769 datasheet 时我没有看到任何 FPU .

那么如果没有 FPU,您如何管理 float

  • 买一 block 有FPU的新芯片
  • 没有 float 的代码
  • software FPU但请注意,您的程序会遇到性能问题(速度、RAM)

没有 float 的代码

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

然后如果你想计算像圆周长这样的东西,

无符号周长 = (pi_x_1000000 * 2 * 半径)/1000000;

注意:您的芯片可能要花费 12 美元,它的速度/RAM 是有限的,并且,根据您想要用它实现的目标,您可以考虑使用软件 FPU 之外的其他解决方案。在工业界,我们不使用 float ,因为成本和性能问题。

关于c - Gnu - Arm float 到字符串 ( sprintf ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57112965/

相关文章:

c - C 中的泛型结构

css - 如何编写一个简单的 eclipse 插件,它可以根据 @import 文件进行代码提示

java - 使用 Tomcat 在 eclipse 中启动 Java 项目

c - *(int32_t *)(a + 4) = b 是什么意思?

gcc - 在ARM下是否有gcc编译器?

c++ - 我可以重新定位 chrono 类以使用微 Controller 作为滴答生成器吗?

c - malloc() 中的段错误?

C - 是/否提示执行不止一次

java - 关于 Eclipse 中的 VM 参数设置

c - 在 linux 中生成鼠标、键...等事件