logo资料库

嵌入式多任务实现课程设计.doc

第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
资料共13页,剩余部分请下载后查看
一、课设目的及内容
二、设计的原理
三、环境搭建及开发步骤
五、运行测试结果
六、心得体会及自己所做的亮点工作的特别说明
七、参考文献
华东交通大学课程设计报告 目 录 一、课设目的及内容..........................................................................1 二、设计的原理..................................................................................2 三、环境搭建及开发步骤..................................................................3 四、主要程序代码设计......................................................................7 五、运行测试结果..............................................................................9 六、心得体会及自己所做的亮点工作的特别说明.......................10 七、参考文献....................................................................................11
华东交通大学课程设计报告 一、课设目的及内容 1、实验目的 1).理解多任务调度机制 2).了解 A/D 转换原理 3).编程实现对模拟信号的采集 2、实验内容 1).使用多任务,每个任务监视一路 AD 转换,每一路 AD 转换的结果 在触摸屏上用一个波 2).表来表示,直观地显示每路 AD 的结果。可以通过文本框给每路 AD 设置警戒值,超出警戒 3).之后超出的部分会以闪动的方式显示。 4).求出四路通道的平均值,并绘制在显示屏上(平均值应该象其他通 道的值一样,可以根据实时采集值的变化而变化)。 5).报警,在超出阈值时报警一次,如果此后此通道的值不变则不再报 警,若此通道的值被调小为小于阈值而后又被调为大于阈值,则再次报警 一次。 6).设置时间和日期初值,并实时显示在 LCD 上(同各通道的值同屏显 示)。并能够在整点的时候发声提示。 第 1 页
华东交通大学课程设计报告 二、设计的原理 1、用 CreateTextCtrl 函数创建文本框,SetTextCtrlText 函数设置 文本框中的内容。 2、用 CreateListCtrl 函数创建列表框,ReLoadListCtrl 函数装载一 组字符串。 3、使用 OSTaskCreate 来创建系统任务。在 uCOS-II 系统中,任务的 优先级是不能相同的。比如:Main_Task 任务的优先级是 12,Key_Scan_Task 任务的优先级是 56。目前使用的 uCOS-II 的版本只支持 64 个任务,包括 8 个系统任务,用户可以使用的任务是 56 个。创建任务的时候,需要选择 合适的任务优先级(比如:14)。 4、通过 SetTextCtrlEdit 函数设置文本框是否处于编辑状态,使用 TextCtrlDeleteChar 和 AppendChar2TextCtrl 函数在文本框中删除和追加 字符。 5 、 键 盘 消 息 是 OSM_KEY , 列 表 框 选 择 改 变 消 息 是 OSM_LISTCTRL_SELCHANGE 6、使用 Rtc_IsTimeChange 函数,判断系统的时钟对应的某一位是否 改变。用 Rtc_Format 格式化系统的时钟格式得到 Unicode 字符串,可以 方便的显示到文本框控件里。 7、可以使用一个指针函数数组装载系统的各个功能(绘制图形、设置 时间、USB 下载)函数,便于管理。如下面的程序所示: void*MainFunction[]={(void*)OnDrawBmp,(void*)OnSetTime,(void *)OnUsb_Download}; 其中,OnDrawBmp,OnSetTime,OnUsb_Download 函数就是对应的绘制图 形、设置时间、USB 下载功能函数。可以使用如下程序所示的方法调用指 定序列的函数: ((void(*)(void))(MainFunction[pMainListCtrl->CurrentSel]))() 其中,pMainListCtrl 表示指向系统主功能文本框的指针。 第 2 页
华东交通大学课程设计报告 三、环境搭建及开发步骤 1、在 ARM SDT 2.51 或 ADS1.2 中,打开实验一中创建好的模板,新 建一个项目 work1。把操作系统的所需要的头文件(*.h)和库文件(SDT 为 *.alf,ADS 为*.a)加入工程中。 2、打开 Main.c 文件。 3、重点分析 Main 函数中的代码,了解系统的启动过程。Main 函数的 代码如下: int Main(int argc, char **argv) { ARMTargetInit(); //开发板初始化 OSInit(); //操作系统初始化 uHALr_ResetMMU();//复位 MMU LCD_Init(); //初始化 LCD 模块 LCD_printf("LCD initialization is OK\n");//向液晶屏输出数据 LCD_printf("320 x 240 Text Mode\n"); initOSGUI();//初始化图形界面 LoadFont();//调 Unicode 字库 LoadConfigSys();//使用 config.sys 文件配置系统设置 LCD_printf("Create task on uCOS-II...\n"); OSTaskCreate(Main_Task, (void *)0, (OS_STK *)&Main_Stack[STACKSIZE*8-1], Main_Task_Prio);// 创建系统任务 OSAddTask_Init();//创建系统附加任务 LCD_printf("Starting uCOS-II...\n"); LCD_printf("Entering graph mode...\n"); LCD_ChangeMode(DspGraMode);//变 LCD 显示模式为文本模式 InitRtc();//初始化系统时钟 Nand_Rw_Sem=OSSemCreate(1); //创建 Nand-Flash 读写控制权旗语, 初值为 1 满足互斥条 第 3 页
华东交通大学课程设计报告 件// OSStart();//操作系统任务调度开始 //不会执行到这里 return 0; } 通常多操作系统中的任务是一个无限循环,同样,Main_Task 也要陷 入一个无限循环。因为 uCOS-II 是占先式多任务操作系统,如果没有比 Main_Task 任务更高优先级的任务进入就绪状态,Main_Task 任务是不会 放弃 CPU 的控制权的。通过调用 OSTimeDly(INT16U ticks)函数,可以使 操作系统进行一次任务调度,并且执行下一个优先级最高的就绪状态的任 务。参数 Ticks 表示任务延时的节拍数,一旦规定的时间期满,该任务马 上又会从新进入就绪状态。 5、为在液晶屏幕和终端(串行口)上输出字符串(比如:Hello world!) 编写程序。可以分别使用 LCD_printf()和 Uart_Printf()函数。 提示:因为操作系统默认的液晶显示摸式是图形状态,必须通过 LCD_ChangeMode 函数设置液晶显示为文本摸式。建议在显示自己的文本的 时候先调用 LCD_Cls()函数清除屏幕。 6、编译并调试程序。 7、运行 Windows 系统下的超级终端(HyperTerminal)应用程序,如 图 2-1 所示新建一 个终端通信,取名为 arm。单击“确定”按钮。 第 4 页
华东交通大学课程设计报告 图 2-1 创建超级终端 8、选择终端的连接的串口(如串行口 1),如图 2-2 所示,设置通信 的格式和协议。 9、设置完成超级终端以后,打开开发板,按住开发板上的任意一键, 图 2-2 设置串行口 使开发板进入 BIOS 设置状态。如图 2-3 所示。 第 5 页
华东交通大学课程设计报告 图 2-3 系统的 BIOS 设置程序 10、按 PC 键盘的 U 键(要使超级终端处于活动状态),这时超级终端 上会显示如图 2-4 所示的信息。 11、这时,在“我的电脑”中可以发现多了一个“可移动磁盘”,这就 图 2-4 进入 U 盘状态 是开发板的海量 存储器 16M 非线性 Flash。开发板就像一个 U 盘,可以通过“我的电 脑”进行操作。把生成 的 system.bin 文件通过 USB 下载到嵌入式开发板中,复位系统,运 行并检查输出结果。 提示:system.bin 文件是系统通过 BIOS 引导以后,装入内存中运行 的默认文件名。 第 6 页
分享到:
收藏