1. 实验CC2530平台上电源管理与休眠

实验目的:

  1. 加深和巩固学生对于TinyOS编程方法的理解和掌握
  2. 让学生初步的认识TinyOS编程的基础和简单的程序编写
  3. 学生通过本实验能够初步的了解和掌握TinyOS编程的整个过程
  4. 提高学生的上机和编程过程中处理具体问题的能力

实验要求:

  1. 实验要求自己独立的完成;
  2. 编写和调试过程中出现的问题要做好记录,并事后总结到报告中
  3. 实验程序调试完成后, 用给定的平台进行测试,由老师检查测试结果,并给予相应的成绩
  4. 在实验报告中回答LedsC,和Leds分别是什么。请在该框架下增加Led频闪命令,即将Led频闪功能以Led接口中的命令函数形式实现。
  5. 实验完成后,要上交实验报告。

实验内容:

  1. 开发一个新的应用,节点每一分种工作5秒,以PM2模式休眠55秒。在工作期间,控制LED以1秒为周期闪烁。以下述顺序完成这个新应用的开发。
    1. 首先使得应用能够以1秒为周期控制LED闪烁;
    2. 然后在上述基础上加入休眠功能。
    3. 在实验报告中分别给出上述两个阶段的源码。

实验代码

(1)配置文件MySleepAppC.nc:

configuration MyLEDAppC

{ }

implementation

{

components MySleepAppM as App;

components MainC;

components LedsC;

components McuSleepTimerC ;

components new TimerMilliC() as Timer0;

App.Boot -> MainC.Boot;

App.SleepTimerAlarm -> McuSleepTimerC;

App.Leds->LedsC;

App.Timer0->Timer0;

}

(2)模块文件MySleepAppM.nc:

module MySleepAppM

{

uses interface Boot;

uses interface Alarm<T32khz, uint32_t> as SleepTimerAlarm;

uses interface Timer<TMilli>as Timer0;

uses interface Leds;

}

implementation

{

uint8_t i = 0;

void set_powermode(int mode)//设计电源模式

{

int j;

if(mode < 4)

{

SLEEPCMD |=mode;

PCON = 1;//进入sleepcmd 制定的电源模式,通过中断打断

for(j = 0 ; j< 4 ; j ++);

}

else

PCON = 0;//系统唤醒

}

task void SleepTask()

{

EA = 1;

call SleepTimerAlarm.start(1024*10);

set_powermode(2);//设置电源模式2

}

event void Boot.booted()

{

call Leds.led0On();

call Timer0.startPeriodic(1024);

}

event void Timer0.fired()

{

i++;

if(i<=5)

{

if(i==5)

{

i = 0 ;

post SleepTask();

}

}

call Leds.led0Toggle();//切换led状态

}

async event void SleepTimerAlarm.fired(){}

}

(3) Makefile 编译文件

COMPONENT=MySleepAppC

include $(MAKERULES)

实验环境:

  1. 上位机操作系统为WindowsXP,在Cygwin环境下编译
  2. 集成开发环境为Notepad++

 

 

实验报告人:木舟 报告时间:2018.11.16

