CC2538之TinyOS例程实验:3/4-timer nesC编程最难理解部分参数化接口讲解

前面两篇已经介绍了TinyOS的优点,nesC的事件代码分析,可以通过视频去学会自己编写基本应用

如果说interface,event你还觉得TinyOS的nesC的引入吸引不了你的话,那么现在咱们进入个人认为TinyOS编程最难的地方也是整个最吸引我的地方

参数化接口(parameterized interface),其中我们早就接触到了-blink例程


大家要注意的是对于TinyOS来说,components包含configuration和module,interface都是可以把他理解成一个数组元素,不要死板的理解成一个C文件,他们都是一个元素,当然也可以实例化n个;这就是参数化接口的意义!也是本人最喜欢使用TinyOS的最重要的原因;


至此咱们可以想一下,假设n路传感器,代码实现(驱动是一样的),就可以使用参数接口化来编写代码,有一点点对象的意思


回忆一下blink代码:

configuration BlinkAppC
{
}
implementation
{
  components MainC, BlinkC, LedsC;
  components new TimerMilliC() as Timer0;
  components new TimerMilliC() as Timer1;
  components new TimerMilliC() as Timer2;


  BlinkC -> MainC.Boot;

  BlinkC.Timer0 -> Timer0;
  BlinkC.Timer1 -> Timer1;
  BlinkC.Timer2 -> Timer2;
  BlinkC.Leds -> LedsC;
}
TimerMilliC()的组件只有一份代码,为什么可以多个实例组件呢,这个也就是参数化接口的作用,相同的比较常常能看见的还有LedsC连接到底层发现IO口部分的参数化接口部分 可以随意的设定led对应的IO口;

前面的blip和printf例程都使用到了timer,为什么没有讲解timer的用意也在此,这个参数化接口是nesC语言的杀手锏;

参数化接口有一点类似C语言的定义 uint_8 array[] = {0,0,0,0};的意思,只不过这个数组可以广域化一下,如components,interface,module等


带来的好处是显而易见的,一次编程,多次使用,如内存池pool,fragpool等,理解参数化编程最好的代码应该是fragpool



分析的是interface Timer<TMilli>,那么首先必须先看的是Timer.h,目录:tinyos-main-release_tinyos_2_1_2\tos\lib\timer
// The TinyOS Timer structures are discussed in TEP 102.
#ifndef TIMER_H
#define TIMER_H

// @note TSecond is an extension to be added in a successor to TEP 102
typedef struc
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值