已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验三、基于实时操作系统mC/OS-II实验一、实验目的在内核移植了uCOS-II 的处理器上创建任务。二、实验内容1运行C盘的实验十,在超级终端上观察两个任务的切换。2创建第三个任务,在超级终端上打印第三个任务。 3任务13,每个控制“红”、“绿”、“蓝”一种颜色的显示,适当增加OSTimeDly()的时间,且优先级高的任务延时时间加长,以便看清三种颜色。 4引入一个全局变量 BOOLEAN ac_key,解决完整刷屏问题。5创建任务4,#define rUTRSTAT0 (*(volatile unsigned *)0x50000010) #define RdURXH0()(*(volatile unsigned char *)0x50000024)当键盘有输入时在超级终端上显示相应的字符。三、实验方法1以实验十为模板,将实验六 inc目录下的LCD320.H 和src目录下的LCD640.C拷到 模板下的相应目录。2包含以下头文件 #include “inc/lcd320.h”。3改LCD640.C 文件中包含头文件的路径 。 #include lcd320.h ” #include reg2410.h”4声明引用的变量 extern U32 LCDBufferII2480640; 四、实验设备2410s教学实验箱,ARM920T的JTAG仿真器,ARM ADS 1.2集成开发环境,串口连接线五、实验原理及说明1 移植的简介:所谓移植,就是使一个实时操作系统能够在某个微处理器或微控制器平台上运行;为了方便移植,mCOS-II的大部分代码是用标准的C语言编写的,无须改动。但仍需要用C和汇编语言写一些与处理器相关的代码,这是因为mC/OS-在读写处理器的寄存器时只能通过汇编语言来实现。2 移植mCOS-II时须满足的条件处理器的C编译器能产生可重入代码; 在程序中可以打开或者关闭中断; 处理器支持中断,并且能产生定时中断(通常在101000Hz之间);处理器支持能容纳一定量数据的硬件堆栈。处理器有将栈指针和其他CPU寄存器内容保存到栈(或者内存)的指令,以及相应的出栈指令。 3 任务定义:OS_STK task1_StackSTACKSIZE=0, ; /Main_Test_Task堆栈void Task1(void *Id); /Main_Test_Task #define Task1_Prio 124任务创建OSTaskCreate(Task1, (void *)0, (OS_STK *)&task1_StackSTACKSIZE-1, Task1_Prio);六、主程序/*Copyright (c) 2004-2007 , All rights reserved.by threewter2004.5.12*/* #说明: C main 函数,ucos-ii初始化等定义- Bug - TODO list -修正-2004-5-12创建*/#include./ucos-ii/includes.h /* uC/OS interface */#include ./ucos-ii/add/osaddition.h#include ./inc/drivers.h#include ./inc/sys/lib.h#include ./src/gui/gui.h#include #include #include inc/lcd320.h#define U8 unsigned char#pragma import(_use_no_semihosting_swi) / ensure no functions that use semihosting extern U32 LCDBufferII2480640;#define rUTRSTAT0(*(volatile unsigned *)0x50000010)#define rUTRSTAT1(*(volatile unsigned *)0x50004010)#define WrUTXH0(ch)(*(volatile unsigned char *)0x50000020)=(unsigned char)(ch)#define WrUTXH1(ch)(*(volatile unsigned char *)0x50004020)=(unsigned char)(ch)#define RdURXH0()(*(volatile unsigned char *)0x50000024)#define RdURXH1()(*(volatile unsigned char *)0x50004024)/void Uart_SendByten(int Uartnum, U8 data);void Uart_SendByten(int,U8);char Uart_Getchn(char* Revdata, int Uartnum, int timeout);void ARMTargetInit(void);void hudelay(int time);/*任务定义*/*OS_STK SYS_Task_StackSTACKSIZE= 0, ; /system task刷新任务堆栈#define SYS_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_Task堆栈void Task3(void *Id); /test_Test_Task#define Task3_Prio 18OS_STK task4_StackSTACKSIZE=0, ; /test_Test_Task堆栈void Task4(void *Id); /test_Test_Task#define Task4_Prio 20BOOLEAN ac_key/*已经定义的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 based ARM system) initialisation /OSInit(); / needed by uC/OS-II /LCD_Init();/LCD初始化/OSInitUart();/initOSFile();/#if USE_MINIGUI=0/initOSMessage();/initOSDC();/LoadFont();/#endif/loadsystemParam();/ create the tasks in uC/OS and assign increasing / priorities to them so that Task3 at the end of / the pipeline has the highest priority. /LCD_printf(Create task on uCOS-II.n);/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_StackSTACKSIZE-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); /LCD_printf(Starting uCOS-II.n);/LCD_printf(Entering graph mode.n);/LCD_ChangeMode(DspGraMode);OSStart(); / start the OS / never reached /return 0;/main/void Task1(void *Id)int i,j;for(;)printf(run task1n);if(ac_key) ac_key=FALSE; for (i=0;i480;i+) for (j=0;j640;j+) LCDBufferII2ij=0x000000f8; /R 红色 LCD_Refresh() ; ac_key=TRUE; OSTimeDly(8000);void Task2(void *Id)int i,j;for(;)printf(run task2n); if(ac_key) ac_key=FALSE; for (i=0;i480;i+) for (j=0;j640;j+) LCDBufferII2ij=0x0000fc00; /R 红色 LCD_Refresh() ; ac_key=TRUE;OSTimeDly(4000);void Task3(void *Id)int i,j;for(;)printf(run task3n); if(ac_key) ac_key=FALSE; for (i=0;i480;i+) for (j=0;j640;j+) LCDBufferII2ij=0x00f80000; /R 红色 LCD_Refresh() ; ac_key=TRUE;OSTimeDly(2000);void Task4(void *Id) char c11; char err;for(;)printf(run task4n);while(1) Uart_SendByten(0,0xa);/换行Uart_SendByten(0,0xd);/回车 err=Uart_Getchn(c1,0,0);/从串口采集数据 Uart_SendByten(0,c10);/显示采集的数据OSTimeDly(2000);/* void SYS_Task(void *Id)OSRunning=TRUE;/begin OSuHALr_InstallSystemTimer();/Uart_Printf(0,start system task.n);printf(start system task.n);for (;)OSTimeDly(1000);*/void Uart_SendByten(int Uartnum, U8 data)/ok eric rong /int i;if(Uartnum=0) while(!(rUTRSTAT0 & 0x4); /Wait until THR is empty.hudelay(10);WrUTXH0(data); else while(!(rUTRSTAT1 & 0x4); /Wait until THR is empty.hudelay(10);WrUTXH1(data); char Uart_Getchn(char* Revdata, int Uartnum, int timeout)if(Uartnum=0)while(!(rUTRSTAT0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2029年中国创业贷款行业市场发展分析及前景预判与投资研究报告
- 2024-2029年中国分动器行业发展趋势及发展前景研究报告
- 2024-2029年中国减肥中草药行业市场发展分析及发展趋势与投资战略研究报告
- 2024-2029年中国冷链行业十四五现状供需分析及市场深度研究发展前景及规划战略投资分析研究报告
- 2024-2029年中国冷拉条造粒行业市场现状分析及竞争格局与投资发展研究报告
- 2024-2029年中国农药行业发展分析及投资前景预测报告预测
- 2024-2029年中国农产品电子商务行业竞争分析与投资风险预测报告预测
- 2024-2029年中国公路养护剂行业市场现状分析及竞争格局与投资发展研究报告
- 2024吊顶承包合同
- 2024-2029年中国全氟化碳行业市场现状分析及竞争格局与投资发展研究报告
- 化学品安全技术说明(乙酸钠)
- 高三毕业最后一次班会
- 《选择比努力更重要 名师张雪峰手把手教你填报高考志愿》读书笔记思维导图PPT模板下载
- 2022青岛初二生物会考试卷
- 《毛泽东思想和中国特色社会主义体系理论概论》混合式教学改革申报书
- 烟草行业数据中心数据建模规范
- GB/T 24218.14-2010纺织品非织造布试验方法第14部分:包覆材料返湿量的测定
- GB/T 21954.2-2008金属切割带锯条第2部分:特性和尺寸
- 2023年中石油职称英语真题及答案
- 药店零售与服务技术考核试题及答案
- 2023年广东深圳英语中考试题试卷及答案3
评论
0/150
提交评论