原创 RTX51 Tiny 2.02 中文手册 part6

2009-7-24 16:58 3795 9 11 分类: MCU/ 嵌入式

第六章  函数参考<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


以下部分描述RTX51 Tiny的系统函数。函数依字母顺序排列,分为以下部分:


概要Summary 简述程序作用,列出包含的文件,包括它的声明和原型,语法举例,和参数描述。


描述Description程序的详细描述,如何使用。


返回值           程序返回值说明。


参阅see also  相关程序。


例子             如何正确使用该函数的程序例子中断。


附注:


l        os_开头的函数可以由任务调用,但不能由中断服务程序调用。


l        isr_开头的函数可以由中断服务程序调用,但不能由任务调用。


1、irs_send_signal


概要 #include<rtx51tny.h>


     char isr_send_signal(unsigned char task_id); /*信号发往的任务*/


描述: isr_send_signal函数给任务task_id发送一个信号。如果指定的任务正在等待一个信号,则该函数使该任务就绪,但不启动它,信号存储在任务的信号标志中。


附注:


l        该函数是RTX51 Tiny实时操作系统的一部分,仅包含于PK51中。


l        该函数仅被中断函数调用。


返回值  成功调用后返回0,如果指定任务不存在,则返回-1。


参阅    os_clear_signal,os_send_signal,os_wait


例子


#include<rtx51tny.h>


void tst_isr_send_signal(void) interrupt 2


{


   isr_send_signal(8); /*给任务8发信号*/


}


2、irs_set_ready


概要     #include< rtx51tny.h>


         char isr_set_ready{ unsigned char task_id};/*使就绪的任务*/


描述  将由task_id指定的任务置为就绪态。


附注 


l        该函数是RTX51 Tiny的一部分,包含在PK51中。


l        该函数仅用于中断函数。


返回值   


例子       #include< rtx51tny.h>


           void tst_isr_set_ready(void)interrupt 2


{ isr_set_ready(1);/*置位任务1的就绪标志*/


}


3、os_clear_signal


概要   #include< rtx51tny.h>


       char os_clesr_signal(unsigned cahr task_id);/*清除信号的任务*/


描述    清除由task_id指定的任务信号标志。


附注: 该函数是RTX51 Tiny的一部分,包含在PK51中。


返回值  信号成功清除后返回0,指定的任务不存在时返回-1


参阅    isr_send_signal,os_send_signal,os_wait


例子    #include< rtx51tny.h>


        void tst_os_clsar_siganl(void)_task_8


        {


         


         os_clear_signal(5);            /*清除任务5的信号标志*/


         


        }


4、os_create_task


概要    #include<rtx51tny.h>


        char os_create_task(unsigned char task_id);/*要启动的任务ID*/


描述    启动任务task_id,该任务被标记为就绪,并在下一个时间点开始执行。


附注:  该函数是包含在PK51中的RTX51 Tiny的组成部分。


返回值  任务成功启动后返回0,如果任务不能启动或任务已在运行,或没有以task_id定义的任务,返回-1。


参阅    os_delete_task


例子    #include< rtx51tny.h>


        #include<stdio.h>    /*用于printf*/


        void new_task(void)_task_2


{…}


void tst_os_create_task(void)_task_0


{



if(os_create_task(2))


  {


printf(“couldn’t start task2\n”);


            }


                


            }


5、os_delete_task


概要     #include<rtx51tny.h>


         char os_delete_task(unsigned char task_id);/*要删除的任务*/


描述     函数将以task_id指定的任务停止,并从任务列表中将其删除。


附注     该函数是包含在PK51中的RTX51 Tiny的组成部分。


返回值   任务成功停止并删除后返回0。指定任务不存在或未启动时返回-1


附注     如果任务删除自己,将立即发生任务切换。


参阅     os_create_task


例子     #include<rtx51tny.h>


#include<stdio.h>


         void tst_os_delete_task(void)_task_0


         {


              


           if(os_delete_task(2))


           {


              printf(“couldn’t stop task2\n”);


           }


              


         }


6、os_reset_interval


概要  #include<rtx51tny.h>


      void os_reset_interval(unsigned char ticks); /*滴答数*/


描述  用于纠正由于os_wait函数同时等待K_IVLK_SIG事件而产生的时间问题,在这种情况下,如果一个信号事件(K_SIG)引起os_wait退出,时间间隔定时器并不调整,这样,会导致后续的os_wait调用(等待一个时间间隔)延迟的不是预期的时间周期。允许你将时间间隔定时器复位,这样,后续对os_wait的调用就会按预期的操作进行。


附注: 该函数是包含在PK51中的RTX51 Tiny的组成部分。


