第六章 函数参考.docx

上传人:b****3 文档编号:4230418 上传时间:2022-11-28 格式:DOCX 页数:11 大小:18.40KB
下载 相关 举报
第六章 函数参考.docx_第1页
第1页 / 共11页
第六章 函数参考.docx_第2页
第2页 / 共11页
第六章 函数参考.docx_第3页
第3页 / 共11页
第六章 函数参考.docx_第4页
第4页 / 共11页
第六章 函数参考.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

第六章 函数参考.docx

《第六章 函数参考.docx》由会员分享,可在线阅读,更多相关《第六章 函数参考.docx(11页珍藏版)》请在冰豆网上搜索。

第六章 函数参考.docx

第六章函数参考

第六章 函数参考

以下部分描述RTX51Tiny的系统函数。

函数依字母顺序排列,分为以下部分:

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

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

返回值          程序返回值说明。

参阅(seealso) 相关程序。

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

附注:

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

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

1、irs_send_signal

概要:

#include

    charisr_send_signal(unsignedchartask_id);/*信号发往的任务*/

描述:

isr_send_signal函数给任务task_id发送一个信号。

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

附注:

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

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

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

参阅   os_clear_signal,os_send_signal,os_wait

例子

#include

voidtst_isr_send_signal(void)interrupt2

{

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

}

2、irs_set_ready

概要    #include

        charisr_set_ready{unsignedchartask_id};/*使就绪的任务*/

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

附注 

●       该函数是RTX51Tiny的一部分,包含在PK51中。

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

返回值   无

例子      #include

          voidtst_isr_set_ready(void)interrupt2

{isr_set_ready

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

}

3、os_clear_signal

概要  #include

      charos_clesr_signal(unsignedcahrtask_id);/*清除信号的任务*/

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

附注:

该函数是RTX51Tiny的一部分,包含在PK51中。

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

参阅   isr_send_signal,os_send_signal,os_wait

例子   #include

       voidtst_os_clsar_siganl(void)_task_8

       {

        …

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

        …

       }

4、os_create_task

概要   #include

       charos_create_task(unsignedchartask_id);/*要启动的任务ID*/

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

附注:

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

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

参阅   os_delete_task

例子   #include

       #include   /*用于printf*/

       voidnew_task(void)_task_2

{…}

voidtst_os_create_task(void)_task_0

