0

是否可以在没有任何过程的情况下执行下面的代码?我需要一个超时而不用 Contiki 进程包围它。这可能吗?

#include "sys/etimer.h"

PROCESS_THREAD(example_process, ev, data)
{
    static struct etimer et;
    PROCESS_BEGIN();

    /* Delay 1 second */
    etimer_set(&et, CLOCK_SECOND);

    while(1) {
        PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et));

        /* Reset the etimer to trig again in 1 second */
        etimer_reset(&et);
        /* ... */
    }
    PROCESS_END();
}
4

1 回答 1

0

您可以使用回调计时器

struct ctimer my_timer;

static void
callback_function(void *data)
{
  ctimer_set(&my_timer, CLOCK_SECOND, callback_function, NULL);
}

要第一次启动计时器,请ctimer_set(&my_timer, CLOCK_SECOND, callback_function, NULL);从一些初始化代码中调用。它不必在进程处理函数中。

于 2021-06-15T07:40:33.810 回答