返回值  


例子     #include<rtx51tny.h>


         void task_func(void)_task_4


         {


          


           switch(os_wait2(KSIG|K_IVL,100))


              {


                  case   TMO_EVENT:


      /*发生了超时,不需要Os_reset_interval*/


break;


                  case    SIG_EVCENT:


                  /*收到信号,需要Os_reset_interval*/


                       os_reset_interval(100);


                  /*依信号执行的其它操作*/


                       break;


                }


           


           }


7、os_running_task_id


   概要   #include<rtx51tny.h>


          char os_running_task_id(void);


   描述   函数确认当前正在执行的任务的任务ID


   附注: 该函数是包含在PK51中的RTX51 Tiny的组成部分。


   返回值 返回当前正在执行的任务的任务号,该值为0~15之间的一个数。


   例子   #include<rtx51tny.h>


          void tst_os_running_task(void)_task_3


          {


             unsigned char tid;


             tid=os_running_task_id( ); /*tid=3*/


           }


 


8、os_send_signal


概要    #include<rtx51tny.h>


     char os_send_signal(char task_id);/*信号发往的任务*/


   描述   函数向任务task_id发送一个信号。如果指定的任务已经在等待一个信号,则该函数使任务准备执行但不启动它。信号存储在任务的信号标志中。


   附注   该函数是包含在PK51中的RTX51 Tiny的组成部分。


   返回值 成功调用后返回0,指定任务不存在时返回-1


   参阅   isr_send_signal,os_clear_signal,os_wait


          #include<rtx51tny.h>


          void signal_func(void)_task_2


          {


            


             os_send_signal(8);     /*向8号任务发信号*/


             


           }


          void tst_os_send_signal(void)_task_8


          {


            


             os_send_signal(2);    /*向2号任务发信号*/


             


           }


9、  os_set_ready


概要   #include<rtx51tny.h>


          char os_set_ready(unsigned char task_id);/*使就绪的任务*/


   描述   将以task_id指定的任务置为就绪状态。


   附注: 该函数是包含在PK51中的RTX51 Tiny的组成部分。


   返回值 无


   例子   #include<rtx51tny.h>


          void ready_func(void)_task_2


          {


             


              os_set_ready(1);     /*置位任务1的就绪标志*/


              


          }


10、    os_switch_task


       概要    #include<rtx51tny.h>


                char os_switch_task(void);


       描述    该函数允许一个任务停止执行,并运行另一个任务。如果调用os_switch_task的任务是唯一的就绪任务,它将立即恢复运行。


       附注:  该函数是包含在PK51中的RTX51 Tiny的组成部分。


       返回值 


       例子     #include<rtx51tny.h>


               #include<stdio>


               void long_job(void)_task_1


               {


                    float f1,f2;


                    f1=0.0;


                    while(1)


                      {


                         f2=log(f1);


                         f1+=0.0001;


                         os_switch_task();   /*运行其它任务*/


                       }


                 }


11os_wait


     概要   #include<rtx51tny.h>


            char os_wait(


              unsigned char event_sel,    /*要等待的事件*/


              unsigned char ticks,       /*要等待的滴答数*/


              unsigned int   dammy);   /*无用参数*/


     描述   该函数挂起当前任务,并等待一个或几个事件,如时间间隔,超时,或从其它任务和中断发来的信号。参数event_set指定要等待的事件,可以是下表中常数的一些组合。


             




 


    


K_IVL


等待滴答值为单位的时间间隔


K_SIG


等待一个信号


K_TMO


等待一个以滴答值为单位的超时


 


事件可以用竖线符“|”进行逻辑或。例如,K_TMO1K_SIG指定任务等待一个超时或者一个信号。


ticks参数指定要等待的时间间隔事件(K_IVL)或超时事件(K_TMO)的定时器滴答数。参数是为了提供与兼容性而设置的,在中并不使用。


      附注


l        该函数是包含在PK中的RTX51 Tiny的组成部分。


l        请参阅事件一节获得关于K_IVL,K_SIG,K_TMO的更多信息。


      返回值 当有一个指定的事件发生时,任务进入就绪态。任务恢复执行时,下表列出的由返回的常数指出使任务重新启动的事件。可能的返回值有:


             




返 回 值


   


RDY_EVENT


表示任务的就绪标志是被或函数置位的。


SIG_EVENT


收到一个信号


TMO_EVENT


超时完成,或时间间隔到


NOT_OK


参数的值无效


 


参阅 


isr_send_signal,isr_set_ready,os_clear_signal,os_reset_interval,


os_send_signal,os_set_ready,os_wait1,os_wait2


