概要:简要介绍程序的功能,列出包含其声明和原型的文件,说明其定义,解释其参数
描述:提供程序的详细描述和使用方法
返回值:描述程序的返回值
参见:相关程序的名字
举例:用一个函数或程序段来显示如何正确使用该函数。
注意:
以os_开头的函数可以被任务调用,但不能被中断服程序调用
以isr_开头的函数可以被中断调用,但不能被任务调用
isr_send_signal
概述
#include
char isr_send_signal (
unsigned char task_id); /* ID of task to signal */
描述
该函给一个任务(用task_id标识)发送一个信号。如果这个任务正在等待该信号,该函数唤醒这个任务并使其进入就绪状态;否则,这个信号就存放在这个任务的信号标志里。isr_send_signal只能在中断程序里调用。
返回值
成功发送返回0,如果任务不存在返回-1
参见
os_clear_signal, os_send_signal, os_wait
例
#include
void tst_isr_send_signal (void) interrupt 2
{
isr_send_signal (8); /* signal task #8 */
}
isr_set_ready
Summary:
include
char isr_set_ready (
unsigned char task_id); /* Task to make ready */
Description:
isr_set_ready使编号为task_id的任务进入就绪状态,只能在中断程序中调用
Return Value:
See Also: os_set_ready, os_wait
Example: None.
#include
void tst_isr_set_ready (void) interrupt 2
{
isr_set_ready (1); /* Set ready flag for task 1 */
}
os_clear_signal
Summary:
#include
char os_clear_signal (
unsigned char task_id); /* signal to clear */
Description:
os_clear_signal清除编号为task_id的信号标志
Return Value:成功清除则返回0,如果任不存在则返回-1
See Also: isr_send_signal, os_send_signal
Example:
#include
void tst_os_clear_signal (void) _task_ 8
{
.
.
.
os_clear_signal (5); /* clear signal flag in task 5 */
.
.
.
}
os_create_task
Summary:
#include
char os_create_task (
unsigned char task_id); /* ID of task to start */
Description:
该函数启动编号为task_id的任务,并且这个任务被标识为就绪并按照RTX51 Tiny的规则开始执行。
Return Value:如果任务被成功启动则返加0,如果任务不存在或任务不能被启动则返回-1
See Also: os_delete_task
Example:
#include
#include /* for printf */
void new_task (void) _task_ 2
{
.
.
.
}
void tst_os_create_task (void) _task_ 0
{
.
.
.
if (os_create_task (2))
{
printf ("Couldn’t start task 2\n");
}
.
.
.
}
os_delete_task
Summary:
#include
char os_delete_task (
unsigned char task_id); /* task to delete */
Description:
停止编号为task_id的执行,这个任务在任务列表中删除
Return Value:
如果任务被删除成功则返回0,如果任务不存在或任务还没有开始执行则返回-1;
os_running_task_id
Summary:
#include
char os_running_task_id (void);
Description:该函数返回当前运行的任务编号
Return Value:当前执行的任务编号,范围为0-15
See Also: os_create_task, os_delete_task
Example:
#include
void tst_os_running_task (void) _task_ 3
{
unsigned char tid;
tid = os_running_task_id (); /* tid = 3 */
}
os_send_signal
Summary:
#include
char os_send_signal (
unsigned char task_id); /* ID of task to signal */
Description:该函数给编号为task_id的任务发一个信号。如果任务在等待该信信号,该函数使这个任务进行就绪状态。否则信号就存储在任务的信号标志里
Return Value:发送成功则返回0,如果任务不存在返回-1
See Also: isr_send_signal, os_clear_signal, os_wait
Example:
#include
void signal_func (void) _task_ 2
{
.
.
.
os_send_signal (8); /* signal task #8 */
.
.
.
}
void tst_os_send_signal (void) _task_ 8
{
.
.
.
os_send_signal (2); /* signal task #2 */
.
.
.
}
os_reset_interval
Summary:
#include
void os_reset_interval (
unsigned char ticks); /* Number of Timer Ticks */
Description:该函数用来纠正调用os_wait同时等待K_IVL和K_SIG事件时带来的定时问题。在这种情况下,如果是信号(K_SIG)导致os_wait退出,间隔定时器不进行调整,随后调用的os_wait要等待的时间间隔就不会延迟要求的时间。在这种情况下使用os_reset_interval复位时间间隔时钟。
Return Value:None.
See Also: os_wait
Example:
#include
void task_func (void) _task_ 4
{
.
.
.
switch (os_wait2 (K_SIG | K_IVL, 100))
{
case TMO_EVENT:
/* Timeout occurred - os_reset_interval not required */
break;
case SIG_EVENT:
/* Signal received - os_reset_interval required */
os_reset_interval (100);
/* do something with the signal */
break;
}
.
.
.
}
RTX51 Tiny(4)
os_set_ready
Summary:
#include
char os_set_ready (
unsigned char task_id); /* Task to make ready */
Description:
使编号为task_id的任务就入就绪状态,可以任务中调用该函数
Return Value: None.
See Also: isr_set_ready, os_wait
Example:
#include
void ready_func (void) _task_ 2
{
.
.
.
os_set_ready (1); /* Set ready flag for task 1 */
.
}
os_switch_task
Summary:
#include
char os_create_task (void);
Description:该函数使用任务放弃CPU的使用权以使其他的任务可以执行。如果只有这一个任务,那么它就马上恢复执行
Return Value: None.
See Also: os_wait
Example:
#include
#include /* for printf */
void long_job (void) _task_ 1
{
float f1, f2;
f1 = 0.0;
while (1)
{
f2 = log (f1);
f1 += 0.0001;
os_switch_task (); // run other tasks
}
}
os_wait
Summary:
#include
char os_wait (
unsigned char event_sel, /* events to wait for */
unsigned char ticks, /* timer ticks to wait */
unsigned int dummy); /* unused argument */
Description:该函数挂起当前任务等待一个或几个事件如:时间间隔,时钟溢出或者信号或中断。参数event_sel用来表示等待哪一个事件或等待哪一种组合事件发生
事件 描述
K_IVL 等待特定数目时钟节拍的间隔
K_SIG 等待一个信号
K_TMO 等待时钟节拍确认的时钟溢出
上面的任务可以用(’|’)进行或,K_TMO | K_SIG表示任务等待时钟溢出或者一个信号
参数ticks用来指明要等待的时钟节拍数,对于事件K_IVL来说是等待的时间间隔数对于事件K_TMO来说时钟溢出的次数
参数dummy用于与RTX51 Full兼容,这个参数在RTX51 Tiny中是无用的。
Return Value
当以下事件之一发生时,任务运行使能。函数os_wait返回使任务恢复运行的常量, 任务然后开始执行。可能的返回值有:
RDY_EVENT: 任务的就绪标志被os_set_ready 或isr_set_ready置位,
SIG_EVENT: 收到了一个信号
TMO_EVENT: 时钟已经耗尽或一个时间间隔计数已满
NOT_OK: 参数event_sel无效
See Also: os_wait1, os_wait2
Example:
#include
#include /* for printf */
void tst_os_wait (void) _task_ 9
{
while (1)
{
char event;
event = os_wait (K_SIG + K_TMO, 50, 0);
switch (event)
{
default: /* this never happens */
break;
case TMO_EVENT: /* time-out */
/* 50 tick time-out */
break;
case SIG_EVENT: /* signal received */
break;
}
}
}
os_wait1
Summary:
#include
char os_wait1 (
unsigned char event_sel); /* events to wait for */
Description: 该函数挂起当前任务并等待一个事件发生,该函数是函数os_wait的一个子集,并不支持os_wait的所有参数。参数event_sel只能指明是等待一个事件K_SIG的发生
Return Value:当信号事件发生时,任务的运行使能。使能任务的参数由os_wait1返回。可能的返回值有:
RDY_EVENT: 任务的就绪标志被os_set_ready 或isr_set_ready置位,
SIG_EVENT: 收到了一个信号
NOT_OK: 参数event_sel无效
See Also: os_wait, os_wait2
Example: See os_wait.
os_wait2
Summary:
#include
char os_wait2 (
unsigned char event_sel, /* events to wait for */
unsigned char ticks); /* timer ticks to wait */
Description:该函数挂起当前的任务等待一个事件的发生,事件可以是时间间隔,时钟溢出,或者是来自其他任务或中断的信号。参数event_sel指明要等待的事件的类型或几个事件的组合。可能的事件是
K_IVL 等待特定数目时钟节拍的间隔
K_SIG 等待一个信号
K_TMO 等待时钟节拍确认的时钟溢出
上面的任务可以用(’|’)进行或,K_TMO | K_SIG表示任务等待时钟溢出或者一个信号
参数ticks用来指明要等待的时钟节拍数,对于事件K_IVL来说是等待的时间间隔数对于事件K_TMO来说时钟溢出的次数
Return Value:
当以下事件之一发生时,任务运行使能。函数os_wait返回使任务恢复运行的常量, 任务然后开始执行。可能的返回值有:
RDY_EVENT: 任务的就绪标志被os_set_ready 或isr_set_ready置位,
SIG_EVENT: 收到了一个信号
TMO_EVENT: 时钟已经耗尽或一个时间间隔计数已满
NOT_OK: 参数event_sel无效
See Also: os_wait, os_wait1
Example: See os_wait.
|