第二次实验:CC2530平台上GPIO组件的TinyOS编程
实验二 CC2530平台上GPIO组件的TinyOS编程
实验目的:
- 加深和巩固学生对于TinyOS编程方法的理解和掌握
- 让学生理解和掌握CC2530的GPIO及外部中断,及其TinyOS编程方法
- 学生通过本实验能够初步的了解和掌握TinyOS编程的整个过程
- 提高学生的上机和编程过程中处理具体问题的能力
实验要求:
- 实验要求自己独立的完成;
- 编写和调试过程中出现的问题要做好记录,并事后总结到报告中
- 实验程序调试完成后, 用给定的平台进行测试,由老师检查测试结果,并给予相应的成绩
- 实验完成后,要上交实验报告。
实验内容:
- 开发一个新的应用,实现用一个按键对两个LED的控制。要求当按键按下时,LED1闪烁,按键松开时,LED1停止闪烁且关闭,LED2状态切换。以下述顺序完成这个新应用的开发。
- 首先采用轮询的方法实现上述功能;
- 然后采用外部中断的方法实现上述功能。
- 在实验报告中分别给出上述两个阶段的源码。
实验代码:
(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)
实验环境:
- 上位机操作系统为WindowsXP,在Cygwin环境下编译
2. 集成开发环境为Notepad++
实验报告人:木舟 报告时间:2018.11.16
第二次实验:CC2530平台上GPIO组件的TinyOS编程的更多相关文章
- 实验五 CC2530平台上ADC组件的TinyOS编程
实验五 CC2530平台上ADC组件的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步掌握传感器的ADC组件应用方法 学生通过本实验能够初步的了解和掌握CC ...
- 实验四 CC2530平台上UART组件的TinyOS编程
实验四 CC2530平台上UART组件的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步掌握CC2530的UART.及其TinyOS编程方法 学生通过本实验 ...
- 实验六 CC2530平台上P2P通信的TinyOS编程
实验六 CC2530平台上P2P通信的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步的掌握射频通信TinyOS编程方法 学生通过本实验应理解TinyOS中 ...
- 实验三 CC2530平台上CC2530平台上定时器组件的
实验三 CC2530平台上CC2530平台上定时器组件的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步掌握CC2530定时器的PWM功能,及其TinyOS ...
- GitHub Android 最火开源项目Top20 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上。基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。
1. ActionBarSherlock(推荐) ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便 ...
- java的第二个实验——JAVA面向对象程序设计
java的第二个实验——JAVA面向对象程序设计 北京电子科技学院 实 验 报 告 课程:Java程序设计 班级:1352 姓名:林涵锦 学号:20135213 成绩: ...
- 使用JDBC操作SAP云平台上的HANA数据库
本文假设您对JDBC(Java Database Connectivity)有最基本的了解.您也可以将其同ADBC(ABAP Database Connectivity)做对比,细节请参考我的博客AD ...
- Android 8.0的平台上,应用不能对大部分的广播进行静态注册
引言在Android 8.0的平台上,应用不能对大部分的广播进行静态注册,也就是说,不能在AndroidManifest文件对有些广播进行静态注册,这里必须强调是有些广播,因为有些广播还是能够注册的. ...
- 20145330《Java程序设计》第二次实验报告
20145330<Java程序设计>第二次实验报告 实验二 Java面向对象程序设计 实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承多态 3.初步掌握UM ...
随机推荐
- 拯救者R720安装Ubuntu之后无法连接无线网络
安装Ubuntu后无法连接到无线网络 Ubuntu默认关闭了硬件wifi开关,拯救者R720只有软件开关,所以引起了wifi不可用的问题 使用rfkill list all 命令:0:ideapad_ ...
- awk命令总结
强大的文本处理工具,awk读取文件内容的每一行时,将对比该行是否与给定的模式相匹配,匹配则执行处理过程,否则对该行不处理. 序号 awk功能 例子 1 指定分隔符显示某几列 2 通过正则表达式取出 ...
- 设计模式-builder(构造器模式)
好处: 多个属性时,可以清楚明了知道属性, 重叠构造起器的安全性和JavaBeans模式的可读性 只需要制定需要建造的类型就可以得到他们 实例: public class NutritionFacts ...
- paramiko向服务器自动上传下载文件
import paramikoimport os def download_from(ip,u,p): file_list=['file2',file3','file4'] file_path=&qu ...
- js 回调
function getTittleLableData(callback) { $.ajax({ type : 'POST', url : ctx + '/feeInf/getDataValue', ...
- 软工作业PSP与单元测试训练:java语言判断电子邮箱格式
任务说明(二选一): 一.实现模块判断传入的身份证号码的正确性: 二.实现模块判断传入的电子邮箱账号的正确性: 实现要求: 一.实现功能模块: 1. 判断邮箱地址是否为空: 2. 判断邮箱地址是否 ...
- DevExpress VCL Controls 2019发展路线图(No.2)
[DevExpress VCL Controls下载] ExpressQuantumTreeList Excel-inspired Filter (v19.1) 与ExpressQuantumGrid ...
- 使用echart 做出数据折线图
代码如下: // 基于准备好的dom,初始化echarts图表var myChart = echarts.init(document.getElementById("main")) ...
- webdriver的三种时间等待( sleep(); implicitly_wait(); WebDriverWait();)
https://blog.csdn.net/HeatDeath/article/details/71774572 基于<Selenium 2自动化测试实战>的学习笔记(11)—— 设置等待 ...
- MVC简单增删改
/// <summary> /// /显示分页 /// </summary> /// <param name="model"></para ...