无线传感网络操作系统实验1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
无线传感器网络实验报告
班级: _14104341_ 姓名:__代姝佳__ 学号:_1410400111__
时间: 2017-3-20_教师: _陈飞云__成绩:_________
实验名称:LED组件实验
一、实验目的
掌握CC2530芯片LED对应的GPIO引脚,并且熟练掌握LED的使用。
二、实验原理
目前WIFI节点上有红、蓝、黄、绿4个LED灯,其中,红灯是电源指示灯,黄灯、蓝灯和绿灯主要用于程序调试。现在对LED灯的操作有三种:点亮、关闭、闪烁(由亮变暗或者由暗变亮),相对应的命令分别为:LED_GREEN_ON、LED_GREEN_OFF、LED_GREEN_TOGGLE、LED_RED_ON、LED_RED_OFF、LED_RED_TOGGLE。在CC2530芯片中蓝灯对应P1.2,黄灯对应P1.3,对P1.2的操作会反映在蓝灯上,将P1.2置高,蓝灯就会亮,否则蓝灯就会灭掉。
三、实验内容
1.将ATOS多模汇聚节点同电脑用烧录线连接好,打开其中任意WIFI节点的电源开关,同时将
WIFI节点对应的编程开关打开。
2.打开Cygwin开发环境。
3.在Cygwin界面中执行cd apps/Demos/Basic/Led,进入到LED实验目录下,如下图。在Cygwin
界面中会用到以下几个命令:cd目录名:进入特定的目录。cd\ 退回到根目录。cd ..退回到上一级目录。dir即显示出当前目录下的所有文件。ls列出目录下的所有文件。
4.在LED实验目录下执行make antc5 install进行编译和烧录。
5.可以看到实验现象为WIFI节点上的蓝灯和黄灯交替闪烁。
四、实验过程
1)详细的调试步骤
1.将ATOS多模汇聚节点同电脑用烧录线连接好,打开其中任意WIFI节点的电源开关,同时将
WIFI节点对应的编程开关打开。
2.打开Cygwin开发环境。
3.在Cygwin界面中执行cd apps/Demos/Basic/Led,进入到LED实验目录下,如下图。在Cygwin
界面中会用到以下几个命令:cd目录名:进入特定的目录。cd\ 退回到根目录。cd ..退回到上一级目录。dir即显示出当前目录下的所有文件。ls列出目录下的所有文件。
4.在LED实验目录下执行make antc5 install进行编译和烧录。
5.可以看到实验现象为WIFI节点上的蓝灯和黄灯交替闪烁。
2)实验现象
在LED实验目录下执行make antc5 install进行编译和烧录。烧录成功,WIFI节点上的蓝灯和黄灯交替闪烁。
3)必要的实验数据
module LedM
{
uses interface Boot;
}
implementation
{
/* LED灯演示*/
task void DemoLed()
{
/* 目前WIFI节点上提供两个LED灯
LED_GREEN -> 蓝灯
LED_RED -> 黄灯*/
int i,j;
while(1)
{
for(i=0;i<1000;i++)
for(j=0;j<500;j++);
LED_GREEN_OFF; /* 熄灭蓝LED灯*/
LED_RED_ON; /* 点亮黄LED灯*/
for(i=0;i<1000;i++)
for(j=0;j<500;j++);
LED_GREEN_ON; /* 点亮蓝LED灯*/
LED_RED_OFF; /* 熄灭黄LED灯*/
}
}
/* 启动事件处理函数,在LED.nc已经关联到MainC.Boot接口
系统启动后会调用此函数*/
event void Boot.booted()
{
post DemoLed();
}
}
五、软件组成
1.ATOS物联网教学实验平台实验箱
2.烧录线一根
六、总结分析
该实验完成了对CC2530芯片的LED进行控制,实际上是对CC2530芯片的GPIO的控制。掌握芯片LED控制之后,在复杂的程序中可以用LED作为一种很好的调试手段。
七、习题答案
1.在改实验的基础上修改,使得最后的效果为蓝灯一直处于熄灭的状态,黄灯不停的闪烁。
实验现象如下:
实验代码如下:
/**
LED 示例程序的实现模块,简单的点亮3个LED灯
@date 2010-1
*/
module LedM
{
uses interface Boot;
}
implementation
{
/** LED灯演示
*/
task void DemoLed()
{
/** 目前节点上提供两个LED灯
LED_BLUE -> 蓝灯
LED_YELLOW -> 黄灯
*/
int i,j;
while(1)
{
for(i=0;i<100;i++)
for(j=0;j<500;j++);
LED_BLUE_OFF; /* 熄灭蓝色LED灯 */
LED_YELLOW_ON; /* 点亮黄色LED灯 */
for(i=0;i<100;i++)
for(j=0;j<500;j++);
LED_YELLOW_OFF; /* 点亮黄色LED灯 */
}
}
/** 启动事件处理函数,在LED.nc已经关联到MainC.Boot接口
系统启动后会调用此函数
*/
event void Boot.booted()
{
post DemoLed();
}
}
2.尝试不用如LED_BLUE_OFF宏定义,编写底层端口驱动程序代码控制蓝灯和黄灯闪烁,参考
PlatformLed.h文件和书上例子。
3.纵观整个代码,没有头文件包含语句,却在代码中用到在头文件中定义的宏定义,如
LED_BLUE_OFF,简述原因。
4.简述booted事件怎样触发?在何处触发?