如何解决有没有办法设置计时器而不必将其放入 Contiki OS 的进程中?
是否可以在没有任何过程的情况下执行下面的代码?我需要一个超时而不用 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();
}
解决方法
您可以使用callback timers:
struct ctimer my_timer;
static void
callback_function(void *data)
{
ctimer_set(&my_timer,CLOCK_SECOND,callback_function,NULL);
}
要让计时器第一次启动,请从一些初始化代码中调用 ctimer_set(&my_timer,NULL);
。它不必在进程处理函数中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。