定时器

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只能用一次

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值