RTX51 Tiny用户指南(六)

函数参考

后续几页描述RTX51 Tiny系统函数。系统函数按字母顺序排列,每一个函数分为一个部分:

Summary

简短的描述程序的效果,列出包含文件包含的声明和原型,说明语法并描述所有参数。

Description

提供程序的详细描述和使用方法。

Return Value

描述程序的返回值。

See Also

相关程序的名称。

Example

给出一个函数或程序片段,演示如何正确使用该函数。

 

isr_send_signal

Summary

#include 
char isr_send_signal (
  unsigned char task_id);     /* Task to signal */

Description

isr_send_signal 函数向task_id发送一个信号。如果指定的任务已经在等待一个信号,这个函数是任务进入就绪状态,但是不会启动任务。此外,信号存储在任务的signal flag

注意

  • 这个函数是RTX51 Tiny实时操作系统的一部分,仅包含在 PK51 Professional Developer's Kit中。
  • 这个函数仅可以从中断函数中调用。

Return Value

若果成功,isr_send_signal 函数返回0,如果指定任务不存在则返回-1

See Also

os_clear_signal, os_send_signal, os_wait

Example

#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 ready */

Description

isr_set_ready 函数将task_id指定的任务置为ready状态。

注意

  • 这个函数是RTX51 Tiny实时操作系统的一部分,仅包含在 PK51 Professional Developer's Kit中。
  • 这个函数仅可以从中断函数中调用。

Return Value

Example

#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指定任务的signal flag

注意

  • 这个函数是RTX51 Tiny实时操作系统的一部分,仅包含在 PK51 Professional Developer's Kit中。

Return Value

os_clear_signal 函数在signal flag成功清除的时候返回0。如果指定任务不存在则返回-1

See Also

isr_send_signal, os_send_signal, os_wait

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

os_create_task 函数编号为task_id 的任务。Ready状态的任务在下一个有效时间开始执行。

注意

  • 这个函数是RTX51 Tiny实时操作系统的一部分,仅包含在 PK51 Professional Developer's Kit中。

Return Value

os_create_task 函数在任务成功启动的时候返回0。如果任务无法启动、任务已经在执行或没有task_id指定的任务则返回-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

os_delete_task 函数通过从任务列表删除任务,来停止task_id指定的任务。

注意

  • 这个函数是RTX51 Tiny实时操作系统的一部分,仅包含在 PK51 Professional Developer's Kit中。

Return Value

os_delete_task 函数在任务成功停止并删除的时候返回0。如果返回-1表示指定的任务不存在或未启动。

注意

  • 如果一个任务删除自身,会立即发生任务切换。

See Also

os_create_task

Example

#include 
#include             /* for printf */
void tst_os_delete_task (void) _task_ 0
{
.
.
.
if (os_delete_task (2))
  {
  printf ("Couldn't stop task 2\n");
  }
.
.
.
}

 

os_reset_interval

Summary

#include 
void os_reset_interval (
  unsigned char ticks);     /* Number of Timer Ticks */

Description

os_reset_interval 函数纠正定时器问题并重置interval timer。参数ticks 设置定时器滴答interval

os_wait 函数同时在等待K_IVLK_SIG 时,signal event (K_SIG) 回引起os_wait退出,当interval timer 未调整,随后调用的os_wait函数将无法正确延时。

os_reset_interval 纠正这个可能发生的问题,随后调用的os_wait函数会按照预期执行。

注意

  • 这个函数是RTX51 Tiny实时操作系统的一部分,仅包含在 PK51 Professional Developer's Kit中。

Return Value

See Also

os_wait

Example

#include 
void task_func (void) _task_ 4 {
  ...
  switch (os_wait (K_SIG | K_IVL, 100, 0))  {
    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; }
  ...
}

 

os_running_task_id

Summary

#include 
char os_running_task_id (void);

Description

os_running_task_id 函数确定当前正在执行任务的task_id

注意

  • 这个函数是RTX51 Tiny实时操作系统的一部分,仅包含在 PK51 Professional Developer's Kit中。

Return Value

os_running_task_id 函数返回当前执行任务的task_id。这个值大范围是0-15

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 (
  char task_id);     /* Task to signal */

Description

os_send_signal 函数向task_id的任务发生一个signal。如果指定的任务已经在等待signal,这个函数调用就绪的任务但不起动它。此外,signal存储在任务的signal flag中。

注意

  • 这个函数是RTX51 Tiny实时操作系统的一部分,仅包含在 PK51 Professional Developer's Kit中。

Return Value

如果成功,os_send_signal 函数返回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_set_ready

Summary

#include 
char os_set_ready (
  unsigned char task_id);     /* Task to make ready */

