我完全不知道如何处理这个问题。我不太熟悉 C 语言,但我知道足够为我的 Atmel MCU 进行控制项目编程。我遇到了一个问题,我尝试打印双变量,但得到的只是问号而不是值。这是一些代码:
axg = ax/MPU6050_AXGAIN;
ayg = ay/MPU6050_AYGAIN;
azg = az/MPU6050_AZGAIN;
gxds = gx/MPU6050_GXGAIN;
gyds = gy/MPU6050_GYGAIN;
gzds = gz/MPU6050_GZGAIN;
printf("converted\n\n");
printf(" %f;\n\n %f;\n\n %f;\n\n %f;\n\n %f;\n\n f;\n\n",axg,ayg,azg,gxds,gyds,gzds);
所有打印的变量都定义为 double 。 ax,ay,ay,gx,gy,gz 都是 uint16_t 变量。我正在做的是从 IMU 读取 8 位数据并将这些值存储在 ax 等中。然后我需要根据 IMU 数据表中的信息对它们进行转换(如果有人好奇,则为 MPU 6050)。有人能指出我解决此问题的方向吗?我遇到的一切都表明我应该获得值(value)观,但我不知道该去哪里寻找。
提前致谢。
这是我的终端读数
converted
?;
?;
?;
?;
?;
?;
最佳答案
听起来您正在链接的 printf
版本不支持浮点。
这通常是嵌入式系统编译器的默认配置,因为它们没有硬件 FPU,并且软件浮点支持占用了大多数应用程序不需要的宝贵空间。
请查阅您正在使用的工具链的文档,看看是否讨论了此问题。 Link to similar thread for gcc/Arduino
还要考虑是否可以重写您的代码以不使用浮点。
关于c - 使用 %f 打印 double 变量,终端显示 "?",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30452963/