我有以下代码段:
#include "contiki.h"
#include <stdio.h> /* For printf() */
PROCESS(calc_process, "calc process");
AUTOSTART_PROCESSES(&calc_process);
PROCESS_THREAD(calc_process, ev, data)
{
double dec=13.2, res=0, div=3.2;
PROCESS_BEGIN();
res=dec+div;
printf("%f",res);
PROCESS_END();
}
使用命令
在Tmote sky平台上传上述代码后make TARGET = sky calc.upload,程序将加载到mote(没有错误)。然后使用make login TARGET = sky登录到mote,显示以下输出....
OUPUT:
** Rime从地址4.0开始 MAC 04:00:00:00:00:00:00:00 Contiki 2.7开始节点ID设置为4。 CSMA ContikiMAC,频道检查率8 Hz,无线电频道26 开始&#39;计算过程&#39;
%F **
如何获得正确的值?
由于
答案 0 :(得分:0)
您需要的不是浮点计算支持 - 您已经拥有了它。缺少的是printf()
内的浮点支持。也就是说,res
将被正确计算,但printf()
不支持其显示。
因为它需要相对大量的代码,许多微控制器目标库在stdio中省略了浮点支持。可能有一个库构建选项包含浮点支持 - 请参阅库文档。
您可能会问一个关于必要的具体计算的问题,以及如何使用整数或定点算法来完成。或者,您可以按照此处所述编写自己的浮点显示:例如How to print floating point value using putchar?。