函数参考
后续几页描述RTX51 Tiny系统函数。系统函数按字母顺序排列,每一个函数分为一个部分:
Summary | 简短的描述程序的效果,列出包含文件包含的声明和原型,说明语法并描述所有参数。 |
Description | 提供程序的详细描述和使用方法。 |
Return Value | 描述程序的返回值。 |
See Also | 相关程序的名称。 |
Example | 给出一个函数或程序片段,演示如何正确使用该函数。 |
isr_send_signal
Summary | #include <rtx51tny.h>
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 <rtx51tny.h>
void tst_isr_send_signal (void) interrupt 2 { isr_send_signal (8); /* signal task #8 */ } |
isr_set_ready
Summary | #include <rtx51tny.h>
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 <rtx51tny.h>
void tst_isr_set_ready (void) interrupt 2 { isr_set_ready (1); /* Set ready flag for task 1 */ } |
os_clear_signal
Summary | #include <rtx51tny.h>
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 <rtx51tny.h>
void tst_os_clear_signal (void) _task_ 8 { . . . os_clear_signal (5); /* clear signal flag in task 5 */ . . . } |
os_create_task
Summary | #include <rtx51tny.h>
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 <rtx51tny.h> #include <stdio.h> /* 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 <rtx51tny.h>
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 <rtx51tny.h> #include <stdio.h> /* 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 <rtx51tny.h>
void os_reset_interval ( unsigned char ticks); /* Number of Timer Ticks */ |
Description | os_reset_interval 函数纠正定时器问题并重置interval timer。参数ticks 设置定时器滴答interval。 当os_wait 函数同时在等待K_IVL和K_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 <rtx51tny.h>
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 <rtx51tny.h>
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 <rtx51tny.h>
void tst_os_running_task (void) _task_ 3 { unsigned char tid; tid = os_running_task_id (); /* tid = 3 */ } |
os_send_signal
Summary | #include <rtx51tny.h>
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 <rtx51tny.h>
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 <rtx51tny.h>
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 <rtx51tny.h>
void ready_func (void) _task_ 2 { . . . os_set_ready (1); /* Set ready flag for task 1 */ . . . } |
os_switch_task
Summary | #include <rtx51tny.h> char os_switch_task (void); |
Description | os_switch_task 函数允许任务停止执行,同时允许其它任务执行。如果调用os_switch_task,任务是唯一就绪的任务,它将立即回复运行。 注意
- 这个函数是RTX51 Tiny实时操作系统的一部分,仅包含在 PK51 Professional Developer's Kit中。
|
Return Value | 无 |
Example | #include <rtx51tny.h> #include <stdio.h> /* 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 <rtx51tny.h>
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, 或来自其它任务或中断的signal。event_sel 参数指定等待的任务,可以是下表内容的任意组合:
事件 | 描述 | K_IVL | 等待ticks指定的interval。 | K_SIG | 等待signal。 | K_TMO | 等待ticks指定的time-out。 |
事件可以使用竖线('|')进行逻辑或(logically ORed)。例如, K_TMO | K_SIG,说明任务在等待time-out或signal。 ticks 参数指定等待interval event (K_IVL)或time-out event (K_TMO) 的定时器滴答的数量。 dummy 参数用来兼容RTX51 Full,不在RTX51 Tiny中使用。 注意
- 这个函数是RTX51 Tiny实时操作系统的一部分,仅包含在 PK51 Professional Developer's Kit中。
- 更多关于K_IVL,K_TMO和K_SIG的信息请参考“事件”。
- 当K_SIG 和 K_IVL 结合时,函数,必须使用os_reset_interval清除定时器延时问题。
|
Return Value | 当指定的事件发生,任务会置为READY状态。当任务恢复执行,os_wait返回确定的常量,确定重启任务的事件。可能的返回值:
返回值 | 描述 | RDY_EVENT | 任务的ready flag由其它的os_set_ready或 isr_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 <rtx51tny.h> #include <stdio.h> /* 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 <rtx51tny.h>
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 <rtx51tny.h>
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, 或来自其它任务或中断的signal。event_sel 参数指定等待的任务,可以是下表内容的任意组合:
事件 | 描述 | K_IVL | 等待ticks指定的interval。 | K_SIG | 等待signal。 | K_TMO | 等待ticks指定的time-out。 |
事件可以使用竖线('|')进行逻辑或(logically ORed)。例如, K_TMO | K_SIG,说明任务在等待time-out或signal。 ticks 参数指定等待interval event (K_IVL)或time-out event (K_TMO) 的定时器滴答的数量。 注意
- 这个函数是RTX51 Tiny实时操作系统的一部分,仅包含在 PK51 Professional Developer's Kit中。
- 更多关于K_IVL,K_TMO和K_SIG的信息请参考“事件”。
- 当K_SIG 和 K_IVL 结合时,函数,必须使用os_reset_interval清除定时器延时问题。
|
Return Value | 当指定的事件发生,任务会置为READY状态。当任务恢复执行,os_wait2返回确定的常量,确定重启任务的事件。可能的返回值:
返回值 | 描述 | RDY_EVENT | 任务的ready flag由其它的os_set_ready或 isr_set_ready程序设置。 | SIG_EVENT | 接收到signal。 | TMO_EVENT | time-out已完成或interval已过期。 | NOT_OK | event_sel参数的值无效。 |
|
Example | 参考os_wait。 |