您好,欢迎访问三七文档
物联网课程设计实验成员:指导教师:日期:2014/7/3实验一LED组件一、实验内容LED组件:绿灯一直处于熄灭的状态,红灯不停闪烁二、实验步骤1)将基站同电脑用烧录线连接好,打开基站的开关,同时将基站的烧录开关拨上去。2)打开Cygwin开发环境。3)在Cygwin界面中执行cdapps/Demos/Basic/Led,进入到LED实验目录下。4)在LED实验目录下执行makeantc5install进行编译和烧录。5)可以看到实验现象为基站上的绿灯一直处于熄灭的状态,红灯不停闪烁。三、实验代码/**LED示例程序的实现模块,简单的点亮3个LED灯@date2010-1*/moduleLedM{usesinterfaceBoot;}implementation{/**LED灯演示*/taskvoidDemoLed(){/**目前节点上提供两个LED灯LED_BLUE-蓝灯LED_YELLOW-黄灯*/inti,j;while(1){LED_YELLOW_ON;//熄灭黄色LED灯for(i=0;i1000;i++)for(j=0;j500;j++);LED_BLUE_OFF;//点亮蓝色LED灯for(i=0;i1000;i++)for(j=0;j500;j++);LED_BLUE_ON;//熄灭蓝色LED灯}}/**启动事件处理函数,在LED.nc已经关联到MainC.Boot接口系统启动后会调用此函数*/eventvoidBoot.booted(){postDemoLed();}}实验二定时器组件一、实验内容通过定时器让绿色灯闪烁,并且闪烁三次后停止闪烁。二、实验步骤1)将基站同电脑用烧录线连接好,打开基站的开关,同时将基站的烧录开关拨上去。2)打开Cygwin开发环境。3)在Cygwin界面中执行cdapps/Demos/Basic/Timer,进入到定时器实验目录下。4)在定时器代码目录下执行makeantc5install,进行编译和烧录。5)实验现象为基站上绿色灯闪烁,并且闪烁三次后停止闪烁。三、实验代码#defineDBG_LEV5moduleTimerLedM{usesinterfaceBoot;/*Timer为系统接口TMilli指明了定时器的精度为毫秒*/usesinterfaceTimerTMilliasTimer1;/*as关键字为接口别名*/usesinterfaceTimerTMilliasTimer2;}implementation{/**任务:切换黄色LED灯*/taskvoidToggleLedYellow(){LED_YELLOW_TOGGLE;}/**启动事件处理函数,在TimerLed.nc已经关联到MainC.Boot接口系统启动后会调用此函数*/eventvoidBoot.booted(){LED_BLUE_ON;callTimer2.startPeriodic(1000);/**定时器1:持续工作,每隔1s触发一次*/callTimer1.startPeriodic(6000);/**定时器2:持续工作,每隔3s触发一次*///callTimer2.startPeriodic(5000);}/**定时器1的事件处理函数*/eventvoidTimer1.fired(){/**事件处理中直接切换蓝色LED灯*/ADBG(5,ledbluetoggle.\r\n);//LED_BLUE_TOGGLE;LED_YELLOW_ON;callTimer2.stop();/**停止定时器触发*/callTimer1.stop();}/**定时器2的事件处理函数*/eventvoidTimer2.fired(){ADBG(5,ledyellowtoggle.\r\n);postToggleLedYellow();}}实验三串口调试一、实验内容通过级别控制,使得某些调试语句没有被输出到串口。二、实验步骤1)将基站同电脑用烧录线连接好,打开基站的开关,同时将基站的烧录开关拨上去。2)用串口线将基站和PC机器连接起来。3)打开串口助手。4)打开Cygwin开发环境。5)在Cygwin界面中执行cdapps/Demos/Basic/SerialDebug,进入到串口调试实验目录下。6)在串口调试代码目录下执行makeantc5install,进行编译和烧录。7)烧录成功后,实验现象为串口有内容输出,输出内容如下:三、实验代码/**串口调试程序的实现模块@date*//*定义调试级别,参加Makefile的ADBG_LEVEL定义,设置大于等于ADBG_LEVEL*/#defineDBG_LEV3000#defineDBG_LEV22000moduleSerialDebugM{usesinterfaceBoot;}implementation{/**任务:通过串口打印信息来调试*/taskvoidDebugSerial()DEMOofSerialDebug1.Thisisastring,andthisischarx2.NUM1:HEX=0x39,DEC=574.FLOAT:0x123.1234{uint8_tnum1=0x39;uint32_tnum2=0x12345678;floatfloat1=123.1234;/**ADBG,格式类似于printf,第一个参数为调试等级,可以参见tos/lib/common/antdebug.h*//**打印字符和字符串*/ADBG(DBG_LEV,\r\n\r\nDEMOofSerialDebug\r\n,'x');ADBG(DBG_LEV,1.Thisisastring,andthisischar'%c'\r\n,'x');/**打印8位的数字*/ADBG(DBG_LEV,2.NUM1:HEX=0x%x,DEC=%d\r\n,(int)(num1),(int)(num1));/**打印32位数字*/ADBG(DBG_LEV2,3.NUM2:HEX=0x%lx,DEC=%ld\r\n,(uint32_t)(num2),(uint32_t)(num2));/**打印浮点数*/ADBG(DBG_LEV,4.FLOAT:%f\r\n,float1);}/**启动事件处理函数,在SerialDebug.nc已经关联到MainC.Boot接口系统启动后会调用此函数*/eventvoidBoot.booted(){postDebugSerial();}}实验四串口通信一、实验内容实现一个串口实验,在串口助手中实现回显的功能。二、实验步骤1)将基站同电脑用烧录线连接好,打开基站的开关。2)用串口线将基站和PC机器连接起来。3)打开串口助手。4)打开Cygwin开发环境。5)在Cygwin界面中执行cdapps/Demos/Basic/SerialIO,进入到串口通讯实验目录下。6)在串口通讯代码目录下执行makeantc5install,进行编译和烧录。7)根据串口输出的提示进行操作,在串口助手的字符输入框输入1,红灯会一直亮着,直到再一次输入1才熄灭;在串口助手的字符输入框输入2,绿灯会一直亮着,直到再一次输入1才熄灭,输入其他数字串口会提示“Errorkey”,并且会显示你输入的数字,结果如下:三、实验代码/**串口输入输出程序的实现模块@author@date*/#includestrings.h/**定义此宏,将演示UartStream.receive函数,允许一次指定数量的数据*///#defineSERIALIO_RECEIVE#defineDBG_LEV3000moduleSerialIoMDemoofSerioI/O[1]ToggleBLUELED[2]ToggleYELLOWLEDYouchoosetoinput1YouchoosetoToggleBLUELED{usesinterfaceBoot;usesinterfaceStdControlasUartStdControl;usesinterfaceUartStream;}implementation{uint8_tm_receive_len;uint8_tm_echo_buf;uint8_tm_send_buf[100];/*显示一个菜单提示用户*/voidshowMenu(){strcpy(m_send_buf,\r\n\r\nDemoofSerioI/O\r\n[1]ToggleBLUELED\r\n[2]ToggleYELLOWLED\r\n);/*通过UartStream.send可以发送字节数据*/callUartStream.send(m_send_buf,strlen(m_send_buf));}/**启动事件处理函数,在SerialIo.nc已经关联到MainC.Boot接口系统启动后会调用此函数*/eventvoidBoot.booted(){LED_BLUE_ON;LED_YELLOW_ON;callUartStdControl.start();showMenu();}asynceventvoidUartStream.sendDone(uint8_t*buf,uint16_tlen,error_terror){}/**重新发送刚才接收的字符进行回显*/taskvoidshowMenuTask(){showMenu();}taskvoidlightLED(){if(m_echo_buf=='1'){LED_BLUE_TOGGLE;/*切换蓝色LED灯*/ADBG(DBG_LEV,Youchoosetoinput%c\r\n,m_echo_buf);ADBG(DBG_LEV,YouchoosetotoggleBLUELED\r\n);postshowMenuTask();}elseif(m_echo_buf=='2'){LED_YELLOW_TOGGLE;/*切换黄色LED灯*/ADBG(DBG_LEV,Youchoosetoinput%c\r\n,m_echo_buf);ADBG(DBG_LEV,YouchoosetotoggleYELLOWLED\r\n);postshowMenuTask();}else{ADBG(DBG_LEV,ErrorKey%c\r\n,m_echo_buf);postshowMenuTask();}}/**如果没有调用receive接收,则每接收到一个数据就会触发此事件*/asynceventvoidUartStream.receivedByte(uint8_tbyte){m_echo_buf=byte;postlightLED();}/**在接收完receive命令欲接收的长度后会调用此事件*/asynceventvoidUartStream.receiveDone(uint8_t*buf,uint16_tlen,error_terror){}}实验五Flash读写一、实验内容Flash读写:自己定义一个结构体,并且将结构体的内容写入到0x1fff8,并且在写完后将结构体的数据读取出来和原始数据进行比较。二、实验步骤1)将基站同电脑用烧录线连接好,打开基站的开关。2)用串口线将基站和PC机器连接起来。3)打开串口助手。4)打开Cygwin开发环境。5)在Cygwin开发环境中执行cdapps/Demos/Basic/Flash。6)在Flash目录下执行makeantc5install,进行软件的编译和烧录。7)烧录成功后,串口有内容输出,具体如下:三、实验代码/*定义调试级别,参加Makefile的ADBG_LEVEL定义,设置大于等于ADBG_LEVEL*/#defineDBG_LEV3000moduleTestFlashC{usesinterfaceBoot;usesinterfaceHalFlash;}implementation{structarray{uint8_tnum[8];Boot.bootedR
本文标题:物联网实验报告
链接地址:https://www.777doc.com/doc-7052677 .html