您的位置:首页 > 其它

定时器

2016-07-22 16:48 387 查看
contiki操作系统常用的定时器有etimer,ctimer,timer等等。etimer是对timer的封装。

timer定时器主要包括一个timer结构体和5个方法。

struct timer {

  clock_time_t start;      //记录起始时间也就是当前的时间

  clock_time_t interval; //记录需要定时多久的时间

};

CCIF void timer_set(struct timer *t, clock_time_t interval);  //启动一个定时器,从当前时间开始计时

void timer_reset(struct timer *t); //重置定时器,在原来的基础上再增加intervel这么长的时间

void timer_restart(struct timer *t); //重启定时器,即现在开始定时和以前一样长时间

CCIF int timer_expired(struct timer *t); //检查定时器是否到期,如果到期则返回1

clock_time_t timer_remaining(struct timer *t); //定时还剩多次时间

etimer定时器主要包括一个etimer定时器和11个方法再加一个宏和一个timelist,功能基本上和上面的timer定时器相同,不同的是加了指向etimer定时器的指针和指向绑定的process的指针。

struct etimer {

  struct timer timer;

  struct etimer *next;

  struct process *p;

};

CCIF void etimer_set(struct etimer *et, clock_time_t interval);

CCIF void etimer_reset(struct etimer *et);

void etimer_restart(struct etimer *et);

void etimer_adjust(struct etimer *et, int td);

clock_time_t etimer_expiration_time(struct etimer *et);

clock_time_t etimer_start_time(struct etimer *et);

CCIF int etimer_expired(struct etimer *et);

void etimer_stop(struct etimer *et);

void etimer_request_poll(void);

int etimer_pending(void);

clock_time_t etimer_next_expiration_time(void);

PROCESS_NAME(etimer_process);



最后通过process_start(&etimer_process, NULL);开启定时器进程。

ctimer定时器主要包括一个ctimer结构体和几个方法

struct ctimer {

  struct ctimer *next;

  struct etimer etimer;

  struct process *p;

  void (*f)(void *);

  void *ptr;

};

void ctimer_reset(struct ctimer *c);

void ctimer_restart(struct ctimer *c);

void ctimer_set(struct ctimer *c, clock_time_t t,void (*f)(void *), void *ptr); //时间到了执行f回调函数

void ctimer_stop(struct ctimer *c);

int ctimer_expired(struct ctimer *c);

void ctimer_init(void);

etimer和ctimer只能用一次
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: