uCOSII常用函数参考手册_第1页
uCOSII常用函数参考手册_第2页
uCOSII常用函数参考手册_第3页
uCOSII常用函数参考手册_第4页
uCOSII常用函数参考手册_第5页
已阅读5页,还剩13页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Q力天ucos-n常用函娄技术文1.01.0技术文件名称技术文件编号版本拟制何呈审核张勇批准修改记录文件编号版本号拟制人/修改人拟制/修改日期更改理由主要更】(写要点1.0何呈2010-01-25Q力天ucos-n常用函娄一任务管理OSTaskCreate()建立个新任务。任务的建立可以在多任务坏境启动之前,也可I行的任务中建立。中断处理程序中不能建立任务。个任务可以为无I构。函数原型:INT8UOSTaskCreate(void(*task)(void*pd),void*pda*ptos,INT8Uprio);参数说明:task是指向任务代码首地址的指针。pdata指向一个数据结构,该结构用

2、来在建立任务时向任务传递:ptosisapointertothetaskstopofstack.IftheconfiguratiOSSTKGROWTHissetto1,thestackisassumedtogrowdownwarhighmemorytolowmemory),pstkwillthuspointtothehighest(vallocationofthestack.IfOSSTKGROWTHissetto0,pstkwillpointtmemorylocationofthestackandthestackwillgrowwithincreasilocations.prioisthet

3、askspriority.AuniquepriorityMUSTbeassignedtoeethelowerthenumber,thehigherthepriority.返回值:OSTaskCreate()的返回值为下述之一:OS_NO_ERR:函数调用成功。OS_PRIO_EXIST:具有该优先级的任务己经存在。OS_PRIONVALID:参数指定的优先级大于OS_LOWEST_P1OS_NO_MORE_TCB:系统中没有OS_TCB可以分配给任务了2OSTaskSuspendO无条件挂起一个任务。调用此函数的任务也可以传递参数OSPI又如,任务被挂起时正在等待信7暈,半任务从信号暈的等待对

4、列中;能立即运行,而必须等到被唤醒后。函数原型:INT8UOSTaskSuspend(INT8Uprio);参数说明:prio为指定要获取挂起的任务优先级,也可EOS_PRIO_SELF,挂起任务本身。此时,下一个优先级最高的就绪任返回值:OSTaskSuspcnd()的返回值为卜述Z:*OSNOERR:函数调用成功。*OS_TASK_SUSPEND_IDLE:试图挂起pC/OS-II中的空闲任务】此为非法操作。OS_PRIONVALID:参数指定的优先级人于OS_LOWEST_PE设定OS_PR1O_SELF的值。OS_TASK_SUSPEND_PRIO:要挂起的任务不存亦。3OSTaskR

5、esume()唤醉一个用OSTaskSuspend()函数挂起的任务。OSTaskResume(能“解挂”挂起任务的函数。函数原型:INT8UOSTaskRcsumc(INT8Uprio);参数说明:prio指定要唤醒任务的优先级。返回值:OSTaskResume()的返冋值为下述之:OS_NO_ERR:函数调用成功。OS_TASK_RESUME_PRO:要唤醒的任务不存在。OS_TASKNOTSUSPENDED:要唤醒的任务不在挂起状态。OS_PR1O_INVALID:参数指定的优先级大于或等于OS_LOWI二信号量力天uCOSII常用函娄力天uCOSII常用函娄Q力天ucos-n常用函娄参

6、数说明:value参数是所建立的信及量的初始值,可以取0到的任何值。返回值:OSSemCreateO函数返冋指向分配给所建立的信号虽的控制块的没有可用的控制块,OSSemCreate()函数返回空指针。OSSemPend()该函数用丁任务试图取得设备的使用权、任务需要和其他任务0任务需要等待特定事件的发生的场合。如果任务调用OSScmPcnd()|号量的值大零,OSScmPcml()函数递减该值并返回该值。如果调丿值等于零,OSSemPend()函数将任务加入该信号量的等待队列。OSSci数挂起半前任务直到其他的任务或中断设置信号暈或超出等待的预嫌在预期的时钟节扌fl内信号量被设,pC/OS-

7、II默认让最高优先级的任1星并冋到就绪状态。个被OSTaskSuspend()函数挂起的任务也可I量,但这个任务将直保持挂起状态直到通过调用OSTaskResume()I任务的运行。函数原型:voidOSSemPend(OSEVNNT和event,INTI6Utin*cit);参数说明:pcvcnt是指向信号量的指针。该指针的值在建立该4以得到。(参考OSSemCreate()函数)。timeout允许一个任务在经过了指定数R的时钟节拍后还没有得1号量时恢复就绪状态。如果该値为零表示任务将持续地等待信号暈,:时间为65535个时钟节拍。这个时间长度并不是非常严格的,可能存;节扌n的误差。err

8、是指向包含错误码的变量的指针,返回的错误码可能为下述,*OSNOERR:信号量不为零。该函数用于设置指定的信号暈。如果指定的信号量是零妙OSSemPost()函数递增该信号暈的值并返回。如果有任何任务在等待则最高优先级的任务将得到信号量并进入就绪状态。任务调度函数将.度,决定J前运行的任务是否仍然为最高优先级的就绪任务。函数原型:INT8UOSSemPost(OSEVENT*pevent);参数说明:pevent是指向信号量的指针。该指针的值在建立该彳以得到。(参考0SScmCrcatc()函数)。返回值:OSScmPost()函数的返回值为下述Z:OS_NO_ERR:信号量被成功地设置*OS

9、_SEM_OVF:信号量的值溢出OS_ERR_EVENT_TYPE:pevent不是指向信号量的指针三时间OSTimeDlyO该函数用于将一个任务延时若T个时钟节拍。如果延时时间大于立即进行任务调度。延时时间的长度可从0到65535个时钟节拍。延I示不进行延时,函数将立即返回调用者。延时的具体时间依赖丁系统,少个时钟节拍(由文件OS_CFG.H中的OS_TICKS_PER_SEC宏来设voidOSTimeDly(INT16Uticks);参数说明:ticks为要延时的时钟节拍数。返回值:无OSTimeDlyHMSMO该函数用于将个任务延时若干时间。延时的单位是小时、分、调用OSTimeDlyH

10、MSMO后,如果延时时间不为0,系统将立即进彳】函数原型:INT8UOSTimeDlyHMSM(INT8Uhours,INT8Uminu力天uCOSII常用函娄力天uCOSII常用函娄Q力天uCOSII常用函娄V需要说明的是,操作系统在处理延时操作时都是以时钟节拍为单的延时时间是时钟节拍的整数倍。如果系统时钟节拍的间隔是10ms:时为5ms的话,则不会产牛延时操作;而如果设定延时为15ms,则;是两个时钟节扌g也就是20mso返回值:OSTimeDlyIIMSM()的返回值为下述之一:*OS_NO_ERR:函数调用成功。*OSTIMEVAL1DMINUTES:参数错误,分钟数大丁59。STIM

11、ENVAL1DSECONDS:参数错误,秒数大59。OS_TIME_INVALID_MILLI:参数错误,奄秒数人于999。OS_TIME_ZERO_DLY:四个参数全为0。四内存管理1OSMemCreate()该函数建立并初始化个用于动态内存分配的区域,该内存区域,忖的、大小确定的内存块。应用可以动态中请这些内存块并在用完后:这个内存区域。该函数的返回值就是指向这个内存I乂域控制块的指彳OSMcmGct(),OSMcmPutO,OSMcmQucry()等相关调用的参数。OSMEM*OSMcmCrcatc(void*addr,INT32Unbllblksize,INT8U*err);参数说明:

12、addr建立的内存区域的起始地址。可以使用静态数纟初始化时使用malloc()函数來分配这个区域的空间。nblks内存块的数|二|。每个内存区域最少需要定义两个内存块blksize每个内存块的大小,最小应该能够容纳-个指针变量。err是指向包含错误码的变量的指针。Err可能是如下儿种情况:*OS_NO一ERR:成功建立内存区域。OSMemCreate()函数返回指向所创建的内存区域控制块的指针失败,函数返回空指针。2OSMemGet()该函数用于从内存区域分配-个内存块。用户程序必须知道所建的大小,并必须在使用完内存块后释放它。可以多次调用OSMemG它的返回值就是指向所分配内存块的指针,并作

13、为OSMemPut()函扌函数原型:void*OSMcmGct(OS_MEM*pmcm,INT8U*crr);参数说明:pmcm是指向内存区域控制块的指针,可以从OSh力天uCOSII常用函娄力天uCOSII常用函娄Q力天uCOSII常用函娄V力天uCOSII常用函娄力天uCOSII常用函娄Q力天uCOSII常用函娄V函数的返回值中得到。err是指向包含错误码的变暈的指针。Err对能是如下情况:OS_NO_ERR:成功得到一个内存块。OS_MEM_NO_FREE_BLKS:内存区域中已经没有足够的内彳返回值:OSMemGetO函数返冋指向所分配内存块的指针。如果没有可:块,OSMemGet()

14、函数返回空指针。OSMcmPut()该函数用丁释放一个内存块,内存块必须释放回它原先所在的内则会造成系统错谋。,3V函数原型:INT8UOSMemPut(OS_MEM*pmem,void*pblk);参数说明:pmem是指向内存区域控制块的指针,可以从OSN函数的返冋值中得到。pblk是指向将被释放的内存块的指针。返回值:OSMemPut()函数的返回值为下述之一:*OS_NO_ERR:成功释放内存块Q力天uCOSII常用函娄Q力天uCOSII常用函娄Q力天ucos-n常用函娄参数说明:pmem是指向内存区域控制块的指针,可以从OSN函数的返回值中得到。pdata是一个指向OS_MEM_DAT

15、A数据结构的指针,该数据结;下的域:voidOSAddr;/*指向内存区域起始地址的指针*/voidOSFreeList;/*指向空闲内存块列表起始地址的指针INT32UOSBlkSizc;/*每个内存块的大小*/INT32UOSNBlks;/*该内存区域中的内存块总数*/INT32UOSNFrcc;/*空闲的内存块数冃*/INT32UOSNUsed;/*已使用的内存块数冃*/五消息队列OSQCreate()I、卞,该函数用于建立个消息队列。任务或中断可以通过消息队列向任务发送消息。消息的含义是和具体的应用密切相关的。函数原型:OSEVENT*OSQCreate(void*start,INT8

16、Usize);参数说明:sunt是消息内存区的首地址,消息内存区是一个指令size是消息内存区的大小。返回值:;WOSQCrcatc()函数返回一个指向消息队歹U控制块的指针。如果没:制块,OSQCrcatc()函数返回空指针。OSQPend()该函数用于任务等待消息。消息通过中断或任务发送给需要的任个指针变量,在不同的应用中消息的具体含义不同。如果调用OS-数时队列中已经存在消息,那么该消息被返回给OSQPend()函数的-消息同时从队列中清除。如果调用OSQPend()函数时队列中衣参数说明:pevent是指向消息队列的指针,该指针的值在建立i以得到。(参考OSQCrcatc()函数)。t

17、imeout允许个任务以指定数Fl的时钟节扌巾等待消息。超时后1得到消息则恢复成就绪状态。如果该值设置成零则表示任务将持续地最大的等待时间为65535个时钟节拍。这个时间长度并不是非常严格I在一个时钟节拍的误差。err是指向包含错误码的变量的指针。OSQPcnd()函数返回的错-下述几种:OS_NO_ERR:消息被正确地接受。OS_TIMEOUT:消息没有在指定的时钟周期数内接收到消息cOS_ERR_PEND_ISR:从中断调用该函数。虽然规定了不允调用该函数,但gC/OS-II仍然包含了检测这种情况的功能。OS_ERREVENTTYPE:pevent不是指向消息队列的指针。返回值:OSQPe

18、nd()函数返回取得的消息并将*err置为OS_NO_ERR。-指定数冃的时钟节拍内接受到消息,OSQPendQ函数返回空指针并将为OSTIMEOUT。OSQPostFront()该函数用于向消息队列发送消息。OSQPostFnmt()函数和OSQ非常相似,不同之处在于OSQPostFnmt()函数将发送的消息插到消前端。也就是说,OSQPostFront()函数使得消息队列按照后入先出方式工作,而不是先入先出(FIFO)。消息是一个指针长度的变量,应用中消息的含义也可能不同。如果队列中已经存满消息,则此调用:码。OSQPost()函数也是如此。在调用此函数时如果有任何任务在等;消息,则最高优

19、先级的任务将得到这个消息。如果等待消息的任务优:力天uCOSII常用函娄力天uCOSII常用函娄Q力天ucos-n常用函娄返回值:OSQPostFront()函数的返回值为下述之一:OS_NO_ERR:消息成功地放到消息队列中。OS_Q_FULL:消息队列已满。OS_ERR_EVENT_TYPE:pevent不是指向消息队列的指针。OSQPostO该函数用J:向消息队列发送消息。消息是一个指针长度的变量,;用中消息的含义也可能不同。如果队列中己经存满消息,则此调用返如果有任何任务在等待队列中的消息,则最高优先级的任务将得到这果等待消息的任务优先级比发送消息的任务优先级高,那么高优先级I得到消息后立即抢山半前任务执行,也就是说,将发生一次任务切换先入先出(FIFO)方式进入队列的,即先进入队列的消息先被传递经函数原型:INT8UOSQPost(OS_EVENT*pevent,void*msg);参数说明:pevent是指向即将接受消息的消息队列的指针。该?建立队列时可以得到。(参考OSQCeate()函数)。msg是即将发送给队列的消息。不允许传递一个空指针

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论