如何在tmote sky中执行浮点计算(contiki)

时间:2014-11-10 12:34:19

标签: embedded msp430 contiki

我有以下代码段:

#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 **

如何获得正确的值?

由于

1 个答案:

答案 0 :(得分:0)

您需要的不是浮点计算支持 - 您已经拥有了它。缺少的是printf()内的浮点支持。也就是说,res将被正确计算,但printf()不支持其显示。

因为它需要相对大量的代码,许多微控制器目标库在stdio中省略了浮点支持。可能有一个库构建选项包含浮点支持 - 请参阅库文档。

您可能会问一个关于必要的具体计算的问题,以及如何使用整数或定点算法来完成。或者,您可以按照此处所述编写自己的浮点显示:例如How to print floating point value using putchar?