实验 CC2530平台上GPIO组件的TinyOS编程

实验目的:

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

实验要求:

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

实验内容:

  1. 开发一个新的应用,实现用一个按键对两个LED的控制。要求当按键按下时,LED1闪烁,按键松开时,LED1停止闪烁且关闭,LED2状态切换。以下述顺序完成这个新应用的开发。
    1. 首先采用轮询的方法实现上述功能;
    2. 然后采用外部中断的方法实现上述功能。
  2. 在实验报告中分别给出上述两个阶段的源码。

实验代码:

(1)配置文件Test GPIOC.nc

configuration TestGPIOC

{ }

implementation

{

components MainC;

components TestGPIOM as App;

App.Boot->MainC.Boot;

//CC2530 GPIO组件

components HplCC2530GeneralIOC as GPIO;

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

App.Led0->GPIO.P1_Port[1];

App.Led1->GPIO.P1_Port[0];

//定时器组件

components new TimerMilliC() as Timer0;

App.Timer0->Timer0;

}

(2)模块文件TestGPIOM.nc

module TestGPIOM

{

uses interface Boot;

uses interface Timer<TMilli> as Timer0; //定时器

uses interface GeneralIO as OkKey; //GPIO接口

uses interface GeneralIO as Led0;

uses interface GeneralIO as Led1;

}

implementation

{

uint8_t OkValue;            //键值变量

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

uint8_t OkState;           //按键状态变量

task void proKey() {}

event void Boot.booted()

{

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

call Led0.makeOutput(); //设置为输出

call Led1.makeOutput(); //设置为输出

call Led0.clr(); //熄灭LED

call Led1.clr();

OkState=NoKey;

OkValue=1;

call Timer0.startPeriodic(100); //定时100ms

}

event void Timer0.fired()

{

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

switch(OkState)

{

case NoKey:

if(OkValue==0)

OkState=KeyDown;

break;

case KeyDown:

if(OkValue==1)

OkState=KeyUp;

else

call Led0.toggle();//切换LED状态

break;

case KeyUp:

if(OkValue==1)

{

OkState=NoKey;

call Led1.toggle();

}

else

OkState=KeyDown;

break;

}

}

}

(3)makefile 编译文件

COMPONENT=TestGPIOC

include $(MAKERULES)

实验环境:

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

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

 

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

 

第二次实验:CC2530平台上GPIO组件的TinyOS编程的更多相关文章

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

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

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

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

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

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

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

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

  5. GitHub Android 最火开源项目Top20 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上。基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。

    1. ActionBarSherlock(推荐) ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便 ...

  6. java的第二个实验——JAVA面向对象程序设计

    java的第二个实验——JAVA面向对象程序设计 北京电子科技学院 实     验    报     告 课程:Java程序设计 班级:1352 姓名:林涵锦 学号:20135213 成绩:      ...

  7. 使用JDBC操作SAP云平台上的HANA数据库

    本文假设您对JDBC(Java Database Connectivity)有最基本的了解.您也可以将其同ADBC(ABAP Database Connectivity)做对比,细节请参考我的博客AD ...

  8. Android 8.0的平台上,应用不能对大部分的广播进行静态注册

    引言在Android 8.0的平台上,应用不能对大部分的广播进行静态注册,也就是说,不能在AndroidManifest文件对有些广播进行静态注册,这里必须强调是有些广播,因为有些广播还是能够注册的. ...

  9. 20145330《Java程序设计》第二次实验报告

    20145330<Java程序设计>第二次实验报告 实验二 Java面向对象程序设计 实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承多态 3.初步掌握UM ...

随机推荐

  1. Ubuntu16.04下安装sublime text3

    通过ppa安装,打开终端,输入以下命令: sudo add-apt-repository ppa:webupd8team/sublime-text-3 sudo apt-get update sudo ...

  2. 用docker搭建python项目运行环境

    Docker Hub镜像加速器 安装docker: curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-eng ...

  3. 读取properties配置文件,value值为中文时出现乱码

    已确保idea工具默认设置都是UTF-8格式:     然后在配置类上,指定编码: @PropertySource(value = "classpath:short_message.prop ...

  4. 记录Linux CentOS 7系统完整部署Docker容器环境教程

    笔者之前有在"详细介绍Ubuntu 16.04系统环境安装Docker CE容器的过程"文章中有介绍到利用Ubuntu系统安装Docker容器环境的过程.如果我们有使用CentOS ...

  5. 1、Python2.7编译安装

    下载Python安装包(下载地址:https://www.python.org/downloads/) 选择Python 2.7.3版本 防止交互式模式下出现方向键乱码问题,需安装相关包 yum in ...

  6. 几个常用内核函数(《Windows内核情景分析》)

    参考:<Windows内核情景分析> 0x01  ObReferenceObjectByHandle 这个函数从句柄得到对应的内核对象,并递增其引用计数. NTSTATUS ObRefer ...

  7. DevExpress v18.2新版亮点——Reporting篇(一)

    行业领先的.NET界面控件——DevExpress v18.2日前正式发布,本站将以连载的形式为大家介绍新版本新功能.本文将介绍了DevExpress Reporting v18.2 的新功能,新版3 ...

  8. C#的ArrayList与JS的push,转字符串逗号分隔

    拼接字符串是常用的基本代码,但是还是有很多人习惯用"+"拼接字符串,这样做有以下缺点: 1)为了去掉尾部(或头部)分隔符,写法复杂 2)容易出现BUG报错,比如空值 C#中推荐大家 ...

  9. Problem 3: Largest prime factor

    The prime factors of 13195 are 5, 7, 13 and 29. What is the largest prime factor of the number 60085 ...

  10. Struts框架原理及应用

    Struts 2框架本身大致可以分为3个部分:核心控制器FilterDispatcher.业务控制器Action和用户实现的企业业务逻辑组件. 核心控制器FilterDispatcher是Struts ...