利用Timer的LED控制.pptx
《利用Timer的LED控制.pptx》由会员分享,可在线阅读,更多相关《利用Timer的LED控制.pptx(11页珍藏版)》请在冰豆网上搜索。
HANBACKELECTRONICSCO.,LTD.利用利用HBE-HBE-Ubi-CC2431Ubi-CC2431的的泛在泛在传感器感器网网络韩国国(株)(株)韩伯伯电子子HANBACKELECTRONICSCO.,LTD.利用利用TimerTimer的的LEDLED控制控制本章将进行利用可以在特定时间后收到Timer.fired()event的Timer组件,使HBE-Ubi-CC2431节点的RedLED每隔一段时间on/off的实习。
理解利用节点的Timer的LED控制,尝试通过创建例题程序,直接控制节点的LED运行。
理解Timer组件的功能和使用方法。
2022-11-102022-11-1022实习目目标概概要要HANBACKELECTRONICSCO.,LTD.利用利用TimerTimer的的LEDLED控制控制BlinkTimer应用例题由配置文件BlinkTimer.nc文件和模块部分BlinkTimerM.nc文件构成,它们位于opttinyos-2.xcontribcc2431BlinkTimer文件夹内。
2022-11-102022-11-1033例例题构构成成BlinkTimer.ncBlinkTimer.nc是记录BlinkTimer例题中使用的组件间的连接的配置文件。
BlinkTimerBlinkTimerBlinkTimerM.nBlinkTimerM.ncc是记录为了使例题运行的编程的模块文件。
HANBACKELECTRONICSCO.,LTD.利用利用TimerTimer的的LEDLED控制控制Blink.nc2022-11-102022-11-10444:
在BlinkTimer.nc中,为了BlinkTimer例题的运行,声明了MainC,BlinkTimerM,LedsC,newTimerMilliC()等4个组件。
57:
连接下层组件的接口和模块文件的接口。
MainC和BlinkTimerM.Boot接口连接后,连接在BlinkTimerM中使用的Leds接口与LedsC。
并且,连接TimerMilliC组件的Timer接口和BlinkTimerM的Timer接口。
如前所述,当接口的原型名称相同时,可以省略,在以上文件中都是被省略的情况。
(5,6,7行)1:
configurationBlinkTimer2:
3:
implementation4:
componentsMainC,BlinkTimerM,LedsC,newTimerMilliC();5:
BlinkTimerM.Boot-MainC;/在MainC.Boot中Boot被省略的状态6:
BlinkTimerM.Leds-LedsC;/在LedsC.Leds中Leds被省略的状态7:
BlinkTimerM.Timer-TimerMilliC;/Timer被省略的状态8:
HANBACKELECTRONICSCO.,LTD.利用利用TimerTimer的的LEDLED控制控制2022-11-102022-11-1055TimerMilliC情况时,可以向多个组件提供独立的定时器。
像在理论篇章中所学一样,阐述了从多个组件同时被使用的特别组件被声明为generic,使用时通过保留字new使用。
如在第4行代码中所示,TimerMillic与其它组件不同,使用保留字new的理由是由于TimerMillic组件是generic组件。
左侧表格整理显示了Timer接口函数。
(startOneShot(uint32_tdt)函数和startPeriodic(uint32_tdt)函数使用最多)commanduint32_tgetdt()返回设定的定时器的周期。
commanduint32_tgetNow()返回当前时间。
commanduint32_tgett0()返回定时器被调用的时间t0。
(从t0时间起经过设定时间后,事件发生。
)commandboolisOneShot()确认是否是通过一次调用而结束的定时器commandboolisRunning()确认当前定时器是否已被设定,并在运行中commandboolstartOneShot(uint32_tdt)Dt时间后,使事件发生一次commandboolstartOneShot(uint32_tt0,uint32_tdt)经过t0+dt时间后,使事件发生。
commandboolstartPeriodic(uint32_tdt)以dt时间作为周期,持续重复发生事件。
commandboolstartPeriodic(uint32_tt0,uint32_tdt)从t0后起,以dt为周期反复使事件发生commandvoidstop()使当前进行中的timer停止。
HANBACKELECTRONICSCO.,LTD.利用利用TimerTimer的的LEDLED控制控制BlinkTimerM.nc2022-11-102022-11-106617:
声明要使用的接口,implementation部分记录了与实际运行相关的内容。
4:
Timer接口内的TMilli参数表示当前Timer以ms为单位。
911:
如果TinyOS完成了开始准备,依靠MainC组件,Boot.booted()函数被调用。
在booted()事件函数中,为了每隔1秒反复运行,调用Timer.startPeriodic(1000)。
通过该函数,每1000ms(1秒),TTimer.fired()event函数被周期性地调用。
1214:
在Timer.fired事件函数中,使led0(Red)Toggle,使红色LED每隔1秒周期进行闪烁。
1:
moduleBlinkTimerM2:
uses3:
interfaceBoot;4:
interfaceTimer;5:
interfaceLeds;6:
7:
8:
implementation9:
eventvoidBoot.booted()10:
callTimer.startPeriodic(1000);11:
12:
eventvoidTimer.fired()13:
callLeds.led0Toggle();14:
15:
HANBACKELECTRONICSCO.,LTD.利用利用TimerTimer的的LEDLED控制控制准备物品准备物品=HostPC,节点1个,FlashProgrammer工具,下载线=实习方法实习方法2022-11-102022-11-1077BlinkTimerBlinkTimer实习首先,运行cygwin。
如下输入,移动到例题文件夹中。
cd/opt/tinyos-2.x/contrib/cc2431cdBlinkTimer现在输入makecc2431,进行编译。
编译后,build/cc2431文件夹被创建,在该文件夹内生成了app.hex文件。
HANBACKELECTRONICSCO.,LTD.利用利用TimerTimer的的LEDLED控制控制将编译的将编译的hex文件下载到节点中文件下载到节点中2022-11-102022-11-1088首先,将要下载的HBE-Ubi-CC2431节点的USBMCU开关移向MCU一侧,然后通过USB线与PC连接。
接下来,单击桌面上的SmartRFProg.exe快捷方式图标,FlashProgrammer运行后,画面将如下图所示。
HANBACKELECTRONICSCO.,LTD.利用利用TimerTimer的的LEDLED控制控制2022-11-102022-11-1099由于一个HBE-Ubi-CC2431节点已与PC连接,因此在此FlashProgrammer的初始画面上将如图所示以蓝色行显示哪个节点与PC连接。
现在,在Flash路径输入行中单击按钮,选择刚才编译的例题的app.hex文件。
HANBACKELECTRONICSCO.,LTD.利用利用TimerTimer的的LEDLED控制控制2022-11-102022-11-101010如果设定了要下载的hex文件,接下来单击FlashProgrammer下端的“Performaction”按钮。
如果单击此按钮,所选的hex文件将会通过C8051F320被下载到cc2431芯片中。
HANBACKELECTRONICSCO.,LTD.利用利用TimerTimer的的LEDLED控制控制2022-11-102022-11-101111u实习结果实习结果通过按照上述顺序的实习,对利用节点的Timer的LED控制进行理解,通过实际实习,确认每隔1秒RedLED进行on/off变换,从而可以熟知LED运行及Timer的使用方法。