和记娱乐


网站导航

联系我们

和记娱乐

联系人: 

电 话:021-64057486

公司网址:http://www.happy123456789.com

   址:成都市松江区漕河泾松江新兴产业园区研展路丰产支路55号B座803室

邮编:201165


通信知识

您的当前位置: 和记娱乐主页 > 通信知识 >

uCOS-II 常用函数参考手册

发布日期:2019-12-12 12:03 来源:和记h88 发布人:和记娱乐 点击:

  建立一个新任务。任务的建立可以在多任务启动之前,也可以在正在运行的任务中建立。中断处理程序中不能建立任务。一个任务可以为无限循环的结构。

  无条件挂起一个任务。调用此函数的任务也可以传递参数 OS_PRIO_SELF,挂起调用任务本身。当前任务挂起后,只有其他任务才能被挂起的任务。任务挂起后,系统会重新进行任务调度,运行下一个优先级最高的就绪任务。挂起任务需要调用函数OSTaskResume()。

  任务的挂起是可以叠加到其他操作上的。例如,任务被挂起时正在进行延时操作,那么任务的就需要两个条件:延时的结束以及其他任务的操作。又如,任务被挂起时正在等待信号量,当任务从信号量的等待对列中清除后也不能立即运行,而必须等到被后。

  参数说明:prio为指定要获取挂起的任务优先级,也可以指定参数 OS_PRIO_SELF,挂起任务本身。此时,下一个优先级最高的就绪任务将运行。

  OSSemCreate() 函数返回指向分配给所建立的信号量的控制块的指针。如果没有可用的控制块,OSSemCreate() 函数返回空指针。

  该函数用于任务试图取得设备的使用权、任务需要和其他任务或中断同步、任务需要等待特定事件的发生的场合。如果任务调用OSSemPend() 函数时,信号量的值大于零,OSSemPend() 函数递减该值并返回该值。如果调用时信号量值等于零,OSSemPend() 函数将任务加入该信号量的等待队列。OSSemPend() 函数挂起当前任务直到其他的任务或中断设置信号量或超出等待的预期时间。如果在预期的时钟节拍内信号量被设置,μC/OS-Ⅱ默认让最高优先级的任务取得信号量并回到就绪状态。一个被OSTaskSuspend() 函数挂起的任务也可以接受信号量,但这个任务将一直保持挂起状态直到通过调用OSTaskResume() 函数恢复该任务的运行。

  参数说明:pevent 是指向信号量的指针。该指针的值在建立该信号量时可以得到。(参考OSSemCreate() 函数)。

  timeout 允许一个任务在经过了指定数目的时钟节拍后还没有得到需要的信号量时恢复就绪状态。如果该值为零表示任务将持续地等待信号量,最大的等待时间为65535个时钟节拍。这个时间长度并不常严格的,可能存在一个时钟节拍的误差。

  * OS_ERR_PEND_ISR :从中断调用该函数。虽然了不允许从中断调用该函数,但μC/OS-Ⅱ仍然包含了检测这种情况的功能。

  该函数用于设置指定的信号量。如果指定的信号量是零或大于零,OSSemPost() 函数递增该信号量的值并返回。如果有任何任务在等待该信号量,则最高优先级的任务将得到信号量并进入就绪状态。任务调度函数将进行任务调度,决定当前运行的任务是否仍然为最高优先级的就绪任务。

  参数说明:pevent 是指向信号量的指针。该指针的值在建立该信号量时可以得到。(参考OSSemCreate() 函数)。

  该函数用于将一个任务延时若干个时钟节拍。如果延时时间大于0,系统将立即进行任务调度。延时时间的长度可从0到65535个时钟节拍。延时时间0表示不进行延时,函数将立即返回调用者。延时的具体时间依赖于系统每秒钟有多少个时钟节拍(由文件OS_CFG.H中的OS_TICKS_PER_SEC宏来设定)。

  该函数用于将一个任务延时若干时间。延时的单位是小时、分、秒、毫秒。调用 OSTimeDlyHMSM() 后,如果延时时间不为0,系统将立即进行任务调度。

  需要说明的是,操作系统在处理延时操作时都是以时钟节拍为单位的,实际的延时时间是时钟节拍的整数倍。如果系统时钟节拍的间隔是10ms,而设定延时为5ms的话,则不会产生延时操作;而如果设定延时为15ms,则实际的延时是两个时钟节拍,也就是20ms。

  该函数建立并初始化一个用于动态内存分配的区域,该内存区域包含指定数目的、大小确定的内存块。应用可以动态申请这些内存块并在用完后将其回这个内存区域。该函数的返回值就是指向这个内存区域控制块的指针,并作为OSMemGet(),OSMemPut(),OSMemQuery() 等相关调用的参数。

  参数说明:addr 建立的内存区域的起始地址。可以使用静态数组或在系统初始化时使用 malloc() 函数来分配这个区域的空间。

  OSMemCreate() 函数返回指向所创建的内存区域控制块的指针。如果创建失败,函数返回空指针。

  该函数用于从内存区域分配一个内存块。用户程序必须知道所建立的内存块的大小,并必须在使用完内存块后它。可以多次调用 OSMemGet() 函数。它的返回值就是指向所分配内存块的指针,并作为 OSMemPut() 函数的参数。

  参数说明:pmem 是指向内存区域控制块的指针,可以从 OSMemCreate() 函数的返回值中得到。

  OSMemGet() 函数返回指向所分配内存块的指针。如果没有可分配的内存块,OSMemGet() 函数返回空指针。

  参数说明:pmem 是指向内存区域控制块的指针,可以从 OSMemCreate() 函数的返回值中得到。

  * OS_MEM_FULL :内存区域已满,不能再接受更多的内存块。这种情况说明用户程序出现了错误,了多于用 OSMemGet() 函数得到的内存块。

  参数说明:pmem 是指向内存区域控制块的指针,可以从 OSMemCreate() 函数的返回值中得到。

  该函数用于建立一个消息队列。任务或中断可以通过消息队列向一个或多个任务发送消息。消息的含义是和具体的应用密切相关的。

  OSQCreate() 函数返回一个指向消息队列控制块的指针。如果没有空闲的控制块,OSQCreate() 函数返回空指针。

  该函数用于任务等待消息。消息通过中断或任务发送给需要的任务。消息是一个指针变量,在不同的应用中消息的具体含义不同。如果调用 OSQPend() 函数时队列中已经存在消息,那么该消息被返回给 OSQPend() 函数的调用者,该消息同时从队列中清除。如果调用 OSQPend() 函数时队列中没有消息,OSQPend() 函数挂起调用任务直到得到消息或超出定义的超时时间。如果同时有多个任务等待同一个消息,μC/OS-Ⅱ默认最高优先级的任务取得消息。一个由 OSTaskSuspend() 函数挂起的任务也可以接受消息,但这个任务将一直保持挂起状态直到通过调用 OSTaskResume() 函数恢复任务的运行。

  参数说明:pevent 是指向消息队列的指针,该指针的值在建立该队列时可以得到。(参考 OSQCreate() 函数)。

  timeout 允许一个任务以指定数目的时钟节拍等待消息。超时后如果还没有得到消息则恢复成就绪状态。如果该值设置成零则表示任务将持续地等待消息,最大的等待时间为65535个时钟节拍。这个时间长度并不常严格的,可能存在一个时钟节拍的误差。

  * OS_ERR_PEND_ISR :从中断调用该函数。虽然了不允许从中断中调用该函数,但μC/OS-Ⅱ仍然包含了检测这种情况的功能。

  该函数用于向消息队列发送消息。OSQPostFront() 函数和 OSQPost() 函数非常相似,不同之处在于 OSQPostFront() 函数将发送的消息插到消息队列的最前端。也就是说,OSQPostFront() 函数使得消息队列按照后入先出(LIFO)的方式工作,而不是先入先出(FIFO)。消息是一个指针长度的变量,在不同的应用中消息的含义也可能不同。如果队列中已经存满消息,则此调用将返回错误码。OSQPost() 函数也是如此。在调用此函数时如果有任何任务在等待队列中的消息,则最高优先级的任务将得到这个消息。如果等待消息的任务优先级比发送消息的任务优先级高,那么高优先级的任务在得到消息后将立即抢占当前任务执行,也就是说,将发生一次任务切换。

  参数说明:pevent 是指向即将接收消息的消息队列的指针。该指针的值在建立队列时可以得到。(参考 OSQCreate() 函数)。

  该函数用于向消息队列发送消息。消息是一个指针长度的变量,在不同的应用中消息的含义也可能不同。如果队列中已经存满消息,则此调用返回错误码。如果有任何任务在等待队列中的消息,则最高优先级的任务将得到这个消息。如果等待消息的任务优先级比发送消息的任务优先级高,那么高优先级的任务将在得到消息后立即抢占当前任务执行,也就是说,将发生一次任务切换。消息是以先入先出(FIFO)方式进入队列的,即先进入队列的消息先被传递给任务。

  参数说明:pevent 是指向即将接受消息的消息队列的指针。该指针的值在建立队列时可以得到。(参考 OSQCreate() 函数)。

  参数说明:pevent 是指向消息队列的指针。该指针的值在建立队列时可以得到。(参考 OSQCreate() 函数)。

  该函数用来取得消息队列的信息。用户程序必须建立一个 OS_Q_DATA 的数据结构,该结构用来保存从消息队列的控制块得到的数据。通过调用该函数可以知道是否有任务在等待消息、有多少个任务在等待消息、队列中有多少消息以及消息队列可以容纳的消息数。OSQQuery() 函数还可以得到即将被传递给任务的消息。

  参数说明:pevent 是指向消息队列的指针。该指针的值在建立消息队列时可以得到。(参考 OSQCreate() 函数)。

      和记娱乐,和记h88,h88平台官网