cc2530-关于Contiki系统的时钟
2016-03-06 12:01
246 查看
Contiki系统有两个系统时钟,分别是粗粒度时钟(coarse-grained)和细粒度时钟(fine-grained)。
其中
粗粒度时间使用的是128HZ的频率,例如CLOCK_SECOND。
细粒度时间使用的是32768HZ的频率,例如RTIMER_SECOND。
Contiki系统有四种类型的定时器,分别是:timer,etimer,ctimer和rtimer
前面三个都使用了粗粒度时钟来计时,rtimer使用了细粒度时钟计时,他们的含义如下:
timer:被动定时器,只能用来跟踪过去的时间;
etimer:主动定时器,当时间到时发送一个事件;
ctimer:主动定时器,当时间到时调用一个函数;
rtimer:实时定时器,当时间到时调用一个函数。
etimer使用例程:
ctimer使用例程:
rtimer使用例程:
1、在设置时间的时候设置硬件中断
2、产生一个回调
其中
粗粒度时间使用的是128HZ的频率,例如CLOCK_SECOND。
细粒度时间使用的是32768HZ的频率,例如RTIMER_SECOND。
Contiki系统有四种类型的定时器,分别是:timer,etimer,ctimer和rtimer
前面三个都使用了粗粒度时钟来计时,rtimer使用了细粒度时钟计时,他们的含义如下:
timer:被动定时器,只能用来跟踪过去的时间;
etimer:主动定时器,当时间到时发送一个事件;
ctimer:主动定时器,当时间到时调用一个函数;
rtimer:实时定时器,当时间到时调用一个函数。
etimer使用例程:
static struct etimer etim; PROCESS_THREAD(my_process,ev,data) { PROCESS_BEGIN(); while(1) { printf("Uptime (seconds): %lu\n",clock_seconds()); etimer_set(&etim,CLOCK_SECOND); PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&etim)); } PROCESS_END(); }
ctimer使用例程:
static struct ctimer callback_timer; static void callback(void *data) { printf("%s\n",(char *)data); } void application(void) { ctimer_set(%callback_timer,CLOCK_SECOND,callback, "Hello, callback!"); }
rtimer使用例程:
1、在设置时间的时候设置硬件中断
2、产生一个回调
//设置rtimer static struct rtimer rt; rtimer_set(&rt, //指向rtimer的结构体 RTIMER_NOW() + RTIMER_SECOND,//1s 1, //持续的时间 rt_callback, //设置指向回调函数的指针 NULL); //设置回调函数的形参 //回调函数 statci void rt_callbcak(struct rtimer *rt, void *data) { printf("callback!\n"); }
相关文章推荐
- 教程--云vps续费
- 无法启动此程序,因为计算机中丢失MFC42D.DLL。尝试重新安装该程序以解决此问题
- HDU—— 2005 第几天? (java版)
- HDFS对象存储--Ozone架构设计
- (十九)中介者模式-代码实现
- 近200篇机器学习&深度学习资料分享【转载】
- bzoj 3551 [ONTAK2010]Peaks加强版(kruskal,主席树,dfs序)
- wordpress 3步历史图片加水印
- 学习web前端三个月感悟
- fzu2092收集水晶 记忆化搜索
- Java 抽象类与接口区别
- Linux系统运维/正则表示法/6-1
- 【历届试题】矩阵翻硬币
- 简化脚本
- 目录处理命令
- 重置树莓派的密码
- jQuery总结
- 谷歌TabLayout的简单例子
- hadoop源码分析环境搭建(win7+cygwin+jdk+ant+eclipse+Hadoop-1.0.0)
- Hibernate - 使用注解完成映射