{

if(os_create_task

(2))

 {

printf(“couldn’tstarttask2"n”);

           }

               …

           }

5、os_delete_task

概要    #include

        charos_delete_task(unsignedchartask_id);/*要删除的任务*/

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

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

返回值  任务成功停止并删除后返回0。

指定任务不存在或未启动时返回-1。

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

参阅    os_create_task

例子    #include

#include

        voidtst_os_delete_task(void)_task_0

        {

             …

          if(os_delete_task

(2))

          {

             printf(“couldn’tstoptask2"n”);

          }

             …

        }

6、os_reset_interval

概要 #include

     voidos_reset_interval(unsignedcharticks);/*滴答数*/

描述 用于纠正由于os_wait函数同时等待K_IVL和K_SIG事件而产生的时间问题,在这种情况下,如果一个信号事件(K_SIG)引起os_wait退出,时间间隔定时器并不调整,这样,会导致后续的os_wait调用(等待一个时间间隔)延迟的不是预期的时间周期。

允许你将时间间隔定时器复位,这样,后续对os_wait的调用就会按预期的操作进行。

附注:

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

返回值  无

例子    #include

        voidtask_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

         charos_running_task_id(void);

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

  附注:

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

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

  例子  #include

         voidtst_os_running_task(void)_task_3

         {

            unsignedchartid;

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

          }

 

8、os_send_signal

概要   #include

    charos_send_signal(chartask_id);/*信号发往的任务*/

  描述  函数向任务task_id发送一个信号。

如果指定的任务已经在等待一个信号,则该函数使任务准备执行但不启动它。

信号存储在任务的信号标志中。

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

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

  参阅  isr_send_signal,os_clear_signal,os_wait

         #include

         voidsignal_func(void)_task_2

         {

            …

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

            …

          }

         voidtst_os_send_signal(void)_task_8

         {

            …

            os_send_signal

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

            …

          }

9、 os_set_ready

概要  #include

         charos_set_ready(unsignedchartask_id);/*使就绪的任务*/

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

  附注:

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

  返回值无

  例子  #include

         voidready_func(void)_task_2

         {

             …

             os_set_ready

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

             …

         }

10、   os_switch_task

      概要   #include

               charos_switch_task(void);

      描述   该函数允许一个任务停止执行,并运行另一个任务。

如果调用os_switch_task的任务是唯一的就绪任务,它将立即恢复运行。

      附注:

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

      返回值 无

      例子    #include

              #include

              voidlong_job(void)_task_1

              {

                   floatf1,f2;

                   f1=0.0;

                   while

(1)

                     {

                        f2=log(f1);

                        f1+=0.0001;

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

                      }

                }

11、os_wait

    概要  #include

           charos_wait(

             unsignedcharevent_sel,   /*要等待的事件*/

             unsignedcharticks,      /*要等待的滴答数*/

             unsignedint  dammy);  /*无用参数*/

    描述  该函数挂起当前任务,并等待一个或几个事件,如时间间隔,超时,或从其它任务和中断发来的信号。

参数event_set指定要等待的事件,可以是下表中常数的一些组合。

             

事 件

描    述

K_IVL

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

K_SIG

等待一个信号

K_TMO

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

 

事件可以用竖线符(“|”)进行逻辑或。

例如,K_TMO1K_SIG指定任务等待一个超时或者一个信号。

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

参数是为了提供与兼容性而设置的,在中并不使用。

     附注

●       该函数是包含在PK中的RTX51Tiny的组成部分。

●       请参阅事件一节获得关于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

          #include

          voidtst_os_wait(void)_task_9

          {

             while

(1)

              {

                charevent;

                event=os_wait(K_SIG|K_TMO,50.0);

                switch(event)

                {

                   default:

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

                   break;

                   case   TMO_EVENT;/*超时*/

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

                   case   SIG_EVENT;/*收到信号*/

                   break;

                 }

               }

            }

12、os_wait1

  概要   #include

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

描述   该函数挂起当前的任务等待一个事件发生。

os_wait1是os_wait的一个子集,它不支持os_wait提供的全部事件。

参数event_sel指定要等待的事件,该函数只能是K_SIG。

附注:

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

●         参见事件一节获得K_IVL,K_SIG和K_TMO的更多信息。

返回值 当指定的事件发生,任务进入就绪态。

任务恢复运行时,os_wait1        

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

 

 

 

返 回 值

 

RDY_EVENT

任务的就绪标志位是被os_set_ready或isr_set_ready置位的

SIG_EVENT

收到一个信号

NOT_OK

Event_sel参数的值无效

 

例子 见os_wait

 

13、os_wait2

概要   #include

       charos_wait2(unsignedcharevent_sel,    /*要等待的事件*/

unsignedcharticks);        /*要等待的滴答数*/

描述函数挂起当前任务等待一个或几个事件发生,如时间间隔,超时或一个从其它任务或中断来的信号。

参数event_sel指定的事件可以是下列常数的组合:

 

Event

   描  述

K_IVL

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

K_SIG

等待一个信号

K_TMO

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

 

事件可以用“|”进行逻辑或。

如K_TMO|K_SIG表示任务等待一个超时或一个信号。

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

 

附注:

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

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

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

 

返回值

描    述

RDY_EVENT

任务的就绪标志是被os_set_ready或isr_set_ready函数置位的

SIG_EVENT

收到一个信号

TMO_EVENT

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

NOT_OK

参数event_sel的值无效

 

例子   见os_wait。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1