实验四 CC2530平台上UART组件的TinyOS编程
实验四 CC2530平台上UART组件的TinyOS编程
实验目的:
- 加深和巩固学生对于TinyOS编程方法的理解和掌握
- 让学生初步掌握CC2530的UART、及其TinyOS编程方法
- 学生通过本实验能够初步的了解和掌握TinyOS编程的整个过程
- 提高学生的上机和编程过程中处理具体问题的能力
实验要求:
- 实验要求自己独立的完成;
- 编写和调试过程中出现的问题要做好记录,并事后总结到报告中
- 实验程序调试完成后, 用给定的平台进行测试,由老师检查测试结果,并给予相应的成绩
- 实验完成后,要上交实验报告。
实验内容:
- 开发一个新的应用,通过串口通信实现从PC机通过串口发送指令,控制LED灯的亮灭。以下述顺序完成这个新应用的开发。
- 首先实现CC2530通过串口组件与PC机实现通信的功能;
- 然后在上述基础上加入LED控制功能。
- 在实验报告中分别给出上述两个阶段的源码。
实验代码:
(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)
实验环境:
- 上位机操作系统为WindowsXP,在Cygwin环境下编译
2. 集成开发环境为Notepad++
实验报告人:木舟 报告时间:2018.11.16
实验四 CC2530平台上UART组件的TinyOS编程的更多相关文章
- 实验五 CC2530平台上ADC组件的TinyOS编程
实验五 CC2530平台上ADC组件的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步掌握传感器的ADC组件应用方法 学生通过本实验能够初步的了解和掌握CC ...
- 第二次实验:CC2530平台上GPIO组件的TinyOS编程
实验二 CC2530平台上GPIO组件的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生理解和掌握CC2530的GPIO及外部中断,及其TinyOS编程方法 学 ...
- 实验六 CC2530平台上P2P通信的TinyOS编程
实验六 CC2530平台上P2P通信的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步的掌握射频通信TinyOS编程方法 学生通过本实验应理解TinyOS中 ...
- 实验三 CC2530平台上CC2530平台上定时器组件的
实验三 CC2530平台上CC2530平台上定时器组件的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步掌握CC2530定时器的PWM功能,及其TinyOS ...
- 第一次实验: CC2530平台上电源管理与休眠
实验一 CC2530平台上电源管理与休眠 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步的认识TinyOS编程的基础和简单的程序编写 学生通过本实验能够初步的了解和掌握Ti ...
- GitHub Android 最火开源项目Top20 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上。基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。
1. ActionBarSherlock(推荐) ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便 ...
- 20145213 《Java程序设计》实验四 Android开发基础
20145213 <Java程序设计>实验四 Android开发基础 说在前面的话 不同以往实验,对于这次实验具体内容我是比较茫然的.因为点我,打开实验四的链接居然能飘出一股熟悉的味道,这 ...
- 20145308刘昊阳 《Java程序设计》实验四 Android环境搭建 实验报告
20145308刘昊阳 <Java程序设计>实验四 Android环境搭建 实验报告 实验名称 Android环境搭建 实验内容 搭建Android环境 运行Android 修改代码,能输 ...
- 20145337实验四Android开发基础
20145337实验四Android开发基础 实验内容 基于Android Studio开发简单的Android应用并部署测试; 了解Android组件.布局管理器的使用: 掌握Android中事件处 ...
随机推荐
- JS的全局变量与局部变量及变量的提升
遇到全局变量与局部变量的时候总是出一些或多或少的问题,于是专门花时间去认真研究了一下全局变量与局部变量. 这是在网上看到的一个关于全局变量与局部变量的代码,看了下作者的解析,自己也进行了研究. < ...
- Nginx实现404页面的几种方法
一个网站项目,肯定是避免不了404页面的,通常使用Nginx作为Web服务器时,有以下集中配置方式,一起来看看. 第一种:Nginx自己的错误页面 Nginx访问一个静态的html 页面,当这个页面没 ...
- Python中类的__init__继承
Python中类的__init__继承 概念: 定义父类 In [10]: class Person: ....: def __init__(self,name,age,sex): ....: sel ...
- css——letter spacing
letter spacing属性是用来设置字母的间距 实例: 设置h1和h2之间字母的间距 <html> <head> <style type="text/cs ...
- SQL求几何重心
ST_Centroid(geometry); geometry :a specified ST_Geometry e.g.: select ST_AsText(ST_Centroid('0103000 ...
- IIS10安装IIS URL重写模块2伪静态组件提示需要IIS7.0以上版本。
解决方法: 打开注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InetStp 双击右边MajorVersion,默认的数值是a,修改成9,然后再安装 ,安装完成后 ...
- centos 远程授权
centos 远程授权命令 ssh-copy-id root@192.168.15.70
- Delphi做验证码登录窗口
在五月麦田的帮助下做成了,感觉挺好,验证码输入的时候需要大写: 组件:LabelEdit 3个 Button 2个 image 1个. 代码如下: unit Unit1; interface us ...
- reinterpret_cast
reinterpret_cast强制类型转换符 用法: new_type a = reinterpret_cast <new_type> (value) 将value的值转成new_typ ...
- Java复数的加乘除运算
//主要是对零的处理,有什么不对的地方欢迎批评指正,一起进步class complex{ double a,b; public String toString() { return("实部: ...