参数说明:prio 指定要唤醒任务的优先级。
返回值:
OSTaskResume() 的返回值为下述之一:
* OS_NO_ERR:函数调用成功。
* OS_TASK_RESUME_PRIO:要唤醒的任务不存在。
* OS_TASK_NOT_SUSPENDED:要唤醒的任务不在挂起状态。
* OS_PRIO_INVALID:参数指定的优先级大于或等于 OS_LOWEST_PRIO。
信号量
1 OSSemCreate()
该函数建立并初始化一个信号量,信号量的作用如下:
* 允许一个任务和其他任务或者中断同步
* 取得设备的使用权
* 标志事件的发生
函数原型:OS_EVENT *OSSemCreate(INT16U value);
参数说明:value 参数是所建立的信号量的初始值,可以取 0 到 65535 之间的任何值。
返回值:
OSSemCreate() 函数返回指向分配给所建立的信号量的控制块的指针。如果没有可用的控制
块,OSSemCreate() 函数返回空指针。
2 OSSemPend()
该函数用于任务试图取得设备的使用权、任务需要和其他任务或中断同步、任务需
要等待特定事件的发生的场合。如果任务调用 OSSemPend() 函数时,信号量的值大于零,
OSSemPend() 函数递减该值并返回该值。如果调用时信号量值等于零,OSSemPend() 函数
将任务加入该信号量的等待队列。OSSemPend() 函数挂起当前任务直到其他的任务或中断
设置信号量或超出等待的预期时间。如果在预期的时钟节拍内信号量被设置,μC/OS-Ⅱ默
认让最高优先级的任务取得信号量并回到就绪状态。一个被 OSTaskSuspend() 函数挂起的任
务也可以接受信号量,但这个任务将一直保持挂起状态直到通过调用 OSTaskResume() 函数
恢复该任务的运行。
函数原型:void OSSemPend ( OS_EVNNT *pevent, INT16U timeout, int8u *err );
参数说明:pevent 是指向信号量的指针。该指针的值在建立该信号量时可以得到。(参考
OSSemCreate() 函数)。
timeout 允许一个任务在经过了指定数目的时钟节拍后还没有得到需要的信号量
时恢复就绪状态。如果该值为零表示任务将持续地等待信号量,最大的等待时间为 65535 个
时钟节拍。这个时间长度并不是非常严格的,可能存在一个时钟节拍的误差。
err 是指向包含错误码的变量的指针,返回的错误码可能为下述几种:
* OS_NO_ERR :信号量不为零。
* OS_TIMEOUT :信号量没有在指定数目的时钟周期内被设置。
* OS_ERR_PEND_ISR :从中断调用该函数。虽然规定了不允许从中断调用
该函数,但μC/OS-Ⅱ仍然包含了检测这种情况的功能。
* OS_ERR_EVENT_TYPE :pevent 不是指向信号量的指针。
返回值:无
3 OSSemPost()
评论2
最新资源