版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章认识µC/OS-Ⅱ
1.1准备工作1.2BC4.51和实例一1.3实例二1.4µC/OS-Ⅱ文件与函数1.5UP-Star硬件原理图1.6本章小结所谓“工欲善其事,必先利其器”(《论语》)。在开始学习本书内容之前,读者需要花点时间做一些软件和硬件方面的准备工作。
首先,需要一台配置较高的电脑。笔者使用的是一台笔记本电脑,基本配置为:酷睿2双核处理器T5450、2GB内存、160GB硬盘、12.1英寸宽显示屏和3个USB接口,操作系统为WindowsXPSP3。读者也需要准备类似的或更高的配置。1.1准备工作其次,应从网上下载软件BC4.51(BorlandC++4.51)和TASM5.0(BorlandTurboAssembler5.0),其大小分别约为41MB和4.2MB。将这两个软件安装在默认工作目录下,即分别安装在C:\BC45和C:\TASM下,然后,将C:\TASM\BIN\
TASM.EXE文件拷贝到C:\BC45\BIN目录下。
说明:不是必须按默认目录安装,但是目录名应该是不多于8个英文字母且首字符为字母的字符串,即按DOS命名规则命名的目录名,不要使用汉字和过长的目录名。安装完这两个软件后,将在Windows的“开始 | 所有程序”菜单中创建菜单启动组“BorlandC++4.5”和“BorlandTasm5.0”,单击“开始 | 所有程序 | BorlandC++4.5 | BorlandC++”,即可运行BorlandC++4.5。
再次,从Micrium网站下载µC/OS-Ⅱ,任何人注册登录后都可以下载。本书使用的版本为V2.86,如果Micrium网站更新µC/OS-Ⅱ为更高的版本,为了学习本书的方便,请联系作者或从相关网站下载V2.86版本,同时作者也会针对新的版本更新本书实例。如果Micrium网站上提供的是V2.86版本,其下载文件名为Micrium-uCOS-Ⅱ-V286.ZIP(注:由于软件的缘故,本书中所有uCOS和ucos皆指μCOS)。V2.86版本自2007年9月12日定型后,两年来仍没有升级,最近的报道显示Micrium公司推出了µC/OS-Ⅲ,因此,V2.86可能是µC/OS-Ⅱ的最终版本。读者可同时在Micrium网站下载一些移植程序和自己认为有用的应用文档。还需到IARSystems网站下载IAREmbeddedWorkbenchforARM(简称EWARM),最新版本为V5.40,其V5.30版本在网上十分盛行。本书使用V5.30版本,并且是上海爱亚软件提供的正式版本,但是建议读者使用EWARM的最新版本,实例完全兼容。
IARSystems是全球领先的嵌入式系统开发工具和服务供应商,1983年成立于瑞典乌普萨拉市,2004年在上海成立办事处,并且,IARSystems公司是Micrium公司产品的全球经销商,所以学习基于ARM的µC/OS-Ⅱ,EWARM是首选的软件。要启动EWARM,只需点击菜单项“开始 | 所有程序 | IARSystems|IAREmbeddedWorkbenchforARM5.30|IAREmbeddedWorkbench”即可。最后,如果读者使用不带串口的笔记本电脑,还需要一条USB转串口的接口线。除第一章实例一和实例二不需外接实验设备外,第二章至第七章的实例均需要借助UP-Star认证考试实验板(嵌入式工程师认证考试专用实验板),第八章的实例在博创UP-CUP2410实验箱(笔者上课时用的设备)上实现,第九章的实例在天嵌TQ2440开发板(笔者做项目用的开发板)上实现。读者要体验这些实例的运行情况,需要具备这些实验板或者载有S3C2410或S3C2440芯片的同类实验板卡。在开发和调试实例时,需要用到J-LINKforARM仿真器,如果读者有一块TQ2440开发板,由于TQ2440开发板上的JTAG接口是2.00mm间距10针,而J-LINK接口一般是2.54mm间距20针,因此需要做一个20针至10针JTAG转接头和10芯排线。如果读者有一块UP-Star实验板,由于UP-Star实验板上JTAG接口是2.54mm间距14针,故需要做一个20针至14针JTAG转接头和14芯排线。这两个转接头的原理图如图1-1和图1-2所示。而UP-CUP2410实验箱上集成了20针2.54mm间距JTAG接口,可以直接使用J-LINK仿真器。图1-120针至10针转接头原理图图1-220针至14针转接头原理图将笔记本电脑的一个USB口通过J-LINK(及其转接头)与UP-Star实验板(或UP-CUP2410实验箱、TQ2440开发板或其他ARM平台)上的JTAG接头相连接,笔记本电脑的另一个USB口通过USB转串口线与实验板上的串口0相连接,将实验板的电源线连接好,打开实验板电源开关和笔记本电脑,则实验环境与学习平台就建立好了。
在阅读本书时,读者可能同步阅读µC/OS-Ⅱ源代码或书中一些实例代码,作者建议使用SourceInsight软件阅读,用过的读者一定知道,只有这个软件才能把阅读代码变成一种乐趣和享受。本节的实例一和第1.3节的实例二就是《嵌入式实时操作系统µC/OS-Ⅱ(第2版)》(北京航空航天大学出版社出版)一书中的实例一和实例二,这里用µC/OS-ⅡV2.86版本,而原书中使用V2.52版本。这两个实例可用来加强读者对µC/OS-Ⅱ的感性认识。1.2BC4.51和实例一在D盘上新建目录ZYUCOSII,本书的所有工程均位于这个目录下;然后,在ZYUCOSII下新建子目录EX1_1,用于存放第一章的第一个实例;在目录EX1_1下新建5个子目录,依次为config、user、object、ports和ucosii,依次存放配置文件、用户编写的程序文件、编译后的目标文件、移植文件和µC/OS-Ⅱ系统文件,如图1-3所示。图1-3实例一工作目录把从网络上下载的文件Micrium-uCOS-Ⅱ-V286.ZIP解压后,将其中的目录“Micrium-uCOS-Ⅱ-V286\Micrium\SOFTWARE\uCOS-Ⅱ\Source”下的14个文件拷贝到图1-3中的ucosii目录下,并将其中的文件os_cfg_r.h和os_dbg_r.c拷贝到图1-3中的config目录下,将其更名为os_cfg.h和os_dbg.c,即去掉文件名中的_r。从网上下载《嵌入式实时操作系统µC/OS-Ⅱ(第2版)》一书附带光盘中的内容,将光盘目录“\SOFTWARE\
BLOCKS\PC\BC45\”下的两个文件PC.C和PC.H拷贝到图1-3中的user目录下;将光盘目录“\SOFTWARE\uCOS-Ⅱ\
EX1_x86L\BC45\SOURCE\”下的INCLUDES.H和TEST.C文件拷贝到图1-3中的user目录下,并将TEST.C更名为EX1_1.C;将光盘目录“\SOFTWARE\uCOS-Ⅱ\Ix86L\BC45”下的3个文件OS_CPU.H、OS_CPU_A.ASM和OS_CPU_C.C拷贝到图1-3中的ports目录下。在图1-3中的config目录下新建空的文本文件APP_CFG.H。该文件一般用于定义任务优先级和堆栈大小。
至此,图1-3中各子目录下的文件如表1-1所示。表1-1目录EX1_1下子目录中的文件去掉表1-1中所有文件的“只读”属性。
点击菜单“开始 | 所有程序 | BorlandC++4.5 | BorlandC++”启动BorlandC++,弹出如图1-4所示的窗口。图1-4BorlandC++4.5工作主窗口在图1-4中点击菜单“Project | Newproject…”,弹出如图1-5所示的窗口。图1-5新工程命名窗口如图1-5所示进行设置,其中,“ProjectPathandName:”和“TargetName:”两项可通过图中的“Browse…”按钮进行设置。然后,点击图中的“OK”按钮,保存设置并关闭“NewTarget”对话框,得到如图1-6所示的窗口。图1-6新建工程ex1_1在图1-6中删除文件节点“ex1_1.cpp”,添加文件节点“user\pc.c”、“user\ex1_1.c”、“ucosii\ucos_ii.c”、“ports\os_cpu_a.asm”、“ports\os_cpu_c.c”和“config\os_dbg.c”,如图1-7所示。注意,需要右键点击图1-6中的“ex1_1[.exe]”,在其右键弹出菜单中选择“Addnode”向其添加文件节点。图1-7工程ex1_1在图1-7中,点击菜单“Options | Project…”,弹出如图
1-8所示的对话框。图1-8工程选项对话框设置在图1-8中的“Include:”一栏中输入“c:\bc45\include;
d:\zyucosii\ex1_1\config;d:\zyucosii\ex1_1\ports;d:\zyucosii
\ex1_1\ucosii;d:\zyucosii\ex1_1\user”,指定工程ex1_1的头文件(或称包括文件)所在的目录;在“Source:”一栏中输入“d:\zyucosii\ex1_1\config;d:\zyucosii\ex1_1\ports;d:\zyucosii\ex1_1\ucosii;d:\zyucosii\ex1_1\user”,指定工程ex1_1的源文件所在的目录;在“Intermediate:”和“Final:”栏中均输入“d:\zyucosii\
ex1_1\object”,表示编译产生的中间文件和目标文件存放在目录“d:\zyucosii\ex1_1\object”中。在图1-8中点击“OK”按钮保存设置,并关闭对话框。在图1-7中点击菜单“File | Open…”打开文件“d:\zyucosii\ex1_1\user\includes.h”,将其第21、23和24行中的包括文件路径去掉后存盘,改为如图1-9所示。
在图1-7中双击文件节点“user\pc[.c]”弹出文件pc.c的内容,将该文件中的TRUE改为OS_TRUE,FALSE改为OS_FALSE,其中,TRUE位于第233、269和420行,FALSE位于第262和423行。
同样,修改文件ex1_1.c中第101行的TRUE为OS_TRUE。在µC/OS-ⅡV2.86中真为OS_TRUE,假为OS_FALSE。图1-9修改includes.h文件在文件OS_CPU.H的末尾添加如下函数声明:
voidOSCtxSw(void);
voidOSTickISR(void);
voidOSStartHighRdy(void);
voidOSIntCtxSw(void);
添加完后保存文件,如图1-10所示。图1-10修改OS_CPU.H文件打开文件“D:\ZYUCOSII\EX1_1\CONFIG\OS_CFG.H”,将第34行的OS_DEBUG_EN设为0,将第51行的OS_TICKS_PER_SEC设为200,将第136行的OS_TMR_EN设为0。
打开文件“D:\ZYUCOSII\EX1_1\UCOSII\OS_CORE.C”,在第1827行下添加以下语句:
if(OSCPUUsage>100)
OSCPUUsage=0;
添加后保存文件,如图1-11所示。图1-11修改os_core.c文件至此,在图1-11存盘后,点击菜单“Project | Buildall”,可以成功编译链接并生成可执行文件ex1_1.exe,位于目录“D:\ZYUCOSII\EX1_1\object”下,如图1-12所示。图1-12目录D:\ZYUCOSII\EX1_1\object尽管编译时有36个警告,但是点击图1-12中的ex1_1.exe文件,程序执行正常,如图1-13所示。图1-13右下角显示当前µC/OS-Ⅱ版本号为V2.86。按“Esc”键退出图1-13所示窗口。图1-13ex1_1.exe运行结果对于那些连警告都不放过的“完美主义者”来说,要消去编译时的36个警告,还要做以下工作:
(1)将文件“d:\zyucosii\ex1_1\user\ex1_1.c”的第80行注释掉,即
//chars[100];
或者,不将第80行注释掉,而在第82行添加语句:“(void)s;”。
(2)将文件“d:\zyucosii\ex1_1\user\pc.c”第202行中的INT8U*s改为INT8S*s,修改后的第202行为
voidPC_DispStr(INT8Ux,INT8Uy,INT8S*s,INT8Ucolor)
(3)将相应的文件“d:\zyucosii\ex1_1\user\pc.h”的第67行改为
voidPC_DispStr(INT8Ux,INT8Uy,INT8S*s,INT8Ucolor);
(4)将文件“d:\zyucosii\ex1_1\ucosii\os_core.c”的第1868和1871行改为
ptcb->OSTCBStkBase=ptcb->OSTCBStkBottom+(INT16U)ptcb->OSTCBStkSize;
ptcb->OSTCBStkBase=ptcb->OSTCBStkBottom-(INT16U)ptcb->OSTCBStkSize;
(5)将文件“d:\zyucosii\ex1_1\ports\os_cpu.h”的第42行改为
typedefunsignedlongOS_STK;
将堆栈宽度设置为32位,该步可以不修改。
(6)在图1-11中,点击菜单“Options | Project…”,在弹出的“ProjectOptions”对话框中选择“Compiler | Precompiledheaders | Usebutdonotgenerate”,如图1-14所示,点击图中的“OK”按钮保存设置。
至此,再次点击BorlandC++工作窗口菜单“Project | Buildall”,则没有警告了。笔者建议读者,尽可能地不去修改“d:\zyucosii\ex1_1\ucosii”目录下的µC/OS-Ⅱ系统文件。图1-14工程选项预编译设置在目录“D:\ZYUCOSII\”下新建子目录“EX1_2”,在目录“D:\ZYUCOSII\EX1_2\”下新建子目录“object”;将目录“D:\ZYUCOSII\EX1_1\”下的子目录“config”、“ports”、“ucosii”、“user”拷贝到目录“D:\ZYUCOSII\EX1_2\”下,如图1-15所示。1.3实例二图1-15目录D:\ZYUCOSII\EX1_2然后,删除图1-15中user目录下的ex1_1.c文件,将《嵌入式实时操作系统µC/OS-Ⅱ(第2版)》一书附带光盘中的文件目录“\SOFTWARE\uCOS-Ⅱ\EX2_x86L\BC45\SOURCE\”下的TEST.C拷贝到user目录下,并更改文件名为ex1_2.c。
启动BorlandC++,点击菜单“Project | NewProject”,设置如图1-16所示。图1-16新建工程ex1_2向导在图1-16中点击“OK”按钮,向工程ex1_2中添加目录“D:\ZYUCOSII\EX1_2\”下的文件,如图1-17所示。
在图1-17中,点击菜单“Options | Project…”,弹出如图1-18所示的菜单。图1-17工程ex1_2图1-18工程选项设置在图1-18中,“Include:”栏中输入“c:\bc45\include;
d:\zyucosii\ex1_2\config;d:\zyucosii\ex1_2\ports;
d:\zyucosii\ex1_2\ucosii;d:\zyucosii\ex1_2\user”;“Source:”栏中输入“d:\zyucosii\ex1_2\cofig;d:\zyucosii\ex1_2\ports;
d:\zyucosii\ex1_2\ucosii;d:\zyucosii\ex1_2\user”。在图1-18中,选择“Compiler | Precompiledheaders | Usebutdonotgenerate”,如图1-19所示,点击“OK”按钮保存设置,并返回到图1-17所示主窗口。图1-19工程预编译选项设置此时,可点击菜单“Options | Save…”保存工程环境设置。
至此,点击菜单“Project | Buildall”可编译链接生成可执行文件ex1_2.exe(没有编译警告),位于目录“D:\ZYUCOSII\EX1_2
\object”下,双击ex1_2.exe可得执行结果,如图1-20所示。图1-20ex1_2.exe执行结果第1.2节的实例一和本节的实例二,重点在于通过实例给读者一个µC/OS-Ⅱ的初步认识。本书均不对其程序代码做详细解释,感兴趣的读者可参考《嵌入式实时操作系统µC/OS-Ⅱ(第2版)》第一章“初识µC/OS-Ⅱ”,或学习完本书后面的章节后,再回来深入研究这些代码。将第1.1节从Micrium网站下载的压缩文件Micrium-µCOS-Ⅱ-V286.ZIP解压后,得到目录Micrium-µCOS-Ⅱ-V286\Micrium\SOFTWARE\uCOS-Ⅱ\,其下有两个子目录,分别为Doc和Source。1.4µC/OS-Ⅱ文件与函数其中,Source目录下为µC/OS-Ⅱ的源代码文件,共14个,即os_cfg_r.h、os_core.c、os_dbg_r.c、os_flag.c、os_mbox.c、os_mem.c、os_mutex.c、os_q.c、os_sem.c、os_task.c、os_time.c、os_tmr.c、ucos_ii.c和ucos_ii.h;Doc目录下为µC/OS-Ⅱ的参考资料,其中的README.TXT文本文件是所有参考资料的概要说明,这些资料值得仔细阅读。在第1.2和1.3节的两个实例中,子目录ucosii下的文件为µC/OS-Ⅱ系统文件,子目录config下的文件为配置文件。
形如实例一和实例二,基于µC/OS-Ⅱ的嵌入式系统应用程序工程结构如图1-21所示。图1-21基于µC/OS-Ⅱ的嵌入式系统应用程序工程结构如图1-21所示,在一个基于µC/OS-Ⅱ的应用程序工程文件中需要有四类文件,即用户编写的应用程序文件、配置文件、µC/OS-Ⅱ系统文件和移植文件。“用户编写的应用程序文件”通过“配置文件”才能调用“µC/OS-Ⅱ系统文件”中的函数,而“µC/OS-Ⅱ系统文件”通过“移植文件”才能运行在“硬件”上。对于一个给定的硬件平台,一般地,µC/OS-Ⅱ系统文件和移植文件都可以从专业软件供应商或硬件供应商那里得到,配置文件往往有可供参考的模板,所以,“用户”需要做的只是编写面向应用层的程序代码,即所谓的任务,这里的“用户”是指使用µC/OS-Ⅱ的程序开发者。正是基于这个原因,当嵌入式应用中使用了µC/OS-Ⅱ操作系统后,应用程序设计将更加方便容易。与实例一和实例二相似,在本书的大部分实例中,用户编写的应用程序文件存放在工程文件夹下的“user”子目录下;配置文件存放在“config”或“ports”子目录下;µC/OS-Ⅱ系统文件存放在“ucosii”子目录下;移植文件存放在“ports”子目录下;编译的目标文件和可执行文件存放在“object”或“debug”子目录下。前面提到过Source目录下有14个文件,其中12个文件位于图1-21中的“µC/OS-Ⅱ系统文件”框中,当中的ucos_ii.c(已加黑文件名)通过#include方式将其余的11个文件联成一个整体;另外两个文件os_cfg_r.h和os_dbg_r.c是位于图1-21的“配置文件”框中的文件os_cfg.h和os_dbg.c的参考模板文件,而app_cfg.h文件是用户定义任务堆栈和优先级等常量的用户系统配置文件,当然,也可以在其中定义一些自定义常量和函数声明等。1.4.1µC/OS-Ⅱ文件关联
由于µC/OS-Ⅱ是以源程序代码的形式提供给用户使用的,因此,用户工程文件中将包含全部的µC/OS-Ⅱ源程序文件,如第1.2、1.3节的两个实例所示(表面上看工程中只链接了ucos_ii.c)。尽管一些专家声称基于µC/OS-Ⅱ进行嵌入式系统开发,可以不去了解µC/OS-Ⅱ内核文件的结构和原理,只需要掌握任务的使用方法即可,但是,笔者建议至少需要了解µC/OS-Ⅱ内核文件的关联方式和内部函数调用形式(见第1.4.2节),这样有助于程序设计人员总体上把握µC/OS-Ⅱ内核文件的组织方式。在实例一和实例二的工程中只包含了文件ucos_ii.c,事实上,图1-21中µC/OS-Ⅱ的其余11个系统文件均已包含在ucos_ii.c中。ucos_ii.c文件的内容如下(添加了行号):1#defineOS_GLOBALS
2#include<ucos_ii.h>
3
4
5#defineOS_MASTER_FILE
6#include<os_core.c>
7#include<os_flag.c>
8#include<os_mbox.c>
9#include<os_mem.c>
10#include<os_mutex.c>
11#include<os_q.c>
12#include<os_sem.c>
13#include<os_task.c>
14#include<os_time.c>
15#include<os_tmr.c>上述为ucos_ii.c全部的有效代码(除去了注释),15行代码中去掉第1行和第5行(预编译用的宏定义)和第3、4行(空行)后,剩下的11行代码用#include包括了µC/OS-Ⅱ的11个文件。因此,ucos_ii.c文件只是一个文件组合的容器,工程文件中只需要包含ucos_ii.c就可以了。在上述代码中,第2行的ucos_ii.h除了定义数据结构和常量外,几乎声明了所有用户能使用的µC/OS-Ⅱ函数原型,可以称为应用程序接口(API)函数原型;第6~15行的.c文件内容为这些API函数的函数体,而这10个.c文件的文件名把这些API函数分为10类,便于管理和升级。实际上,ucos_ii.h文件中也包含了一些用于移植的API函数,这些函数的实现代码(即函数体)位于移植文件中。
这样,如果用户仅想查看函数原型,则只需要阅读ucos_ii.h文件即可,这个文件有详细的注释。如果用户还想进一步查看函数体,且使用SourceInsight软件,可通过在ucos_ii.h文件中双击函数名,定位到其函数体及其所在文件。10个.c文件实现的功能如表1-2所示。表1-2.c文件实现的功能掌握表1-2中的文件及移植µC/OS-Ⅱ所需要的文件,即掌握了整个µC/OS-Ⅱ系统。在阅读这些文件时,有大量的预编译语句,这些语句用于µC/OS-Ⅱ系统的裁剪。1.4.2µC/OS-Ⅱ函数
本节内容主要参考自“Micrium-µCOS-Ⅱ-V286\Micrium\
SOFTWARE\µCOS-Ⅱ\Doc”目录下的“QuickRefChart-Color.pdf”和“µCOS-Ⅱ-RefMan.pdf”文件。结合表1-2,把µC/OS-Ⅱ的API函数原型和功能列于表1-3至表1-12中;移植相关的函数原型列于表1-13中。表1-3内核管理函数(OS_CORE.C中)表1-4任务管理函数(OS_TASK.C中)表1-5延时管理函数(OS_TIME.C中)表1-6定时器管理函数(OS_TMR.C中)表1-7信号量管理函数(OS_SEM.C中)表1-8互斥信号量管理函数(OS_MUTEX.C中)表1-9消息邮箱管理函数(OS_MBOX.C中)表1-10消息队列管理函数(OS_Q.C中)表1-11事件标志管理函数(OS_FLAG .C中)表1-12内存管理函数(OS_MEM.C中)表1-13移植管理函数(前三个位于OS_CPU_A.ASM中,其余在OS_CPU_C.C中)由表1-3至表1-13可知,用户可以调用的函数约有96个,其中,常用的约38个(包括OS_CPU.H中定义的中断管理宏函数OS_ENTER_CRITICAL和OS_EXIT_CRITICAL)。所有这些函数的详细用法,请参考Micrium-uCOS-Ⅱ-V286\Micrium
\SOFTWARE\uCOS-Ⅱ\Doc下的uCOS-Ⅱ-RefMan.pdf文件(共计157页,文档中有些小笔误,例如第38页第2行等)。本书将在后续章节中通过实例的形式深入讲解这些函数的用法。此外,µC/OS-Ⅱ的全部代码(包括注释)共约11300行左右,是学习嵌入式操作系统内核的优秀模板。为了后续学习的方便,得到博创科技的授权允许,本节给出UP-Star实验板比较完整的原理图。需说明的是,原理图经笔者修订,读者请勿依据本节给出的原理图制作电路板。
博创给出的UP-Star原理图包括S3C2410A核心模块、存储器模块、LCD模块、网络接口模块和串口及外围接口模块等五部分。1.5UP-Star硬件原理图在此给出了与本书程序设计密切相关的核心处理器模块、存储器模块、串口通信模块和LCD显示接口等,略去了网络接口模块和USB接口模块,LCD模块仅给出了44脚接口(博创自己研发了LCD模块,同时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 关于食品安全的工作计划
- 合唱班教学计划
- 乒乓球协会新学期工作计划
- 2024超市采购人员的工作计划
- 商业计划书指南
- 疫情后复课班主任教学计划
- 2024暑期教师培训计划例文
- 2024年新学期幼儿园保教工作计划例文
- 学校对贫困村帮扶工作计划例文
- 2024乡镇卫生院工作计划格式
- 大学生对软件类前端开发的职业生涯发展展示
- 量子纠缠与贝尔不等式
- 西北大学2023年856物理化学考研真题
- 酥油灯生产技术方案
- 《工程竣工验收备案》课件
- 将思政教育融入法学课程的创新举措
- 高中班会 文明礼仪主题班会 谦谦君子 知书达理 课件
- 三校生《政治》教学大纲
- 伊东丰雄作品分析
- 《水的净化》说课稿-2023-2024学年九年级上学期化学人教版上册
- 地基基础检测题库(104道)
评论
0/150
提交评论