Description

os_set_ready 函数将task_id指定的任务置为ready状态。

注意

  • 这个函数是RTX51 Tiny实时操作系统的一部分,仅包含在 PK51 Professional Developer's Kit中。

Return Value

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_switch_task (void);

Description

os_switch_task 函数允许任务停止执行,同时允许其它任务执行。如果调用os_switch_task,任务是唯一就绪的任务,它将立即回复运行。

注意

  • 这个函数是RTX51 Tiny实时操作系统的一部分,仅包含在 PK51 Professional Developer's Kit中。

Return Value

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

os_wait 函数停止当前任务,等待一个或多个事件,如time interval, a time-out, 或来自其它任务或中断的signalevent_sel 参数指定等待的任务,可以是下表内容的任意组合:

事件

描述

K_IVL

等待ticks指定的interval。

K_SIG

等待signal。

K_TMO

等待ticks指定的time-out。

事件可以使用竖线('|')进行逻辑或(logically ORed)。例如, K_TMO | K_SIG,说明任务在等待time-outsignal

ticks 参数指定等待interval event (K_IVL)time-out event (K_TMO) 的定时器滴答的数量。

dummy 参数用来兼容RTX51 Full,不在RTX51 Tiny中使用。

注意

  • 这个函数是RTX51 Tiny实时操作系统的一部分,仅包含在 PK51 Professional Developer's Kit中。
  • 更多关于K_IVLK_TMOK_SIG的信息请参考“事件”。
  • K_SIGK_IVL 结合时,函数,必须使用os_reset_interval清除定时器延时问题。

Return Value

当指定的事件发生,任务会置为READY状态。当任务恢复执行,os_wait返回确定的常量,确定重启任务的事件。可能的返回值:

返回值

描述

RDY_EVENT

任务的ready flag由其它的os_set_readyisr_set_ready程序设置。

SIG_EVENT

接收到signal。

TMO_EVENT

time-out已完成或interval已过期。

NOT_OK

event_sel参数的值无效。

See Also

isr_send_signal, isr_set_ready, os_clear_signal, os_reset_interval, os_send_signal, os_set_ready, 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 */
      os_reset_interval (100);   /* must use os_reset_interval() to adjust possible delay issues */
      break;
    }
  }
}

 

os_wait1

Summary

#include 
char os_wait1 (
  unsigned char event_sel);          /* events to wait for */

Description

os_wait1函数停止当前的任务,等待事件发生。os_wait1函数是os_wait函数的子集,不能支持os_wait提供的全部事件。event_sel参数等待的事件,而且仅支持K_SIG,等待一个signal

注意

  • 这个函数是RTX51 Tiny实时操作系统的一部分,仅包含在 PK51 Professional Developer's Kit中。
  • 关于K_SIG的信息请参考“事件”。

Return Value

当指定的事件发生,任务置为READY状态。当任务恢复执行,os_wait1返回的明确的常量值确定是哪一个事件恢复任务。可能的返回值是:

返回值

描述

RDY_EVENT

任务的ready flag由其它os_set_ready isr_set_ready 程序设置。

SIG_EVENT

接收到一个signal。

NOT_OK

event_sel 参数的值无效。

Example

参考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

os_wait2 函数停止当前任务,等待一个或多个事件,如time interval, a time-out, 或来自其它任务或中断的signalevent_sel 参数指定等待的任务,可以是下表内容的任意组合:

事件

描述

K_IVL

等待ticks指定的interval。

K_SIG

等待signal。

K_TMO

等待ticks指定的time-out。

事件可以使用竖线('|')进行逻辑或(logically ORed)。例如, K_TMO | K_SIG,说明任务在等待time-outsignal

ticks 参数指定等待interval event (K_IVL)time-out event (K_TMO) 的定时器滴答的数量。

注意

  • 这个函数是RTX51 Tiny实时操作系统的一部分,仅包含在 PK51 Professional Developer's Kit中。
  • 更多关于K_IVLK_TMOK_SIG的信息请参考“事件”。
  • K_SIGK_IVL 结合时,函数,必须使用os_reset_interval清除定时器延时问题。

Return Value

当指定的事件发生,任务会置为READY状态。当任务恢复执行,os_wait2返回确定的常量,确定重启任务的事件。可能的返回值:

返回值

描述

RDY_EVENT

任务的ready flag由其它的os_set_readyisr_set_ready程序设置。

SIG_EVENT

接收到signal。

TMO_EVENT

time-out已完成或interval已过期。

NOT_OK

event_sel参数的值无效。

Example

参考os_wait

你可能感兴趣的:(嵌入式系统)