我在日食(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
答案 0 :(得分:-2)
看着LPC1769 datasheet时,我看不到任何FPU。
因此,如果没有FPU ,您如何管理floats
?
无浮点代码
使用除数和除数。
Pi只是unsigned pi_x_1000000 = 3141593;
然后,如果您想计算圆周长,
unsigned circumference = (pi_x_1000000 * 2 * radius) / 1000000;
注意:您的芯片可能要花费12美元,受速度/ RAM的限制,并且,根据具体情况以及您要实现的目标,您可能会考虑使用软件FPU以外的其他解决方案。在行业中,由于成本和性能问题,我们不使用浮动广告。