zoukankan      html  css  js  c++  java
  • etimer

     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(1){
        
        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();
    }
  • 相关阅读:
    实验二 结对编程 第二阶段
    实验二 结对编程 第一阶段
    实验一 GIT 代码版本管理
    实验五 单元测试
    实验四 代码审查
    结对编程 第二阶段
    结对编程 第一阶段
    实验一 GIT代码版本管理
    实验五 单元测试
    实验四 代码评审
  • 原文地址:https://www.cnblogs.com/caokang/p/7471407.html
Copyright © 2011-2022 走看看