实验 CC2530平台上CC2530平台上定时器组件的TinyOS编程

实验目的:

  1. 加深和巩固学生对于TinyOS编程方法的理解和掌握
  2. 让学生初步掌握CC2530定时器的PWM功能,及其TinyOS编程方法
  3. 学生通过本实验能够初步的了解和掌握TinyOS编程的整个过程
  4. 提高学生的上机和编程过程中处理具体问题的能力

实验要求:

  1. 实验要求自己独立的完成;
  2. 编写和调试过程中出现的问题要做好记录,并事后总结到报告中
  3. 实验程序调试完成后, 用给定的平台进行测试,由老师检查测试结果,并给予相应的成绩
  4. 实验完成后,要上交实验报告。

实验内容:

  1. 开发一个新的应用,能够利用Timer1或者Timer3或者Timer4的PWM功能,实现对LED灯亮暗的连续变化。
    1. 首先使得LED灯可以周而复始的由暗变亮,再由亮变暗;
    2. 然后在上述基础上加入按键功能实现按下逐渐变亮,放开逐渐变暗的功能。
  2. 在实验报告中分别给出上述两个阶段的源码。

实验代码:

(1)配置文件PWMAppC.nc

configuration PWMAppC

{ }

implementation{

components MainC;

components PWMAppM as App;

App.Boot->MainC.Boot;

components LedsC;  //LED组件

App.Leds -> LedsC.Leds;

components HplCC2530GeneralIOC as GPIO;

App.OkKey->GPIO.P0_Port[1];

components new TimerMilliC() as Timer1;

App.Timer1 -> Timer1;

}

(2)模块文件PWMM.nc

module PWMAppM

{

uses interface Boot;

uses interface Leds;

uses interface Timer<TMilli> as Timer1;

uses interface GeneralIO as OkKey;

}

implementation{

int CNT=0;

uint8_t OkValue;            //键值变量

enum {NoKey,KeyDown,KeyUp};//按键状态

uint8_t OkState;           //按键状态变量

task void test(){}

event void Boot.booted()

{

P1SEL |= 0x01;

call OkKey.makeInput(); //设置为输入

call Leds.set(0);

OkState=NoKey;

OkValue=1;

T4CC0=0xFF;

T4CCTL0 |= BV(2);

T4CCTL0 |=(0x5 << 3);

T4CTL |= BV(2);

call Timer1.startPeriodic(20);

}

event void Timer1.fired()

{

OkValue=call OkKey.get();//获取键值

switch(OkState)

{

case NoKey:

if(OkValue==0)

OkState=KeyDown;

break;

case KeyDown:

if(OkValue==1)

OkState=KeyUp;

else

{

if(CNT<100)

CNT++;

else

CNT=100;

}

break;

case KeyUp:

if(OkValue==1)

{

if(CNT>0)

CNT--;

else

CNT=0;

}

else{

OkState=KeyDown;

}

break;

}

T4CC0=CNT;

}

}

(3)makefile 编译文件

COMPONENT=PWMAppC

include $(MAKERULES)

实验环境:

  1. 上位机操作系统为WindowsXP,在Cygwin环境下编译

2. 集成开发环境为Notepad++

event void Boot.booted()

{

call Leds.set(0xf);

T4CC0=0xFF;

T4CCTL0 |= BV(2);

T4CCTL0 |=(0x5 << 3);

T4CTL |=BV(2);

T4CTL |=BV(CC2530_T34CPL_START);

call Timer1.startPeriodic(50);

}

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

 

