九、实时任务调度(rtimer)

实时模块处理实时任务的调度和执行(具有可预测的执行时间)。

Data Structures

struct   rtimerRepresentation of a real-time task. More...
Files
file    rtimer.c
实时计时器模块中与体系结构无关的部分的实现。

file rtimer.h

real-time timer module的头文件

Defines

#define  RTIMER_NOW()Get the current clock time. 获取当前时钟时间
#define RTIMER_TIME(task)Get the time that a task last was executed. 获取最后一次执行任务的时间。

Functions

void rtimer_init (void)初始化
int rtimer_set (struct rtimer *task, rtimer_clock_t time, rtimer_clock_t duration, rtimer_callback_t func, void *ptr)发布实时任务。
void    rtimer_run_next (void)Execute the next real-time task and schedule the next task, if any. 执行下一个实时任务并调度下一个任务(如果有的话)。
Detailed Description
实时模块处理实时任务的调度和执行(具有可预测的执行时间)。

Define Documentation

#define RTIMER_NOW   (       )
获取当前时钟时间

Returns:
当前时间
这个函数返回实时模块认为的当前时间。当前时间用于设置实时任务的超时。

#define RTIMER_TIME  (       task    )
获取最后一次执行任务的时间。

Parameters:
task 任务
Returns:
任务最后一次执行的时间
这个函数返回任务最后一次执行的时间。这通常用于在没有时钟漂移的情况下获得任务的周期性执行

Function Documentation

void rtimer_init (   void        )
初始化
此函数初始化实时调度器,必须在启动时调用,然后调用实时调度器中的任何其他函数。
由main函数调用
void rtimer_run_next (   void        )
执行下一个实时任务并调度下一个任务(如果有的话)。

依赖于体系结构的代码将调用此函数来执行和调度下一个实时任务。

int rtimer_set   (   struct rtimer *     task,
rtimer_clock_t  time,
rtimer_clock_t  duration,
rtimer_callback_t   func,
void *  ptr
)
发布实时任务。
由main函数调用

Parameters:
task 指向先前使用RTIMER_TASK()声明的任务变量的指针。
time 执行任务的时间。
duration 未使用的参数。
func 任务执行时要调用的函数。
ptr 将作为回调参数提供的不透明指针function.
Returns:
如果可以调度任务,则为非零(true);如果无法调度任务,则为零(false)。
这个函数在将来的指定时间调度一个实时任务。

十、秒计时器库(stimer)

stimer库提供用于设置、重置和重新启动计时器的功能,以及用于检查计时器是否已过期。

Data Structures
struct  stimerA timer. More...
Files
file    stimer.c
计时器的秒库实现。
ile stimer.hstimer头文件

Functions

void stimer_set (struct stimer *t, unsigned long interval)Set a timer. 设置一个定时器
void    stimer_reset (struct stimer *t)Reset the timer with the same interval. 用相同的间隔重置计时器。
void    stimer_restart (struct stimer *t)Restart the timer from the current point in time. 从当前时间点重新启动计时器。
int stimer_expired (struct stimer *t)Check if a timer has expired. 检查计时器是否已过期。
unsigned long   stimer_remaining (struct stimer *t)The time until the timer expires. 时间直到计时器结束。
unsigned long   stimer_elapsed (struct stimer *t)The time elapsed since the timer started. 计时器启动后经过的时间。

Detailed Description
stimer库提供用于设置、重置和重新启动计时器的功能,以及用于检查计时器是否已过期。
应用程序必须“手动”检查其计时器是否已过期;这不是自动完成的。
计时器被声明为struct stimer,对计时器的所有访问都是通过指向声明的计时器的指针进行的。

Note:
当计时器过期时,stimer库不能发布事件。应该为此使用etimer。
stimer库使用时钟库来测量时间。间隔应该以秒为单位指定。

Function Documentation

unsigned long stimer_elapsed (   struct stimer *     t   )
The time elapsed since the timer started.这个函数返回经过的时间。

Parameters:
t 计时器指针
Returns:
从计时器最后一次启动后经过的时间

int stimer_expired   (   struct stimer *     t   )
检查计时器是否已过期。
由uip_ds6_periodic().调用

此函数测试计时器是否已过期,并根据其状态返回true或false。

Parameters:
t 计时器指针
Returns:
如果计时器已过期,则为非零,过期为零。

