RTX-51实时系统(1)

/***************************************************
 *作     者:温子祺
 *联系方式:wenziqi@hotmail.com
 *说    明 :RTX-51实时系统(1)   
 ***************************************************

 

 1.       定时器滴答中断

 

RTX-51 Tiny实时系统用标准8051的定时器0(模式1)生产一个周期性的中断。该中断就是RTX-51

 

Tiny的定时滴答(Timer Tick)。库函数中的超时和事件间隔就是基于该定时滴答来测量的。

 

     默认情况下,RTX-5110000个机器周期产生一个滴答中断,因此,对于运行在12MHz的标准8051来说,滴答的周期是10ms,频率是100Hz12MHz/12/1000)。该值可以在CONF_TNY.A51配置文件中修改。

 

2.       任务

 

RTX51-Tiny实时系统本质上就是一个任务切换器,建立一个RTX-51 Tiny程序,就是建立一个

 

或多个任务函数的应用程序。

 

任务创建可以使用关键字 _task_”来创建任务。每个任务都有正确的状态,如运行、就绪、等待、删除、超时等状态,要注意的是某个时刻只有一个任务处于运行态。

 

RTX-51 Tiny支持最多16个任务,而每一个任务的格式一定要是如下格式:

 

void function(void) _task_ TASKID

 

{

 

      while(1)

 

      {

 

           //其他代码

 

}

 

 

 

}

 

每一个任务必须加上“_task_”关键字,TASKID的有效取值范围是0~15。所有的任务必须是循环重复的,任务不能够返回。

 

 

 

3.       消息机制

 

RTX-51 Tiny实时系统由于是RTX-51 Full的一个子集,不具有邮箱系统、信号量等操作,只具

 

备消息机制方式,主要给任务发消息。通过内核提供的服务,任务或中断服务子程序可以将一条消息放入消息队列。同样,一个或多个任务可以通过内核服务从消息队列中得到消息。

 

 

 

4.       os_wait函数

 

   os_wait函数可以使一个任务等待一个或多个事件。通过对os_wait函数输入不同的参数,可以让os_wait函数等待指定的时间超时、等待消息、等待制定的时间,参数分别为K_TMOK_SIGK_IVLos_wait可以返回时,返回值表明了发生什么事件,RDY_EVENT表示任务的就绪标志被置位,SIG_EVENT表示收到一个信号,TMO_EVENT表示超时完成或时间间隔到达。

 

 

 

5.       编写规则

 

l          确保加载了RTX51TNY.H头文件。

 

l          不要建立main函数,RTX-51 Tiny有自己的main函数。

 

l          程序里必须至少包含一个任务函数。

 

l          中断必须有效(EA=1),在临界区如果要禁止中断时一定要小心。

 

l          程序必须至少调用一个RTX-51 Tiny库函数(如os_wait),否则不能够连接到RTX51-Tiny库函数。

 

l          Task 0是程序中首先要执行的函数,必须在任务0中调用os_create_task函数以运行其余任务。

 

l          任务函数必须是从不退出或返回的。任务必须用一个while(1)或类似的结构进行循环。用os_delete_task函数可以停止某一个运行的任务。

 

必须在Keil中指定RTX51-Tiny,或者在连接器中指定。

 

posted @ 2010-07-01 17:15  温子祺  阅读(2769)  评论(0编辑  收藏  举报