实验 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. centos6.8安装mysql5.5

    在使用阿里云的时候发现centos6.8系统自带的源当中没有mysql5.5,在网易这些源里面也是5.1的版本.这里安装mysql5.5的话需要另外添加一个源. 1.查看是否已经安装了MySQL rp ...

  2. Django基础-01

    Django 是基于 Python,所有的 Django 代码都是用Python写成的. Django 特点 强大的数据库功能 拥有强大的数据库操作接口(QuerySet API),如需要也能执行原生 ...

  3. C++中_T的用途

    1    C++语言中“_T”是什么意思? Visual C++里边定义字符串的时候,用_T来保证兼容性,VC支持ascii和unicode两种字符类型,用_T可以保证从ascii编码类型转换到uni ...

  4. Win10调整MTU值

    VPN连接后出现可以ping通google.com但是网页打不开的情况,需要修改MTU值,方法如下:用管理员身份运行cmd列出当前各网络的mtu值C:\Windows\system32>nets ...

  5. 阶段02JavaWeb基础day04mysql

    数据库--MySql 数据仓库.就与我们之前学过的纯文本,properties这些技术一样.用来保存数据.并提供对数据进行增删改查的操作.我们以后做项目时,项目中的数据都是保存在数据库中的.//--- ...

  6. Android中获取文件路径的方法总结及对照

    最近在写文件存贮,Android中获取文件路径的方法比较多,所以自己也很混乱.找了好几篇博客,发现了以下的路径归纳,记录一下,以备不时之需 Environment.getDataDirectory() ...

  7. 2018-2019-2 20175224 实验一《Java开发环境的熟悉》实验报告

    实验报告封面 实验内容与步骤 Java开发环境的熟悉-1 1.建立“自己学号exp1”的目录 2.在“自己学号exp1”目录下建立src,bin等目录 3.javac.java的执行在“自己学号exp ...

  8. nim调用GetSystemPowerStatus判断笔记本电脑是否接通外接电源

    title: nim调用GetSystemPowerStatus判断笔记本电脑是否接通外接电源 tags:nim,winapi,dll --- 转载条件:如果你需要转载本文,你需要做到完整转载本文所有 ...

  9. Nim函数调用的几种形式

    Nim函数调用的几种形式 Nim 转载条件:如果你需要转载本文,你需要做到完整转载本文所有的内容,不得删改文内的作者名字与链接.否则拒绝转载. 关于nim的例行介绍: Nim 是一门静态编译型的系统级 ...

  10. sql注入1

    一.函数 1.version() MYsql版本 2.user()    数据库用户名 3.database()   数据库名 4.@@datadir  数据库路径 5.@@version_compi ...