unsigned long stimer_remaining   (   struct stimer *     t   )
此函数返回计时器到期前的时间。
由uip_nd6_ra_input().调用

Parameters:
t 计时器指针
Returns:
计时器到期前的时间。

void stimer_reset    (   struct stimer *     t   )
用相同的间隔重置计时器。

此函数使用给定给stimer_set()函数的相同间隔重置计时器。间隔的起始点是计时器最后过期的确切时间。因此,与stimer_restart()函数不同,此函数将使计时器随时间保持稳定。

Parameters:
t 计时器指针.
See also:

void stimer_restart  (   struct stimer *     t   )
从当前时间点重新启动计时器。

此函数重新启动计时器,其间隔与给定给stimer_set()函数的间隔相同。计时器将在当前时间开始。

Note:
如果使用此函数重置,则周期计时器将偏移。对于preioric timer,可以使用stimer_reset()函数。
Parameters:
t 计时器指针

void stimer_set  (   struct stimer *     t,
unsigned long   interval
)
Set a timer.
此函数用于设置将来某个时间的计时器。函数stimer_expired()在计时器
过期后的值为true。
由neighbor_info_packet_sent(), uip_ds6_addr_add(), uip_ds6_defrt_add(),
uip_ds6_init(), uip_ds6_nbr_add(), uip_ds6_periodic(),uip_ds6_prefix_add(), uip_nd6_na_input(), and uip_nd6_ra_input().调用

Parameters:
t 计时器指针
interval 计时器到期前的时间间隔。

十一、计时器库

Contiki内核不支持定时事件。

Data Structures
struct  timerA timer. More...
Files
file    timer.cTimer library implementation.file    timer.hTimer library header file.

Functions

void timer_set (struct timer *t, clock_time_t interval)设置一个定时器。
void    timer_reset (struct timer *t)用相同的间隔重置计时器。
void    timer_restart (struct timer *t)从当前时间点重新启动计时器。
int timer_expired (struct timer *t)检查计时器是否已过期。
clock_time_t    timer_remaining (struct timer *t)到计时器结束前的时间

Detailed Description
contiki内核不支持定时事件。

相反,想要使用计时器的应用程序需要显式地使用计时器库。
计时器库提供设置、重置和重新启动计时器的功能,以及检查计时器是否已过期。应用程序必须“手动”检查其计时器是否已过期;这不是自动完成的。
一个定时器被声明为一个结构定时器,所有对定时器的访问都是通过一个指向声明的定时器的指针来完成的。

Note:
当计时器过期时,计时器库无法发布事件。应该为此使用etimer。
定时器库使用时钟库来测量时间。间隔应该按照时钟库使用的格式指定。

Function Documentation

int timer_expired    (   struct timer *  t   )
检查计时器是否已过期。
由main(), and uip_ds6_periodic().调用

此函数测试计时器是否已过期,并根据其状态返回true或false。
Parameters:
t 计时器指针
Returns:
如果计时器已过期,则为非零,否则为零。

clock_time_t timer_remaining (   struct timer *  t   )
此函数返回计时器到期前的时间。

Parameters:
t 计时器指针
Returns:
计时器到期前的时间。

void timer_reset (   struct timer *  t   )
用相同的间隔重置计时器。
由etimer_reset(), and main().调用

此函数使用给定给timer_set()函数的相同间隔重置计时器。间隔的起始点是计时器最后过期的确切时间。因此,与timer_restart()函数不同,此函数将使计时器随时间保持稳定。

Parameters:
t 计时器指针

void timer_restart   (   struct timer *  t   )
从当前时间点重新启动计时器。
由etimer_restart().调用

该函数使用与timer_set()函数相同的间隔重新启动计时器。计时器将在当前时间开始。

Note:
如果使用此函数重置,则周期计时器将偏移。对于preioric timer,可以使用timer_reset()函数。
Parameters:
t 计时器指针

void timer_set   (   struct timer *  t,
clock_time_t    interval
)
Set a timer.
由etimer_set(), main(), tr1001_init(), and uip_ds6_addr_add().调用

此函数用于设置将来某个时间的计时器。函数timer_expired()在计时器过期后的值为true。

Parameters:
t 计时器指针
interval 计数器结束前的时间间隔

