文稿分析案例_第1页
文稿分析案例_第2页
文稿分析案例_第3页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

CC2538cbcc2538cb套件如上图;地址套件支持TinyOS,Contiki3.0等主流的 n系统 QQ n/Zigbee序模块说备1USBUART/供2复345Mcu512kFlash/32k6预留,DIY使用(8CC25387D3(PC0~绿 D2(PC1~黄 D1(PC2~红8USB转串口占用CC2538PA0/PA1注CC2538的IO口可以软件编程指定功能,如UART、SPI、I2C、SSI、ADC、输入、输出等,灵活度高,故用户可以使用预留的IO口完成DIY传感器的接入或其它的总线通信;②,cc2538cb节点采用PL2303USB转串而不是直接使用2538的USB功能;在于2303的驱动对于虚拟机Linux/Ubuntu,Android等是免驱的,能够更加简单快速的使用Linux/Android,用户可以OTG线完成cc2538cb和Android等的接入测试;我们在学习zigbee或6lon的时候两个主流系统的选择:TinyOS和Contiki;TinyOS初学者学习使用优点: 2, 事件驱动机制,类似单片机的设计:主循环执行代码,硬件中断打断,事件类似单片机的硬件中断; nesC语言使代码阅读和分析更加快捷 的技术沉淀较好,从官网到源码模块部分帮助文档齐全正如编程手册介绍nesC是C语言的方言,支持C语言的所有特性,并在此基础上采用了JAVA的一些程序设计思想;nesC有几大的概念即组件,类比C语言是完成一个功能模块的C文件的集接口,组件连接文件,类比C语言的.h文件,进行函数方法,返回事件的nesC编译器编译流再此让我们来了解一下nesC编译器生成最终单片机执行二进制文件流程nesCnesC语言支持C语言所以特性,故相关的c文件和h文件不做介绍,现在让我们编程必须用到的文件1,3,Module4,前面介绍了nesC的组件(components)回忆一下C语言的代码编写,我们需要编写c/h/makefile文件,多个c文件之间的函数和全局变量调用我们是通过包含.h文件实现;对于现,组件调用层次遵循自顶而下,需要完成一个功能我们在c语言一般编写main.c文件来实nesC中则编写一个组件,同时编写Makefile来通知nesC编译器编译该工程;Module,一定要遵循文件名称和代码中的configuration/module一致;的编程,首先应该先编写c文件,module好是如此: 其中的蓝色字体部分为nesC关键字provides/uses关键字,components向外提供接口(interface)或者使用哪些接如blink例程:BlinkC.nc*1led点灯实*节点需求数*编译命令make********************************************************************/#include"Timerh"moduleBlinkCusesinterfaceTimer<TMilli>asusesinterfaceTimer<TMilli>asusesinterfaceTimer<TMilli>asusesinterfaceusesinterface}taskvoid*启动eventvoid ) *Timer0定时时间到事eventvoid /**翻转led0电平,对应cc2538cb的绿灯 call*taskvoid /**翻转led1电平,对应cc2538cb的黄灯 call *Timer1定时时间到事eventvoid /****提交time1_Task任务 post *Timer2定时时间到事eventvoid /**翻转led2电平,对应cc2538cb的红灯 call} Leds nesC将C语言的函数称为command,调用command使用关键字call,使用call 修饰函数方法 (提供者)存在事件返回,那么消费者必须在代码module中实现事件部分代码; 除去C语言switch语句功能在nesC中用来修饰event,表明该事件被忽略 用来修饰command/event,和mcu硬件操作相关使用 任务关键字,修饰一个函数为任 提交任务关键字,post分析例程现在我们完成了一个名为BlinkC的module(components)的代码的编写,类比C语言我们完成了c文件的编写,但是对于TinyOSnesC我们并没有指定BlinkC用到的接口是谁提供的,也就是我们写C语言时候的包含.h文件才能调用那些c文件提供的函数和变量,下面我们需要学习的文件是configuration,这个文件接下来将完成这些工作;文件代码原型 name(形参 ……}其中的蓝色字体部分为nesC关键字configuration/implementation为固定写法configuration的作用在于描述我们编写的组件对外提供哪些interface,对内使用了那些componentsblink例程来分析,BlinkAppC.nc源 componentsMainC,BlinkC, componentsnewTimerMilliC()as componentsnewTimerMilliC()as componentsnewTimerMilliC()as BlinkC-> BlinkC.Timer0-> BlinkC.Timer1-> BlinkC.Timer2-> BlinkC.Leds-> }componentsMainC,BlinkC,LedsC这句代码我们看到上一节讲到的moduleBlinkCBlinkCMainC.Boot开始描述连接(wire)BlinkC.Boot下面介绍连接符的使 =这三个符号,消费者->生产者等价于生产者<-消费者,=interface之间的as,重命名关键字,等价于给components或interface重命下面大家可以自行阅读 源码和 那么我们说现在写的是C语言中的h文件,实际上咱们只是写了一半,那么对于nesC我们需要编写interface来进行函数(事件),如果咱们编写的组件向外提供了interface,interface文件的作用才是咱们在c语言h文件中函数; 编程的在于组件和接口,接口文件代码原型写interfaceinterface_name<形参 }前面提到了provides/uses是提供/使用接口,interface文件就是通知nesC编译器接口的command/event的;如blink例程用到了MainC组件,可以去查看Main.nc文件,它提供了一个Boot接口;到此为止我们已经学习了nesC的三种文件,也就完成了基本源码的编写,由于我们并没有使用DE等工具来建立工程,那么我们对工程的管理就需要引入重要的文件Makefle注意此处的Makefile并不是咱们gcc编译编写makeTinyOS的例程工程原则,指定编译输入的组includeCOMPONENT=?类似咱们的工程名,实际使用时通知nesC编译器最上层的组件是?如例程blink,COMPONENT=BlinkAppC;include$(MAKERULES)固定写法,我们清楚TinyOS支持多平台,MAKERULES是环境变量,可以使用echo$MAKERULESsupport/make中实际的makefile以及makerulesnesCwirebin/hex的生成; 编程最部分-参数化接口编nesC所带来的编程的强大之处,大家前面的辛苦学算能够享受nesC带来的好处了;componentsconfigurationmodule,interface都是可以把他理解成一个数组元素,不要死板的理解成一个C文件,他们都是一个元素,当然也可以实例化n个;这就是参数化

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论