第一次实验: CC2530平台上电源管理与休眠的更多相关文章

  1. 实验三 CC2530平台上CC2530平台上定时器组件的

    实验三 CC2530平台上CC2530平台上定时器组件的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步掌握CC2530定时器的PWM功能,及其TinyOS ...

  2. 网络对抗第一次实验——PC平台逆向破解(5)M

    网络对抗第一次实验--PC平台逆向破解(5)M 实践一 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数. 操作步骤: 获取实验用文件pwn1,复制,复制出来的文件改名为20155 ...

  3. 使用VS中自带的一键打包功能将我们的ASP.NET Core类库打包并将程序包(类库)发布到NuGet平台上进行管理

    本章将和大家简单分享下如何使用VS中自带的一键打包功能将我们的ASP.NET Core类库打包并将程序包(类库)发布到NuGet平台上进行管理. 一.注册并登录NuGet平台 NuGet官网:http ...

  4. 第七次实验:CC2530平台上多跳通信的TinyOS编程

    module  P2MM { uses interface Boot; uses interface Timer<TMilli> as Timer0; uses interface Spl ...

  5. (转)在Windows平台上安装Node.js及NPM模块管理

    本文转载自:http://www.cnblogs.com/seanlv/archive/2011/11/22/2258716.html 之前9月份的时候我写了一篇关于如何在Windows平台上手工管理 ...

  6. 2、在uboot上实现电源管理

    tar xjf u-boot-1.1.6.tar.bz2 cd u-boot-1.1.6 patch -p1 < ../u-boot-1.1.6_jz2440.patch make 100ask ...

  7. 在Windows平台上安装Node.js及NPM模块管理

    1. 下载Node.js官方Windows版程序:http://nodejs.org/#download    从0.6.1开始,Node.js在Windows平台上提供了两种安装方式,一是.MSI安 ...

  8. 20135208 20135212 LINUX第一次实验报告

    北京电子科技学院(BESTI) 实     验    报     告 课程:信息安全系统设计基础                     班级: 201352 姓名:池彬宁 贺邦 学号:2013521 ...

  9. 信息安全系统设计基础第一次实验报告 20135201&&20135306&&20135307

    信息安全系统设计基础实验 班级: 201353 姓名:张忻 张嘉琪 黄韧 学号:20135301 20135307 20135306 实验日期:2015.11.10 实验名称: S3C2410的lin ...

随机推荐

  1. v模拟器(华为、H3C)点滴

    华为模拟器:eNSP V100R002C00B500 安装问题: 1)环境为WIN10,64位专业版 2)安装完成后可以打开界面,但是新建一个设备后,打不开,一直不停的#号 3)解决:手工点击Virt ...

  2. Linux c codeblock的使用(一):新建一个工程

    (1)点击New->Project,出现如下图所示,然后再选择Console application,点击Go (2)点击Next (3)根据自己的需求选择特定的语言(前提是你的系统上有这个语言 ...

  3. dede后台登陆不了、出现index.htm Not Found!、无更新模板,解析不了

    以下2个选项内设为空.  

  4. APP压力稳定性测试之monkey入门

    1.什么是monkey? Monkey是一个命令行工具,使用安卓调试桥(adb)来运行它,模拟用户触摸屏幕.滑动Trackball.按键等随机事件流来对设备上的程序进行压力测试,检测程序多久的时间会发 ...

  5. winfrom程序Datagridview列名问题

    之前在做程序的时候,有遇到过这个问题: 无法将类型“string”隐式转换为“System.Windows.Forms.DataGridViewTextBoxColume"解决方法 解决办法 ...

  6. java——类、对象、方法

    一.类 1.Java语言把一组对象中相同属性和方法抽象到一个Java源文件就形成了类. 一个java文件可以有多个类,但是每一个类都会生成一个class字节码文件. 如果class 前加public ...

  7. LeetCode 98 验证二叉搜索树

    题目: 给定一个二叉树,判断其是否是一个有效的二叉搜索树. 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数. 节点的右子树只包含大于当前节点的数. 所有左子树和右子树自身必须也是 ...

  8. There/Here be句型

    (1)There/Here + (be)根据上下文, 有多种翻译方法,可以翻译成"有", "是". be动词根据后面的名词有单复数变化. There is a ...

  9. Linux上的10个Touch命令实例

    Linux Touch 命令 Touch命令可以用来修改文件访问或修改的时间戳.实际上,它更常仅仅用于快速的创建一个空白文件. 这篇文章展示了一些非常简单和快速的实例,使用Touch命令来修改时间戳和 ...

  10. Oracle数据库各种名字的区别

    数据库名(DB_NAME).数据库实例名(INSTANCE_NAME).操作系统环境变量(ORACLE_SID).数据库服务名(SERVICE_NAME).数据库域名(DB_DOMAIN)以及全局数据 ...