contiki学习笔记(八)rtimer stimer 计时器库相关推荐

  1. python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑

    python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件? 当我们点开下载页时, 一 ...

  2. python3第三方库手册_python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑...

    python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件? 当我们点开下载页时, 一 ...

  3. ReactJS学习笔记八:动画

    ReactJS学习笔记八:动画 分类: react学习笔记 javascript2015-07-06 20:27 321人阅读 评论(0) 收藏 举报 react动画 目录(?)[+] 这里只讨论Re ...

  4. 【opencv学习笔记八】创建TrackBar轨迹条

    createTrackbar这个函数我们以后会经常用到,它创建一个可以调整数值的轨迹条,并将轨迹条附加到指定的窗口上,使用起来很方便.首先大家要记住,它往往会和一个回调函数配合起来使用.先看下他的函数 ...

  5. ROS学习笔记八:创建ROS msg和srv

    ROS学习笔记八:创建ROS msg和srv 本节主要讲述了如何创建和建立ROS msg和srv,同时使用命令行工具rosmsg.rossrv和roscp. msg和srv简介 msg:描述ROS m ...

  6. Contiki学习笔记——Cooja启动失败

    Contiki学习笔记--Cooja启动失败 Cooja启动 Cooja启动 进入Terminal: cd Contiki/tools/cooja ant run 出现错误: Could not fi ...

  7. Halcon 学习笔记八:颜色识别

    Halcon 学习笔记八:颜色识别 一.图像处理需要的知识 二.图像处理的预处理和分割过程 二.颜色识别的方法 三.例子一 四.例子二 五.例子三 一.图像处理需要的知识 1.图像处理基础(rgb(h ...

  8. ZooKeeper学习笔记(八):ZooKeeper集群写数据原理

    写数据原理 写流程直接请求发送给Leader节点 这里假设集群中有三个zookeeper服务端 ACK (Acknowledge character)即是确认字符,在数据通信中,接收站发给发送站的一种 ...

  9. MongoDB 学习笔记八 复制、分片、备份与恢复、监控

    MongoDB 学习笔记八 复制.分片.备份与恢复.监控 MongoDB复制(副本集) 什么是复制? MongoDB 复制原理 MongoDB 副本集设置 副本集添加成员 MongoDB 分片 分片 ...

最新文章

  1. 【汇总】ElementUI中高频次使用代码片段
  2. Sqoop在导入MySQL数据时遇到Timestamp列为0000-00-00 00:00:00报错
  3. 嵌入式系统编程软件架构主要包括哪些知识?
  4. php 编译 线程安全,PHP7(zts 线程安全版)编译安装(支持多线程pthreads)
  5. 添加javascript代码:_javascript事件?你又了解多少呢
  6. 12c表空间不存在_一文看懂Oracle查询表空间的每日增长量和历史情况统计
  7. 在vue中实现picker样式_vue vant中picker组件的使用
  8. 《深入理解OSGi:Equinox原理、应用与最佳实践》笔记_1_运行最简单的bundlehelloworld...
  9. nginx模块nginx_upstream_check_module来检查后端服务器的健康情况
  10. R语言实现常用的5种分析方法(主成分+因子+多维标度+判别+聚类
  11. 代码审查(咳咳......又降温了啊....!!!!)
  12. python编程教学软件-B站最受欢迎的Python教程,免费教学视频可以下载了
  13. 在创建生成WIFI二维码手机扫码链接
  14. 做新媒体短视频运营需要什么技能
  15. 2022大淘宝技术工程师推荐书单
  16. JavaScript高级编程——BOM
  17. 评价效率DEA方法原理
  18. windows批量部署
  19. 数据库:MySQL Workbench如何连接远程数据库
  20. 两款网页在线刷网站访客pv和ip的源码

热门文章

  1. 流程图(flowchart)语法
  2. (转) 深度学习在目标跟踪中的应用
  3. 《呼吸法门精要》南师所讲。读后感
  4. win7计算机u盘不显示盘符,U盘不显示磁盘盘符的解决方法
  5. 求一个网页设计作业——个人博客(HTML+CSS)
  6. 【DIY】手把手教你爆改一台手机制作掌上游戏机
  7. 谷粒学院day08——课程章节与小节的实现
  8. 第一行代码第二版6.4.1小节创建数据库中遇到adb shell出错的问题
  9. 存储卡的相关标准.CF.SD.SDHC.MMC.TF
  10. 华三防火墙h3cf100配置双宽带_华三防火墙H3 F100基本配置说明.doc