欢迎来到天天文库
浏览记录
ID:26384874
大小:543.00 KB
页数:73页
时间:2018-11-26
《第11章参考手册.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第11章参考手册本章提供了uC/OS-Ⅱ的用户指南。每一个用户可以调用的内核函数都按字母顺序加以说明,包括:函数的功能描述函数原型函数名称及源代码函数使用到的常量函数参数函数返回值特殊说明和注意点OSInit()VoidOSInit(void);所属文件调用者开关量OS_CORE.C启动代码无OSinit()初始化uC/OS-Ⅱ,对这个函数的调用必须在调用OSStart()函数之前,而OSStart()函数真正开始运行多任务。注意/警告:必须先于OSStart()函数的调用范例:voidmain(void)
2、{……OSInit();//初始化uC/OS-II.OSStart();//启动多任务内核}voidOSInit(void){#ifOS_VERSION>=204OSInitHookBegin();//Callportspecificinitializationcode#endifOS_InitMisc();//InitializemiscellaneousvariablesOS_InitRdyList();//InitializetheReadyListOS_InitTCBList();//Initial
3、izethefreelistofOS_TCBsOS_InitEventList();//InitializethefreelistofOS_EVENTs#if(OS_VERSION>=251)&&(OS_FLAG_EN>0)&&(OS_MAX_FLAGS>0)OS_FlagInit();//Initializetheeventflagstructures#endif#if(OS_MEM_EN>0)&&(OS_MAX_MEM_PART>0)OS_MemInit();//Initializethememorym
4、anager#endif#if(OS_Q_EN>0)&&(OS_MAX_QS>0)OS_QInit();//Initializethemessagequeuestructures*/#endifOS_InitTaskIdle();//CreatetheIdleTask#ifOS_TASK_STAT_EN>0OS_InitTaskStat();//CreatetheStatisticTask#endif#ifOS_VERSION>=204OSInitHookEnd();//Callportspecificin
5、it.code#endif}OSIntEnter()VoidOSIntEnter(void);所属文件调用者开关量OS_CORE.C中断无OSIntEnter()通知uC/OS-Ⅱ一个中断处理函数正在执行,这有助于uC/OS-Ⅱ掌握中断嵌套的情况。OSIntEnter()函数通常和OSIntExit()函数联合使用。注意/警告:在任务级不能调用该函数。如果用户使用的微处理器有存储器直接加1的单条指令的话,将全程变量OSIntNesting直接加1,可以避免调用函数所带来的额外的开销!如果用户使用的微处理器没
6、有这样的指令,必须先将OSIntNesting读入寄存器,再将寄存器加1,然后再写回到变量OSIatNesting中去,就不如调用OSIntEnter()。OSIntNesting是共享资源。OSIntEnter()把上述三条指令用开中断、关中断保护起来,以保证处理OSIntNesting时的排它性。直接给OSIntNesting加1比调用OSIntEnter()快得多,可能时,直接加1更好。当心的是,在有些情况下,从OSIntEnter()返回时,会把中断开了。这种情况,在调用OSIntEnter()之前
7、要先清中断源,否则中断将连续反复打入,用户应用程序就会崩溃!//源代码voidOSIntEnter(void){if(OSRunning==TRUE){if(OSIntNesting<255u){//IncrementISRnestinglevelOSIntNesting++;}}}//51移植voidOSIntEnter(void)reentrant{OS_ENTER_CRITICAL();OSIntNesting++;OS_EXIT_CRITICAL();}//移植到51,只使用中断方式1#define
8、OS_ENTER_CRITICAL()EA=0;#defineOS_EXIT_CRITICAL()EA=1(Intel80x86的实模式,在大模式下编译,,realmode,largemodel)范例1:ISRxPROCFARPUSHA;保存中断现场PUSHESPUSHDS;MOVAX,DGROUP;读入数据段MOVDS,AX;CALLFARPTR_OSIntEnter;通知内核进入中断.POPDS;恢复中断现场
此文档下载收益归作者所有