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

实验目的:

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

实验要求:

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

实验内容:

  1. 开发一个新的应用,通过串口通信实现从PC机通过串口发送指令,控制LED灯的亮灭。以下述顺序完成这个新应用的开发。
    1. 首先实现CC2530通过串口组件与PC机实现通信的功能;
    2. 然后在上述基础上加入LED控制功能。
  2. 在实验报告中分别给出上述两个阶段的源码。

实验代码:

(1)配置文件TestSerialC.nc

configuration TestSerialC

{

}

implementation

{

components TestSerialM as App;

components MainC;

App.Boot -> MainC.Boot;

//LED组件

components LedsC;

App.Leds ->LedsC.Leds;

//串口组件

components HplCC2530UartC;

HplCC2530UartC.CC2530UartControl[0]<- App.UartControl;

App.UartStream -> HplCC2530UartC.UartStream[0];

}

(2)模块文件TestSerialM.nc

module TestSerialM

{

uses {

interface Boot;

interface Leds;

interface UartStream;

interface CC2530UartControl as UartControl;

}

}

implementation

{

uint8_t m_strRecv;

uint8_t m_sendBuf[120];

void ShowMenu()

{

strcpy(m_sendBuf,"串口测试程序,请选择输入:\r\n" );

strcat(m_sendBuf,"[1] Toggle The No.1 Led.\r\n");

strcat(m_sendBuf,"[2] Toggle The No.2 Led.\r\n");

strcat(m_sendBuf,"[3] Toggle The No.3 Led.\r\n");

call UartStream.send(m_sendBuf,strlen(m_sendBuf));

}

void SendMsg(char *str)

{

call UartStream.send(str,strlen(str));

}

task void TaskLightLed()

{

switch(m_strRecv)

{

case '1':

call Leds.led0Toggle();

SendMsg("You Toggle No.1 Led!!\r\n");

break;

case '2':

call Leds.led1Toggle();

SendMsg("You Toggle No.2 Led!!\r\n");

break;

case '3':

call Leds.led2Toggle();

SendMsg("You Toggle No.3 Led!!\r\n");

break;

default:

call Leds.led0Toggle();

SendMsg("\r\nError Key,Toggle No.4 Led\r\n\r\n");

ShowMenu();

break;

}

}

event void Boot.booted()

{

call UartControl.InitUart(UART_BAUDRATE); //初始化串口

call UartControl.setRxInterrupt(0x01); //使能发送中断

call UartControl.setTxInterrupt(0x01); //使能接收中断

ShowMenu();

}

async event void UartStream.receivedByte( uint8_t byte )

{

m_strRecv=byte;

post TaskLightLed();

}

async event void UartStream.receiveDone ( uint8_t* buf, uint16_t len, error_t error )

{ }

async event void UartStream.sendDone ( uint8_t* buf, uint16_t len, error_t error )

{ }

}

(3)makefile 编译文件

COMPONENT=TestSerialC

include $(MAKERULES)

 

实验环境:

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

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

 

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

 

实验四 CC2530平台上UART组件的TinyOS编程的更多相关文章

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

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

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

    实验二 CC2530平台上GPIO组件的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生理解和掌握CC2530的GPIO及外部中断,及其TinyOS编程方法 学 ...

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

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

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

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

  5. 第一次实验: CC2530平台上电源管理与休眠

    实验一 CC2530平台上电源管理与休眠 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步的认识TinyOS编程的基础和简单的程序编写 学生通过本实验能够初步的了解和掌握Ti ...

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

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

  7. 20145213 《Java程序设计》实验四 Android开发基础

    20145213 <Java程序设计>实验四 Android开发基础 说在前面的话 不同以往实验,对于这次实验具体内容我是比较茫然的.因为点我,打开实验四的链接居然能飘出一股熟悉的味道,这 ...

  8. 20145308刘昊阳 《Java程序设计》实验四 Android环境搭建 实验报告

    20145308刘昊阳 <Java程序设计>实验四 Android环境搭建 实验报告 实验名称 Android环境搭建 实验内容 搭建Android环境 运行Android 修改代码,能输 ...

  9. 20145337实验四Android开发基础

    20145337实验四Android开发基础 实验内容 基于Android Studio开发简单的Android应用并部署测试; 了解Android组件.布局管理器的使用: 掌握Android中事件处 ...

随机推荐

  1. XenServer 自动化布署 (关键词: PXE ANSWER SCRIPT)

    XenServer 6.x PXE自动化布署: 测试环境:win10 + Tiny pxe server 1.0.2,采用gpxelinux.0 时间:2017.1.10 PXE远程安装: 1)def ...

  2. 大米网赚项目介绍,官方唯一客服QQ:486594009

    大米平台项目来源   QQ:486594009 大米软件本质上是一个高质量网赚项目收集和发布平台,该平台的所有项目都是经过专业的测试团队实测有效的项目和教程,只要去做绝对可以赚钱.平台里面的项目类型包 ...

  3. java web中验证码生成的demo

    首先创建一个CaptailCode类 package com.xiaoqiang.code; import java.awt.*; import java.awt.font.FontRenderCon ...

  4. vue学习02

    圆中圆: father: padding:6px width:56px height:56px border-radius:50% box-sizing:border-box son: width:1 ...

  5. 大雄玩java虚拟机01--java命令

    首先是参考的资料,然后说一下我要干什么,我要一边学习java虚拟机一边跟着zxh0大神用go写一个jvm,不过我和他滴不一样! http://docs.oracle.com/javase/specs/ ...

  6. 201671010142 2017-2 《java第九章学习感悟》

    一,数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用. 集合(只能存储对象,对象类型可以不一样)的长度可变,可在多数情况下使用. 二.几种重要 ...

  7. 通用c程序Makefile

    #一个通用的Makefile,可以在linux各大平台下通用编译c程序,这个版本在gcc平台下实现,如需要课更改第二部的gcc,也可以在第三部添加所需要的库,如有错误,欢迎即使纠正 #1.遵循可移植操 ...

  8. Delphi10.2 关于Http 下载

    演示如图: 代码如下: unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Vari ...

  9. linux介绍、命令(基本命令、常用命令、使用方法、基本格式)

    操作系统(科普章节) 目标 了解操作系统及作用 1. 操作系统(Operation System,OS) 一个例子说明操作系统 操作系统作为接口的示意图 没有安装操作系统的计算机,通常被称为 裸机 如 ...

  10. Intellij idea 2018的注册方式

    激活方式:License Server 第一步: 将地址 http://active.chinapyg.com/ 或者 http://idea.toocruel.net 任意一个复制到License ...