欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-24 15:10:08
实验二 CC2530平台上GPIO组件的TinyOS编程 实验目的: 实验要求: 实验内容: 实验代码: (1)配置文件Test GPIOC.nc configuration TestGPIOC { } implementation { components MainC; components Te ......

实验 cc2530平台上gpio组件的tinyos编程

实验目的:

  1. 加深和巩固学生对于tinyos编程方法的理解和掌握
  2. 让学生理解和掌握cc2530gpio及外部中断,及其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