实验三 CC2530平台上CC2530平台上定时器组件的的更多相关文章

  1. 实验六 CC2530平台上P2P通信的TinyOS编程

    实验六 CC2530平台上P2P通信的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步的掌握射频通信TinyOS编程方法 学生通过本实验应理解TinyOS中 ...

  2. 实验五 CC2530平台上ADC组件的TinyOS编程

    实验五 CC2530平台上ADC组件的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步掌握传感器的ADC组件应用方法 学生通过本实验能够初步的了解和掌握CC ...

  3. 实验四 CC2530平台上UART组件的TinyOS编程

    实验四 CC2530平台上UART组件的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步掌握CC2530的UART.及其TinyOS编程方法 学生通过本实验 ...

  4. 第二次实验:CC2530平台上GPIO组件的TinyOS编程

    实验二 CC2530平台上GPIO组件的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生理解和掌握CC2530的GPIO及外部中断,及其TinyOS编程方法 学 ...

  5. 第一次实验: CC2530平台上电源管理与休眠

    实验一 CC2530平台上电源管理与休眠 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步的认识TinyOS编程的基础和简单的程序编写 学生通过本实验能够初步的了解和掌握Ti ...

  6. 201871030116-李小龙 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST 这个作业要求链接 https://www.cnblogs.com/nwnu-dai ...

  7. 201871030119-马桂婷 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客 2018卓越工程师班 这个作业要求链接 实验三 软件工程结对项目 我的课程学习目标 1.体验软件项目开发中的两人合作,练习结对编程:2.掌握Github协作开发程序的操作方法 ...

  8. 201871030140-朱婷婷 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客链接 2018级卓越班 这个作业要求链接 实验三 结对项目 我的课程学习目标 1.体验软件项目开发中的两人合作,练习结对编程:2.掌握GitHub协作开发程序的操作方法. 这个 ...

  9. 201873030133-杨子豪 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客链接 班级博客链接 这个作业要求链接 作业要求链接 我的课程学习目标 了解软件工程的作用与意义,将软件工程与过去所学相结合 这个作业在哪些方面帮助我实现学习目标 体验了结对式的 ...

随机推荐

  1. 装B命令行,常用Windows命令

    winver检查Windows版本 dxdiag检查DirectX信息 gpedit.msc 组策略   regedit.exe 注册表 Msconfig.exe 系统配置实用程序  lusrmgr. ...

  2. [jQuery]判断checkbox是否选中的3种方法

    方法一: if ($("#checkbox-id")get(0).checked) { // do something } 方法二: if($('#checkbox-id').is ...

  3. python之路-数据类型(方法)

    Int i = 1 print(i.bit_length()) # 转化成二进制的最小位数. ''' 0000 0001 ''' Str class str(basestring): "&q ...

  4. 【js高程学习笔记】Object类型

    创建一组Object的实例的方式有两种: 方法一: var person = new Object(); person.name = '团子'; person.race = '猫'; person.s ...

  5. HFun.快速开发平台(三)=》通用系统用户选择

    系统中用户的选择使用特别多,将该功能统一实现可提升系统效率. 用户的选择实现相对简单,系统中基本都会提供,HFun.快速开发平台中的实现特点主要有: 1.用户的选择分为单用户选择和多用户选择. 2.用 ...

  6. python基础之作业2----购物车小练习

    product_list = [    ("Iphone",6000),    ("Mac pro",12800),    ("Bike", ...

  7. Cowboy http服务器 websocket

    一.基础介绍 cowboy是一个小巧.快速.模块化的http服务器,采用Erlang开发.其中良好的clean module使得我们可以扩展到多种网络协议之中,cowboy自带的有tcp和ssl,而也 ...

  8. maven profile实现多环境配置

    每次项目部署上线都需要手动去修改配置文件(比如数据库配置,或者一个自定义的配置)然后才能打包,很麻烦,网上找到 maven profile可以完成这个工作,记录如下: 环境:eclipse + spr ...

  9. 原生js实现下拉菜单

    简单给两段代码: html和css部分: <style> .one li{ width:100px; height:30px; line-height:30px; background:u ...

  10. springboot - websocket实现及原理

    本文章包括websocket面试相关问题以及spring boot如何整合webSocket. 参考文档 https://blog.csdn.net/prayallforyou/article/det ...