实验三 CC2530平台上CC2530平台上定时器组件的
实验三 CC2530平台上CC2530平台上定时器组件的TinyOS编程
实验目的:
- 加深和巩固学生对于TinyOS编程方法的理解和掌握
- 让学生初步掌握CC2530定时器的PWM功能,及其TinyOS编程方法
- 学生通过本实验能够初步的了解和掌握TinyOS编程的整个过程
- 提高学生的上机和编程过程中处理具体问题的能力
实验要求:
- 实验要求自己独立的完成;
- 编写和调试过程中出现的问题要做好记录,并事后总结到报告中
- 实验程序调试完成后, 用给定的平台进行测试,由老师检查测试结果,并给予相应的成绩
- 实验完成后,要上交实验报告。
实验内容:
- 开发一个新的应用,能够利用Timer1或者Timer3或者Timer4的PWM功能,实现对LED灯亮暗的连续变化。
- 首先使得LED灯可以周而复始的由暗变亮,再由亮变暗;
- 然后在上述基础上加入按键功能实现按下逐渐变亮,放开逐渐变暗的功能。
- 在实验报告中分别给出上述两个阶段的源码。
实验代码:
(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)
实验环境:
- 上位机操作系统为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平台上定时器组件的的更多相关文章
- 实验六 CC2530平台上P2P通信的TinyOS编程
实验六 CC2530平台上P2P通信的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步的掌握射频通信TinyOS编程方法 学生通过本实验应理解TinyOS中 ...
- 实验五 CC2530平台上ADC组件的TinyOS编程
实验五 CC2530平台上ADC组件的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步掌握传感器的ADC组件应用方法 学生通过本实验能够初步的了解和掌握CC ...
- 实验四 CC2530平台上UART组件的TinyOS编程
实验四 CC2530平台上UART组件的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步掌握CC2530的UART.及其TinyOS编程方法 学生通过本实验 ...
- 第二次实验:CC2530平台上GPIO组件的TinyOS编程
实验二 CC2530平台上GPIO组件的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生理解和掌握CC2530的GPIO及外部中断,及其TinyOS编程方法 学 ...
- 第一次实验: CC2530平台上电源管理与休眠
实验一 CC2530平台上电源管理与休眠 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步的认识TinyOS编程的基础和简单的程序编写 学生通过本实验能够初步的了解和掌握Ti ...
- 201871030116-李小龙 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST 这个作业要求链接 https://www.cnblogs.com/nwnu-dai ...
- 201871030119-马桂婷 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
项目 内容 课程班级博客 2018卓越工程师班 这个作业要求链接 实验三 软件工程结对项目 我的课程学习目标 1.体验软件项目开发中的两人合作,练习结对编程:2.掌握Github协作开发程序的操作方法 ...
- 201871030140-朱婷婷 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
项目 内容 课程班级博客链接 2018级卓越班 这个作业要求链接 实验三 结对项目 我的课程学习目标 1.体验软件项目开发中的两人合作,练习结对编程:2.掌握GitHub协作开发程序的操作方法. 这个 ...
- 201873030133-杨子豪 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
项目 内容 课程班级博客链接 班级博客链接 这个作业要求链接 作业要求链接 我的课程学习目标 了解软件工程的作用与意义,将软件工程与过去所学相结合 这个作业在哪些方面帮助我实现学习目标 体验了结对式的 ...
随机推荐
- 'Tensorboard.util' has no attribute 'Retrier' - 'Tensorboard.util'没有属性'Retrier'
Here is a popular issue when you want to use tensorbard with your upgraded tensorflow and tensorboar ...
- Mac上实现Python用HTMLTestRunner生成html测试报告
一.导入HTMLTestRunnerNew文件 首先,我们要知道如果要利用HTMLTestRunnerNew生成测试报告的话,就需要对其进行导入: HTMLTestRunnerNew下载地址:链接:h ...
- 外贸站全球网速测试+免费CDN使用教程
关于外贸网站速度测试,以前一全老师(www.yiquanseo.com)也讲到过,但是在那篇文章中推荐给大家的两个测试网站(https://developers.google.com/speed/pa ...
- 14. Longest Common Prefix ★
题目内容:Write a function to find the longest common prefix string amongst an array of strings 题目分析:本题目利 ...
- java ee 思维导图
http://download.csdn.net/download/g290095142/10149996 这是原地址,我觉得很棒,就下载下来用xmind看了看,发现很全面的.
- SQL-50 将employees表中的所有员工的last_name和first_name通过(')连接起来
题目描述 将employees表中的所有员工的last_name和first_name通过(')连接起来.CREATE TABLE `employees` (`emp_no` int(11) NOT ...
- node.js学习三--------------------- http服务器模块的搭建
/** * http服务器的搭建,相当于php中的Apache或者java中的tomcat服务器 */ // 导包 const http=require("http"); //创建 ...
- JS 返回上一页并刷新代码整理
一:JS 重载页面,本地刷新,返回上一页: <a href="javascript:history.go(-1)">返回上一页</a> <a href ...
- JavaScript||什么是面向对象
什么是对象&面向对象 对象 是一个整体,对外提供功能.例:一个手机 电脑. 面向对象 使用的时候只关注提供的功能不关注内部的细节. 面向对象有三大特点: 抽象:将问题需求抽象出来 例:一个员工 ...
- 十四、使用framebuffer填充纯色
简单描述一下framebuffer的使用,它其实就相当于将屏幕上的像素映射到内存中,改变内存中的内容后屏幕自动就变颜色了. 首先要调用open("/dev/fb0", O_RDWR ...