我正在与 psoc creator 合作,我正在尝试将 -1 和 1 之间的浮点数打印到 I2C OLED。为了让它工作,我使用了函数 sprintf。我在链接器中添加了以下标志,-u _printf_float
因为我使用的是 newlib-nano,如果没有请求,它会省略浮点处理代码。(我的问题可能与此有关……也许?)出于测试目的,我写了以下几行:
char stringbuffer[20];
sprintf(stringbuffer, "(%1.1f, %1.1f)", 1.1, 1.1);
在调试时,我注意到我尝试打印的每个非零浮点数都被打印为垃圾,前面有一个空字符。实际上每个非零浮点数都被以下 3 个字节替换。如果我用 0.0 替换所有值,那么它打印得非常好。
0x00 '\000'
0x2E '.'
0x80 '\200'
我试图在下一行中打印的整数的行为符合预期。
有遇到类似问题的人吗?