实验四 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中事件处 ...
随机推荐
- 第三天:numpy库
PS: 这个好像是Python2.X版本的使用. 这个课件的numpy的介绍还是太少了,有点凌乱的感觉,要是后面还是要以<利用Python进行数据分析>做numpy和pandas课件笔记比 ...
- 利用Delphi编写Socket通信程序
一.Delphi与Socket 计算机网络是由一系列网络通信协议组成的,其中的核心协议是传输层的TCP/IP和UDP协议.TCP是面向连接的,通信双方保持一条通路,好比目前的电话线,使用telnet登 ...
- Spark 中Java实现数据库Row转Rating
Dataset<Row> ratings = mlsc.sql("SELECT user,movie,rating FROM data");JavaRDD<Row ...
- Django部署以及整合celery
前言 Djngo部署的结构一般都是nginx+uwsgi+python web 一.新建一个Djang项目并合并celery 项目名随便打的..命名规范驼峰啥的别和我扯犊子哈 跑一下,然后我们就有一个 ...
- 不使用接口的 limit 控制分页的容量
1.html中v-for 此时的v-for对象并不是在后台获取的数组list,而是计算属性的函数名pageList <div v-for="item in pageList" ...
- 201671010142 2017-2 《java第十章学习感悟》
组件:Java把由Component类的子类或间接子类创建的对象称为一个组件. 容器:是Java中能容纳和排列组件的组件. Container类提供了一个方法add(),用来在容器类组件对象中添加其他 ...
- 20190219备份 java spring boot 学习链接(日/英)
Building web applications with Spring Boot and Kotlin https://www.slideshare.net/masuda220/spring-82 ...
- Unity 关于AssetBundle读取场景
一. 1.关于如何打包成ab包,就不多说了,网上很多教程,siki学院也有siki老师的免费视频教程挺详细的,可以看看 http://www.sikiedu.com/my/course/74 2.为了 ...
- windows处理PHP定时任务
我用的是bat文件处理定时任务,bat文件是可执行文件,由一系列命令构成,其中可以包含对其他程序的调用 创建一个bat文件,编辑文本,添加需要的php文件,前面路径是你的PHP执行程序,后面路径是文件 ...
- nc/netcat命令
nc/netcat命令 语法 nc/netcat(选项)(参数) 选项 -g<网关>:设置路由器跃程通信网关,最多设置8个: -G<指向器数目>:设置来源路由指向器,其数值为4 ...