实验报告Word文件下载.docx
- 文档编号:16080571
- 上传时间:2022-11-18
- 格式:DOCX
- 页数:28
- 大小:672.20KB
实验报告Word文件下载.docx
《实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《实验报告Word文件下载.docx(28页珍藏版)》请在冰豆网上搜索。
实验1-ucos环境搭建
专业:
15物联网班级:
一班学号:
_124292015053_姓名:
严铭
_124292015065_姓名:
钟诚博
一、实验目的
1.搭建uC/OS-II在SourceInsight下的环境
2.搭建uC/OS-II在VC++6.0下的环境
3.了解uC/OS-II的文件结构
二、实验环境
1.PC机一台
2.uC/OS-II2.91源代码
3.SourceInsight3.5安装软件
4.VC++6.0安装软件
三、实验内容
1.安装SourceInsight3.5
2.安装VC++6.0(如果已经安装不需再安装)
系统中已安装
3.拷贝uC/OS-II2.91源代码
4.在SourceInsight中创建工程,把uC/OS-II2.91源代码导入工程,实现在SourceInsight中顺利查看uC/OS-II2.91源代码。
5.在VC++6.0中创建工程,添加uC/OS-II2.91源代码到工程中,实现uC/OS-II2.91源代码在VC++6.0中能够顺利编译运行。
四、实验总结
本学期第一个实验,软件安装及框架搭建,为了之后的实验铺垫,很简单就能完成,但刚开始因为不熟悉的原因也是浪费了不少时间。
好在按着步骤一点点实行,最后按时完成了实验。
实验2-ucos初步使用
(一)
一、实验目的
1.通过输入代码熟悉在µ
C/OS-II中编程的步骤;
2.熟练µ
C/OS-II任务的框架
3.初步了解µ
C/OS-II内存管理
3.SourceInsight3.5软件
4.VC++6.0软件
1.内存分区管理任务的步骤是?
答:
内存控制块初始化,创建内存分区,任务请求内存块、获得内存块,查询并统计分区中已用的内存块及空闲的内存块,释放分区。
(1)在main.c文件中的main函数中进行下面修改
(2)在test.h头文件的最后面增加内存管理函数的声明
(3)在test.c文件中增加内存管理函数的函数体
(4)编译一下,看是否有问题
(5)运行结果如下:
四、实验总结
实施操作课的第一次编程实验,因为老师一开始有提供代码的原因,照着样本输入基本没什么问题。
难点在于看懂代码的编写原理,很多语句看不懂,最后只能通过网络以及请教他人来理解。
实验3-ucos初步使用
(二)
2.熟悉µ
C/OS-II消息邮箱管理
3.VC++6.0软件
1.消息邮箱管理任务的步骤是?
(1)在main.c文件中的main函数中进行下面修改,把所有的实验都整合在一起。
(2)在test.h头文件的最后面增加消息邮箱任务函数的声明
(3)在test.c文件中增加消息邮箱任务的函数体
从这一次的实验开始,老师让我们把程序及之后的都整合到同一个工程内,方便期末上交报告,以至于除了这次实验的编程,还要额外对实验管理进行编译。
有了上次的经验,这次完成提前了一点,果然熟能生巧啊。
实验4-ucos任务基本管理
(一)
1.理解任务管理的基本原理,了解任务的基本状态及其变迁过程;
2.掌握µ
C/OS-II中任务管理的基本方法(创建、启动、挂起、解挂任务);
3.熟练使用µ
C/OS-II任务管理的基本系统调用
1.如果希望应用程序中任务的优先级别为28个,则需要在UC/OS-II源代码中的什么文件的什么地方做一些修改?
如果应用程序中使用了系统提供的空闲任务和统计任务,则该应用程序最多可以安排多少个任务?
0S_LOWESR_PRIO函数中中设置,26个
2.设计一个只有一个任务myTask,当程序运行后任务的工作就是每秒在显示器上显示一个字符“M”。
①.程序源代码如下:
(实现程序的主要源代码)
voidmyTask(void*pParam)
{
inti=0;
printf("
本任务的功能--每秒显示一个M\n"
);
for(;
;
)
{
printf("
第%d秒:
M\n"
i++);
OSTimeDly(100);
}
}
②.程序运行的截图
③.实现过程中的思考
因为花了时间对之前实验的进行了理解,这个代码编写显得不那么难,按着之前的代码理解然后编写即可。
3.在第2题应用程序的任务myTask中再创建一个任务yourTask。
当
程序运行后,任务myTask的工作在显示器上显示一个字符“M”;
yourTask则是在显示器上显示字符“Y”,两个任务延时同样的
时间1s。
voidyourTask(void*pParam)
本任务的功能--每秒显示一个Y\n"
{
Y\n"
要加强自己的归纳理解能力,这个代码也像之前编写的一样,只是在这基础上增加“Y”的编写即可。
4.修改第3题应用程序的任务yourTask。
要求任务yourTask运行3次后,挂起任务myTask;
任务yourTask运行5次后,恢复任务myTask。
voidyourTask1(void*pParam)
inta=0;
for(a;
a<
8;
a++)
if(a==3)
{
printf("
任务yourTask被挂起\n"
OSTaskSuspend(6);
}
任务yourTask恢复\n"
OSTaskResume(6);
通过对之前实验的总结,以及课堂上提供的代码编写该程序,花了不少时间。
4、实验总结
这次的实验告诉我对每次课堂内容及时整理及理解的重要性,如果没有这样做,这次的实验可能不会按时完成。
除此以外,三个小实验的设计也让我学会了一种循序渐进的思考过程,之后的实验我也会运用这种模式去完成。
在这之前,我要先加深对课程的理解,因为这才是最重要的。
实验5-ucos任务基本管理
(二)
1、实验目的
1.改造实验四中第3题的任务myTask,当任务myTask运行2次时,用函数OSSchedLock()对调度器进行加锁;
而当任务myTask运行到第10次时,再用函数OSSchedUnlock()对调度器进行解锁,并运行该程序。
请思考:
当调度器被锁后,为什么myTask运行的速度明显加快(既显示M的速度明显加快)
因为当调度器被锁后,任务调度就不会再继续进行。
myTask运行的速度之所以加快,是因为在任务myTask中对调度器加锁后,系统只会运行任务myTask,而只有在任务调度器解锁后,其他任务才会得到系统的调度而运行。
voidex5_myTask(void*pParam)
10;
if(a==1)
对调度器加锁\n"
OSSchedLock();
对调度器解锁\n"
OSSchedUnlock();
答:
因为有些问题想不通,加锁过程的实现并不顺利,所以最后参考了其他人的建议才勉强完成。
2.建立一个起始任务TaskA,由它再建立1个任务TaskB来完成如
下任务:
由TaskB在屏幕上依次输出字符“|”、“\”、“--”、“/”,而产生一个向右转动的动画标志。
旋转5s后,TaskA挂起TaskB,过3s后恢复TaskB。
再过10s后,TaskA删除TaskB。
补充:
用printf函数时,\b实现回退一个字符。
voidex5_TaskB(void*pParam)
输出的内容:
\n"
for(;
;
)
{
printf("
\b\\"
OSTim
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 报告