例子  #include<rtx51tny.h>


           #include<stdio.h>


           void tst_os_wait(void)_task_9


           {


              while(1)


               {


                 char event;


                 event=os_wait(K_SIG|K_TMO,50.0);


                 switch(event)


                 {


                    default:              /*从不发生,该情况*/


                    break;


                    case    TMO_EVENT;/*超时*/


                    break;               /*50次滴答超时*/


                    case    SIG_EVENT; /*收到信号*/


                    break;


                  }


                }


             }


12os_wait1


  概要    #include<rtx51tny.h>


  char os_wait1(unsigned  char  event_sel);/*要等待的事件*/


描述    该函数挂起当前的任务等待一个事件发生。os_wait1os_wait的一个子集,它不支持os_wait提供的全部事件。参数event_sel指定要等待的事件,该函数只能是K_SIG


附注:


l          该函数是包含于PK51中的RTX51Tiny的组成部分。


l          参见事件一节获得K_IVLK_SIGK_TMO的更多信息。


返回值  当指定的事件发生,任务进入就绪态。任务恢复运行时,os_wait1        


    返回的值表明启动任务的事件,返回值见下面的常数列表:


 


 


 




返 回 值


 


RDY_EVENT


任务的就绪标志位是被os_set_readyisr_set_ready置位的


SIG_EVENT


收到一个信号


NOT_OK


Event_sel参数的值无效


 


例子  os_wait


 


13、os_wait2


概要    #include<rtx51tny.h>


        char os_wait2(unsigned char event_sel,     /*要等待的事件*/


unsigned char ticks);         /*要等待的滴答数*/


描述 函数挂起当前任务等待一个或几个事件发生,如时间间隔,超时或一个从其它任务或中断来的信号。参数event_sel指定的事件可以是下列常数的组合:


 




Event


   描  述


K_IVL


等待以滴答数为单位的时间间隔


K_SIG


等待一个信号


K_TMO


等待以滴答数为单位的超时


 


事件可以用“|”进行逻辑或。如K_TMO|K_SIG表示任务等待一个超时或一个信号。


参数ticks 指定等待时间间隔(K_IVL)或超时(K_TMO)事件时的滴答数。


 


附注:


l          该函数是包含于PK51中的RTX51Tiny的组成部分。


l          参见事件一节获得更多关于K_IVL, K_TMO,K_SIG的信息。


返回值  当一个或几个事件产生时,任务进入就绪态.任务恢复执行时, os_wait2的返回值见下面的常数列表:


 





    


RDY_EVENT


任务的就绪标志是被os_set_readyisr_set_ready函数置位的


SIG_EVENT


收到一个信号


TMO_EVENT


返回时完成,或时间间隔到达


NOT_OK


参数event_sel的值无效


 


例子    os_wait


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

文章评论2条评论)

登录后参与讨论

用户271037 2010-4-15 23:40

多谢,学习了

用户499533 2008-8-20 14:17

这些文档不是有中文版本的?
相关推荐阅读
roumao 2013-06-26 20:16
四层电路板布线方法
四层电路板布线方法         一般而言,四层电路板可分为顶层、底层和两个中间层。顶层和底层走信号线, 中间层首先通过命令DESIGN/LAYER STACK MANAGER用ADD PLANE ...
roumao 2013-03-08 20:12
关于上拉电阻
光耦输出端的上拉电阻会严重影响上升沿的上升速度,使用时务必注意。简单串口隔离电路中使用了TLP521-4光耦,输出端使用10k上拉时,上升沿上升速度至少70多微秒,要比手册中描述的速度,25微秒,...
roumao 2012-12-12 15:52
MCGS帮助文件错误处
MCGS帮助文件错误处 版本:MCGS嵌入版7.2(09.0001) 1、 存盘数据浏览构件 帮助文件中的描述: GetCellValue(RowNo,Col...
roumao 2011-05-04 14:42
PCB板的大小
        在protel99se SP6中设计电路板时,我们习惯于在keepout层上用线条画出板子的形状及大小,对于尺寸要求严格的设计而言,此时要十分注意了,实际做出来的板子将包含该线条的宽度...
roumao 2011-03-23 17:09
处理器伴侣FM33256源码之4
attachment download本篇日志包含有“处理器伴侣FM33256源码之1~3 ”所涉及代码的压缩包,以供大家下载,欢迎大家共同探讨。我的邮箱:roumao@126.com...
roumao 2011-03-23 17:08
处理器伴侣FM33256源码之3
/************************** MyType.h ********************************/ #ifndef _MY_TYPE_#define _MY_...
我要评论
2
9
关闭 站长推荐上一条 /2 下一条