AOTS实验报告材料Word文件下载.docx

上传人:b****6 文档编号:16144422 上传时间:2022-11-20 格式:DOCX 页数:49 大小:1.21MB
下载 相关 举报
AOTS实验报告材料Word文件下载.docx_第1页
第1页 / 共49页
AOTS实验报告材料Word文件下载.docx_第2页
第2页 / 共49页
AOTS实验报告材料Word文件下载.docx_第3页
第3页 / 共49页
AOTS实验报告材料Word文件下载.docx_第4页
第4页 / 共49页
AOTS实验报告材料Word文件下载.docx_第5页
第5页 / 共49页
点击查看更多>>
下载资源
资源描述

AOTS实验报告材料Word文件下载.docx

《AOTS实验报告材料Word文件下载.docx》由会员分享,可在线阅读,更多相关《AOTS实验报告材料Word文件下载.docx(49页珍藏版)》请在冰豆网上搜索。

AOTS实验报告材料Word文件下载.docx

将绿灯状态改为OFF,红灯通过时间延迟控制其的亮灭。

1.3实验关键代码

/**

LED示例程序的实现模块,简单的点亮3个LED灯

date2010-1

*/

moduleLedM

{

usesinterfaceBoot;

}

implementation

/**LED灯演示

*/

taskvoidDemoLed()

{

/**目前节点上提供两个LED灯

LED_BLUE->

蓝灯

LED_YELLOW->

黄灯

*/

inti,j;

while

(1)

{

for(i=0;

i<

1000;

i++)

for(j=0;

j<

500;

j++);

LED_BLUE_OFF;

/*熄灭蓝色LED灯*/

LED_YELLOW_OFF;

/*点亮黄色LED灯*/

for(i=0;

LED_BLUE_ON;

}

}

/**启动事件处理函数,在LED.nc已经关联到MainC.Boot接口

系统启动后会调用此函数

eventvoidBoot.booted()

postDemoLed();

1.4实验截图

1.5实验心得

通过这次实验,掌握了对LED的简单控制,受益匪浅,并且对此次实验的运作过程开始了解。

实验二定时器组件

通过定时器让绿色灯闪烁,并且闪烁三次后停止闪烁。

设置一个变量,在计时器每计数一次自加一次,加到三时,停止计时器。

#defineDBG_LEV5

moduleTimerLedM

/*Timer为系统接口TMilli指明了定时器的精度为毫秒*/

usesinterfaceTimer<

TMilli>

asTimer1;

/*as关键字为接口别名*/

asTimer2;

/**任务:

切换黄色LED灯*/

inti=0;

/**启动事件处理函数,在TimerLed.nc已经关联到MainC.Boot接口

/**定时器1:

持续工作,每隔1s触发一次*/

callTimer1.startPeriodic(1000);

/**定时器2:

持续工作,每隔3s触发一次*/

//callTimer2.startPeriodic(5000);

/**定时器1的事件处理函数*/

eventvoidTimer1.fired()

/**事件处理中直接切换蓝色LED灯*/

//ADBG(5,"

ledbluetoggle.\r\n"

);

//LED_BLUE_TOGGLE;

ADBG(5,"

ledyellowtoggle.\r\n"

//postToggleLedYellow();

LED_YELLOW_TOGGLE;

i=i+1;

if(i==3)callTimer1.stop();

//通过stop函数使定时器停止

/**定时器2的事件处理函数*/

eventvoidTimer2.fired()

通过此次实验,加强了我对代码的思考,更加了解定时器函数的使用。

实验三串口调试

通过级别控制,使得某些调试语句没有被输出到串口。

默认的ADBG_LEV为3000,将语句中的DBG_LEV参数改为比默认的ADBG_LEV小即可

串口调试程序的实现模块

date

/*定义调试级别,参加Makefile的ADBG_LEVEL定义,设置大于等于ADBG_LEVEL*/

#defineDBG_LEV3000

moduleSerialDebugM

通过串口打印信息来调试*/

taskvoidDebugSerial()

uint8_tnum1=0x39;

uint32_tnum2=0x12345678;

floatfloat1=123.1234;

/**ADBG,格式类似于printf,

第一个参数为调试等级,可以参见tos/lib/common/antdebug.h

/**打印字符和字符串*/

ADBG(DBG_LEV,"

\r\n\r\nDEMOofSerialDebug\r\n"

'

x'

1.Thisisastring,andthisischar'

%c'

\r\n"

/**打印8位的数字*/

2.NUM1:

HEX=0x%x,DEC=%d\r\n"

(int)(num1),(int)(num1));

/**打印32位数字*/

ADBG(2000,"

2.NUM2:

HEX=0x%lx,DEC=%ld\r\n"

(uint32_t)(num2),(uint32_t)

(num2));

/**打印浮点数*/

3.FLOAT:

%f\r\n"

float1);

/**启动事件处理函数,在SerialDebug.nc已经关联到MainC.Boot接口

postDebugSerial();

图1未屏蔽前

图2屏蔽后

此次实验加深了我对串口的了解与使用,是一次非常好的实验材料,受益匪浅。

实验四串口通信

实现一个串口实验,在串口助手中实现回显的功能。

(键盘键入的任何容回车后显示在串口助手的终端)

直接在原有的UartStream.receivedByte函数基础上修改,直接输出结果

串口输入输出程序的实现模块

author

#include<

strings.h>

/**定义此宏,将演示UartStream.receive函数,允许一次指定数量的数据*/

//#defineSERIALIO_RECEIVE

moduleSerialIoM

usesinterfaceStdControlasUartStdControl;

usesinterfaceUartStream;

uint8_tm_receive_len;

uint8_tm_echo_buf;

uint8_tm_send_buf[100];

/*显示一个菜单提示用户*/

voidshowMenu()

strcpy(m_send_buf,"

\r\n\r\nDemoofSerioI/O\r\n[1]ToggleBLUELED\r\n[2]

ToggleYELLOWLED\r\n"

/*通过UartStream.send可以发送字节数据*/

callUartStream.send(m_send_buf,strlen(m_send_buf));

/**启动事件处理函数,在SerialIo.nc已经关联到MainC.Boot接口

{

LED_BLUE_ON;

LED_YELLOW_ON;

callUartStdControl.start();

showMenu();

asynceventvoidUartStream.sendDone(uint8_t*buf,uint16_tlen,error_terror)

/**重新发送刚才接收的字符进行回显*/

taskvoidshowMenuTask()

taskvoidlightLED()

if(m_echo_buf=='

1'

LED_BLUE_TOGGLE;

/*切换蓝色LED灯*/

ADBG(DBG_LEV,"

YouchoosetotoggleBLUELED\r\n"

elseif(m_echo_buf=='

2'

LED_YELLOW_TOGGLE;

/*切换黄色LED灯*/

YouchoosetotoggleYELLOWLED\r\n"

/**如果没有调用receive接收,则每接收到一个数据就会触发此事件*/

asynceventvoidUartStream.receivedByte(uint8_tbyte)

m_echo_buf=byte;

%c\r"

m_echo_buf);

//将byte直接输出

postlightLED();

/**在接收完receive命令欲接收的长度后会调用此事件*/

asynceventvoidUartStream.receiveDone(uint8_t*buf,uint16_tlen,error_terror)

通过这次实验,对串口通信的原理有了大

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1