实验四 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
最新文章
- eCharts 数据转换json
- 【新手总结】在.Net项目中使用Redis作为缓存服务
- Unity3D 搭建优雅的UI框架
- redis windows
- kvm 克隆虚拟机
- cms3.0——收获(1)
- SPOJ #10657. LOGIC (riddle)
- 前端之JavaScript第一天学习(3)-JavaScript输出
- Win10 VMware虚拟机无法打开内核设备“\\.\Global\vmx86“
- Android查询:模拟键盘鼠标事件(adb shell 实现)
- angular依赖注入的理解(转)
- 高难度(1)什么是AR
- ios运行某些工程时屏幕上下出现黑边的解决办法
- 【转】十款让 Web 前端开发人员更轻松的实用工具
- CanVas类(绘图类)
- sass 与 less 的区别与学习
- 2017-4-25/设计缓存(LFU)
- day3 自定义指令详解
- python之多线程 queue 实践 筛选有效url
- MySQL在线删除多余的binlog文件