查看: 2354|回复: 0

[EVAL-WSN]操作系统篇——Contiki分析之timer

[复制链接]
  • TA的每日心情
    奋斗
    2023-7-8 16:17
  • 签到天数: 971 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2016-1-23 09:33:26 | 显示全部楼层 |阅读模式
    分享到:
    contiki-2.5\core\sys\timer.c


    1 timer结构体

    struct timer {
      clock_time_t start;/* 开始时间 */
      clock_time_t interval;/* 时间间隔 */
    };


        timer是一个独立结构,用于获取当前的时间,并计算时间间隔,本身并不能产生事件。一般用于内部进行的时间的获取,很少用于阻塞操作,使用后要手动激活任务


    2、timer 代码分析

    Functions
    void timer_set (struct timer *t, clock_time_t interval)

    Set a timer.
    void timer_reset (struct timer *t)

    Reset the timer with the same interval.
    void timer_restart (struct timer *t)

    Restart the timer from the current point in time.
    int timer_expired (struct timer *t)

    Check if a timer has expired.
    clock_time_t timer_remaining (struct timer *t)

    The time until the timer expires.

    1. void
    2. timer_set(struct timer *t, clock_time_t interval)
    3. {/*用当前时间初始化start,并设置间隔interval*/
    4.   t->interval = interval;
    5.   t->start = clock_time();
    6. }

    7. void
    8. timer_reset(struct timer *t)
    9. {
    10.   /*为什么不t->start = clock_time()?为了程序可预测性?
    11.     造成:clock_time() 不断增加,更不是固定的周期
    12.    */
    13.   t->start += t->interval;
    14. }

    15. void
    16. timer_restart(struct timer *t)
    17. {
    18.   t->start = clock_time();
    19. }

    20. int
    21. timer_expired(struct timer *t)
    22. {
    23.   /* Note: Can not return diff >= t->interval so we add 1 to diff and return
    24.      t->interval < diff - required to avoid an internal error in mspgcc. */
    25.   clock_time_t diff = (clock_time() - t->start) + 1;
    26.   return t->interval < diff;

    27. }

    28. clock_time_t
    29. timer_remaining(struct timer *t)
    30. {
    31.   return t->start + t->interval - clock_time();
    32. }
    复制代码
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-4-20 19:25 , Processed in 0.111003 second(s), 15 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.