Contiki Rtimer 模块
一、rtimer概述
The Contiki rtimer library provides scheduling and execution of real-time tasks (with predictable execution times)
数据结构:
struct rtimer {
rtimer_clock_t time;
rtimer_callback_t func;
void *ptr;
};
typedef void (* rtimer_callback_t)(struct rtimer *t, void *ptr);
1、rtimer_init
void
rtimer_init(void)
{
rtimer_arch_init();
}
rtimer_arch_init是跟平台相关的,rtimer_arch_init() is called by the rtimer library to initialize the rtimer architecture code.
2、rtimer_set
int
rtimer_set(struct rtimer *rtimer, rtimer_clock_t time,
rtimer_clock_t duration,
rtimer_callback_t func, void *ptr)
{
int first = ; PRINTF("rtimer_set time %d\n", time); if(next_rtimer == NULL) {//空,first置1
first = ;
} rtimer->func = func;//设置回调函数
rtimer->ptr = ptr;//回调函数第一个参数 rtimer->time = time;//设置
next_rtimer = rtimer;//设置next_rtimer if(first == ) {//如果是1
rtimer_arch_schedule(time);
}
}
rtimer用来设置rtimer,即在特定的时间(time)执行特定的回调函数(func)。
其中rtimer_arch_schedule函数是跟平台相关的,被底层用来确定调用rtimer_run_next的时间,rtimer_run_next会在特定的时间执行回调函数。
3、rtimer_run_next
void
rtimer_run_next(void)
{
struct rtimer *t;
if(next_rtimer == NULL) {
return;
}
t = next_rtimer;
next_rtimer = NULL;//重新设置为NULL
t->func(t, t->ptr);//执行回调函数
if(next_rtimer != NULL) {//在执行回调函数期间有rtimer set,在调用一次rtimer_arch_schedule
rtimer_arch_schedule(next_rtimer->time);
}
return;
}
rtimer_run_next会调用特定的next_rtimer的回调函数。
rtimer_run_next是在底层被调用的。
直观的流程:
rtimer_set(设置rtimer) ---> rtimer_arch_schedule(通知底层在特定时间) ------> rtimer_run_next(在特定时间执行回调函数) -------> rtimer_set
注:RTIMER_NOW() RTIMER_SECOND rtimer_arch_init() rtimer_arch_now() rtimer_arch_schedule()等都是跟平台有关的。
Contiki Rtimer 模块的更多相关文章
- Contiki Etimer 模块
一.Etimer概述 Etimer提供产生时间事件(timed event)的机制,当设定好的timer到期时,将会给设定etimer的process发送一个PROCESS_EVENT_TIMER 事 ...
- Contiki clock模块
一.functions for handling system time clock_time_t clock_time(void);//return the current system time ...
- Contiki Ctimer模块
Ctimer 提供和Etimer类似的功能,只是Ctimer是在一段时间后调用回调函数,没有和特定进程相关联. 而Etimer是在一段时间后发送PROCESS_EVENT_TIMER事件给特定的进程. ...
- [置顶] STM32移植contiki进阶之三(中):timer 中文版
鉴于自己英语水平不高,在这里,将上一篇关于contiki 的timer的文章翻译为中文,让自己在学习的时候,更方便点.文中有许多不是很通顺的地方,将就吧. Timers Contiki系统提供了一套时 ...
- Contiki-Timer 概述
Contiki有一个clock模块和一系列timer模块:timer,stimer,ctimer,etimer,和rtimer. 一.clock模块 clock模块提供一些处理系统时间的函数,还有一些 ...
- Contiki Timer & Stimer 模块
一.Timer API struct timer { clock_time_t start; clock_time_t interval; }; CCIF void timer_set(struct ...
- Contiki 2.7 Makefile 文件(四)
3.第三部分 这里我们假设TARGET为native (1) OBJECTDIR = obj_$(TARGET) LOWERCASE = -abcdefghijklmnopqrstuvwxyz UPP ...
- Contiki源码结构
Contiki源码结构 apps目录下,用于存放Application,也就是我们的应用程序放在这个目录下.如webserver,webrowser等,如下图所示. core目录是contiki操作系 ...
- cc2530 makefile简略分析 <contiki学习之三>
前面将contiki的makefile框架都理了下,这篇就以cc2530为收篇吧,也即makefile分析就该到此为止了. contiki/examples/cc2530dk 打开Makefile如下 ...
随机推荐
- mongodb文档的CRUD
本章会介绍对数据库移入或者移出数据的基本操作 向集合添加文档 从集合删除文档 更新现有的文档 为这些操作选择合适的安全级别 添加删除数据库 添加数据库 :use foo 如果存在foo 就use ...
- 处理中文空格.replace((char)12288,' ')
trim()只能替换英文空格.replace((char)12288,' ')是替换中文
- css:html() text() val()
转http://www.jb51.net/article/35867.htm .html()用为读取和修改元素的HTML标签 对应js中的innerHTML .html()是用来读取元素的HTM ...
- Chrome 插件 CrxMouse 去除后门优化版
说明 CrxMouse 是一款挺不错的 Chrome 插件.仅仅是据说这个插件会在后台偷偷的上传用户的浏览数据,无论上传的内容是不是涉及隐私数据,总让人认为不放心,可是因为插件本身功能还是挺好用的,所 ...
- Hbase Basic
启动:start-hbase.sh 停止:stop-hbase.sh 进入shell:hbase shell 状态:status 创建表:create 'tableName', 'colFam1' 查 ...
- EventListener中的handleEvent
在研究代码时发现类似这样一段代码: function TEST() {} TEST.prototype = { init:function() { window.addEventListener('m ...
- c#线程顺序执行
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- checkStyle使用具体解释
简单介绍 checkStyle是一款代码格式检查工具.它依据设置好的编码规则来自己主动检查代码.比方命名规范,文件长度.代码行长度等等.代码检查工具是保证项目代码质量.统一编码风格的一种重要途径.本篇 ...
- TP 上传excel
<?php class ExcelAction extends Action{ public function read($filename,$encode='utf-8'){ vendor(' ...
- HTML5(lufylegend.js练习)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...