arch_printf()如何打印浮点数字?

3个帖子/ 0个新帖子
最后发表
liliou26
离线
最后看到:4年5个月前
加入:2016-05-31 03:40
arch_printf()如何打印浮点数字?

嗨对话框工程师:
当我调试我的传感器数据时,我发现一个很难解决的问题。

当我使用角func(例如:acos, atan....)处理浮点数,我使用arch_printf() func打印浮点数为我的应用程序,我看到的警告:"FATAL: unsupported printf字符:f.",所以我的问题是如何输出浮点数到uart调试?

短gx;短gy;短广州;
短斧;短啊;短阿兹;
短Axyz;浮动angleX;浮动angleY;浮动angleZ;

MPU_Get_Gyroscope (gx gy、广州);
MPU_Get_Accelerometer (ax, ay, az);

= ax * ax + ay * ay + az * az;
角= acos((double)(ax/sqrt(Axyz))) * 57.295780f;
angleY = acos((double)(ay/sqrt(Axyz))) * 57.295780f;
= acos((double)(az/sqrt(Axyz))) * 57.295780f;

arch_printf("%f, %f, %f\r\n", angleX, angleY, angleZ);

当传感器运行时,控制台输出:"FATAL:不支持的printf字符:f., FATAL:不支持的printf字符:f., FATAL:不支持的printf字符:f."
我检查了arch_printf(),发现arch_printf()不支持格式float & double。
那么我如何使用arch_printf()调试浮点数据呢?
请帮帮我。

关键词:
设备:
MT_dialog
离线
最后看到:6个月3个星期前
工作人员
加入:2015-06-08 34
嗨liliou26,

嗨liliou26,

如您所见,arch_printf()函数不支持打印浮点字符,一个快速的解决方案是将该值除以10并取模,以找到浮点值的整数部分,从原始值中减去整数值,以便只得到小数,然后根据您想要的小数精度将浮点值乘以10,然后将两个结果都打印为整数。有相当多的方法来做这是更复杂的比粗糙的一个上面提到的取决于准确性或可靠性,你想在你的印刷。通过搜索网络,你可以找到很多信息。

由于MT_dialog

liliou26
离线
最后看到:4年5个月前
加入:2016-05-31 03:40
我已经了解了这个方法

我已经理解你描述的方法,谢谢MT_dialog。