• RTX51实时系统(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,或者在连接器中指定。

  • 相关阅读:
    运维面试题之系统运维
    运维面试题之linux编程
    运维面试题之linux基础
    运维面试题之网络
    python 查找日志关键字
    python 数组中数字求和是否为零
    python 时间戳和时间格式互相转换
    Appium环境搭建说明(包括报错处理)
    python操作上级子文件
    去除ufeff的解决方法,python语言
  • 原文地址:https://www.cnblogs.com/wenziqi/p/1769337.html
Copyright © 2020-2023  润新知