Contiki包含一个时钟模型和5个定时器模型(timer, stimer, ctimer, etimer, and rtimer),先学习etimer吧。

etimer是一个结构体,(个人用event timer 来记),当设置的时间到的时候,就会给与之绑定的进程传递一个PROCESS_EVENT_TIMER事件,使该进程启动并继续执行。etimer结构体内容:

struct etimer
{
struct timer timer;
struct etimer *next;
struct process *p;
};

自己写的一个简单例子,让板子上唯一的一个LED每隔1s闪烁

struct etimer timeout;

PROCESS(test_process, "Test Process");
AUTOSTART_PROCESSES(&test_process); PROCESS_THREAD(test_process, ev, data)
{ PROCESS_BEGIN(); etimer_set(&timeout,CLOCK_SECOND); //设置etimer溢出时间为1s while(){ PROCESS_WAIT_EVENT();//等待事件发生,线程会暂时停止在这行
if(ev == PROCESS_EVENT_TIMER){ //etimer溢出
leds_on(LEDS_YELLOW); //开灯
etimer_reset(&timeout); //重设定时器时间,也就是第一次设定时的1s
} PROCESS_WAIT_EVENT();//等待事件发生,线程会暂时停止在这行
if(ev == PROCESS_EVENT_TIMER){ //etimer溢出
leds_off(LEDS_YELLOW); //关灯
etimer_reset(&timeout);
} } PROCESS_END();
}

最新文章

  1. java获取两个时间的相隔时间,包括年、月、日、时、分、秒
  2. C#获得客户端IP
  3. MMO可见格子算法
  4. 【编程题目】n 个数字(0,1,…,n-1)形成一个圆圈,从数字 0 开始
  5. python+redis测试环境搭建
  6. RxJava结合Retrofit和Volley简单比较
  7. leetcode:Sort List(一个链表的归并排序)
  8. axis : java.lang.NoSuchMethodError
  9. stackoverflow上关于iOS的票数最多(最常见)的15个问题
  10. List 随机排序
  11. EasyUI - SearchBox 搜索框
  12. 在SQL Server 2008中调用.net,dll
  13. JDBC&&c3p0、事务、批处理、多线程 于一体的经典秘方QueryRunner
  14. c++ 开源库介绍和安装
  15. linux配置redis三种启动方式
  16. Python 函数介绍
  17. MACE(1)-----环境搭建
  18. 缓存Memcached 与 Redis 相同点差异点分析
  19. 利用Python爆破数据库备份文件
  20. springboot maven

热门文章

  1. python面试题之补充缺失的代码
  2. redis 学习入门篇
  3. docker--删除container和image
  4. 【足迹C++primer】47、Moving Objects(2)
  5. React-native 关于键盘遮挡界面问题
  6. 使用sass
  7. 【最新】docker 安装elasticsearch + kibana步骤【第二篇_kibana】
  8. linux安装zabbix的tar包和另外一个并存
  9. leetcode-按奇偶排序数组II
  10. git - Mac生成SSH key