




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验三 UC-OS移植实验一、实验目的在内核移植了uCOS-II 的处理器上创建任务。二、实验内容1运行实验十,在超级终端上观察四个任务的切换。 2. 任务13,每个控制“红”、“绿”、“蓝”一种颜色的显示,适当增加OSTimeDly()的时间,且优先级高的任务延时时间加长,以便看清三种颜色。 3. 引入一个全局变量 BOOLEAN ac_key,解决完整刷屏问题。 4. #define rUTRSTAT0 (*(volatile unsigned *)0x50000010) #define RdURXH0()(*(volatile unsigned char *)0x50000024) 当键
2、盘有输入时在超级终端上显示相应的字符。三、实验设备硬件:ARM嵌入式开发平台、用于ARM920T的JTAG仿真器、PC机Pentium100以上。软件:PC机操作系统Win2000或WinXP、ARM ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序。四、实验原理所谓移植,指的是一个操作系统可以在某个微处理器或者微控制器上运行。虽然uCOS-II的大部分源代码是用C语言写成的,仍需要用C语言和汇编语言完成一些与处理器相关的代码。比如:uCOS-II在读写处理器、寄存器时只能通过汇编语言来实现。因为uCOS-II在设计的时候就己经充分考虑了可移植性,所以,uCOS-II的移植还是比较容
3、易的。要使uCOS一工工可以正常工作,处理器必须满足以下要求:1)处理器的C编译器能产生可重入代码。2)在程序中可以打开或者关闭中断。3)处理器支持中断,并A能产生定时中断(通常在10Hz1000Hz之间)。4)处理器支持能够容纳一定量数据的硬件堆栈。5) 处理器有将堆栈指针和其它CPU寄存器存储和读出到堆栈(或者内存)的指令。2 / 7uCOS-II进行任务调度的时候,会把当前任务的CPU寄存器存放到此任务的堆栈中,然后,再从另一个任务的堆栈中恢复原来的工作寄存器,继续运行另一个任务。所以,寄存器的入栈和出栈是uCOS一工工多任务调度的基础。五、实验步骤1 以实验十为模板,将实验六 inc目
4、录下的LCD320.H 和src目录下的LCD640.C拷到 模板下的相应目录,将LCD640.C加入工程中。2 包含以下头文件 #include “inc/lcd320.h”。3 改LCD640.C 文件中包含头文件的路径 。 #include ./inc/drv/reg2410.h 4 声明引用的变量 extern U32 LCDBufferII2LCDHEIGHTLCDWIDTH; 六、 源程序#include./ucos-ii/includes.h /* uC/OS interface */#include ./ucos-ii/add/osaddition.h#include ./in
5、c/drivers.h#include ./inc/sys/lib.h#include ./src/gui/gui.h#include ./inc/lcd320.h#include #include /#include .inc/lcd320.h/#pragma import(_use_no_semihosting_swi) / ensure no functions that use semihosting OS_EVENT *MboxSem;/*任务定义*/*OS_STK SYS_Task_StackSTACKSIZE= 0, ; /system task刷新任务堆栈#define SYS
6、_Task_Prio1 void SYS_Task(void *Id);*/OS_STK task1_StackSTACKSIZE=0, ; /Main_Test_Task堆栈void Task1(void *Id); /Main_Test_Task#define Task1_Prio 12OS_STK task2_StackSTACKSIZE=0, ; /test_Test_Task堆栈void Task2(void *Id); /test_Test_Task#define Task2_Prio 15OS_STK task3_StackSTACKSIZE=0, ; /test_Test_Ta
7、sk堆栈void Task3(void *Id); /test_Test_Task#define Task3_Prio 17OS_STK task4_StackSTACKSIZE=0, ; /test_Test_Task堆栈void Task4(void *Id); /test_Test_Task#define Task4_Prio 10extern U32 LCDBufferII2LCDHEIGHTLCDWIDTH; extern BOOLEAN ac_key=1;int k,j;#define rUTRSTAT0 (*(volatile unsigned *)0x50000010)#def
8、ine RdURXH0() (*(volatile unsigned char *)0x50000024)/*已经定义的OS任务*#define SYS_Task_Prio1#define Touch_Screen_Task_Prio9#define Main_Task_Prio 12#define Key_Scan_Task_Prio 58#define Lcd_Fresh_prio 59#define Led_Flash_Prio 60*/*事件定义*/ Main function. /int main(void)ARMTargetInit(); / do target (uHAL bas
9、ed ARM system) initialisation /OSInit(); / needed by uC/OS-II / LCD_Init();/OSTaskCreate(SYS_Task, (void *)0, (OS_STK *)&SYS_Task_StackSTACKSIZE-1, SYS_Task_Prio); OSTaskCreate(Task1, (void *)0, (OS_STK *)&task1_StackSTACKSIZE-1, Task1_Prio); OSTaskCreate(Task2, (void *)0, (OS_STK *)&task2_StackSTAC
10、KSIZE-1, Task2_Prio); OSTaskCreate(Task3, (void *)0, (OS_STK *)&task3_StackSTACKSIZE-1, Task3_Prio); OSTaskCreate(Task4, (void *)0, (OS_STK *)&task4_StackSTACKSIZE-1, Task4_Prio); OSAddTask_Init(0); BSPprintf(0,Starting uCOS-II.n);OSStart(); / start the OS / never reached /return 0;/void Task1(void
11、*Id) for(;) if(ac_key=1) ac_key=0; BSPprintf(0,RED%nn); for (k=0;k480;k+) for (j=0;j640;j+) LCDBufferII2kj=0x000000ff; LCD_Refresh(); OSTimeDly(10000); ac_key=1; void Task2(void *Id) for(;) if(ac_key=1) ac_key=0; BSPprintf(0,GREEN%nn); for (k=0;k480;k+) for (j=0;j640;j+) LCDBufferII2kj=0x0000fc00; L
12、CD_Refresh(); ac_key=1; OSTimeDly(8000); void Task3(void *Id) for(;) if(ac_key=1) ac_key=0; BSPprintf(0,BLUE%nn); for (k=0;k480;k+) for (j=0;j640;j+) LCDBufferII2kj=0x00f80000; LCD_Refresh(); ac_key=1; OSTimeDly(6000); void Task4(void *Id) char s;for(;) ac_key=0; if (rUTRSTAT0 & 1) s=RdURXH0(); OSTi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理安全管理
- 大班家长会活动情况总结模版
- 山东省济宁市2025年高考模拟考试英语试题及答案(济宁三模)
- 浅析药品GMP修订草案邓海根老师-09-08-04
- 小学开展语言文字工作总结模版
- 心房内传导阻滞的临床护理
- 统编人教版三年级语文下册《口语交际:春游去哪儿玩》公开课教学课件
- 学前儿童发展 课件 第10章 学前儿童语言的发展
- 内蒙古根河市阿龙山中学2025届七年级数学第二学期期末达标检测模拟试题含解析
- 湖南省凤凰县联考2025年七下数学期末质量检测模拟试题含解析
- 2025+CSCO非小细胞肺癌诊疗指南解读课件
- 中学生学宪法班会课件
- 医院后勤考试试题及答案
- 县人民医院老住院楼装修改造项目可行性研究报告申请报告编写
- 肾内科健康科普护理
- 第1课 中华文明的起源与早期国家 课件 人教版必修上册中外历史纲要
- 互联网运营思维
- T∕CACM 1085-2018 中医治未病技术操作规范 调神益智针法预防血管性认知障碍
- 装修销售培训课件
- 暗挖开挖技术交底
- 数据治理架构试题及答案
评论
0/150
提交评论