RTX51 Tiny版移植笔记

1.移植流程

  1. 建议将须要的CONF_TNY.A51文件拷贝到工程目录下,并将其加入工程中,而后再配置CONF_TNY.A51,不然可能会影响下一个用到此库的工程。
    路径:Keil4/C51/RTX_Tiny2/SourseCode
  2. 要包含头文件#include<rtx51tny.h> 。(已集成在Keil C51中)
  3. Keil设置:魔术棒中operating system中选择TRX-51 Tiny;
    在Debug中load application at startup、limit speed toReal-Time前打勾,调试时,在debug 菜单中选择OS Support调出任务查看窗。
  4. 不用创建main函数,Task 0是程序中首先要执行的函数。
  5. 中断必须有效(EA=1),任务中若是要禁止中断时必定要当心。
  6. 任务函数必须是从不退出或返回的,最多能够设置16个任务。
  7. 系统用定时器0产生周期性的中断(定时滴答Timer Tick),库函数中的超时和时间间隔都是基于定时滴答来测量的,默认10000个机器周期产生一个中断,12M对应10ms,定时滴答间隔能够在CONF_TNY.A51配置文件中修改。
  8. 它采用无优先级时间片轮询法,每一个任务使用相同大小的时间片,每一个任务执行的时间片由CONF_TNY.A51中TIMESHARING(默认为5)决定,所以为50ms左右。

2.函数原型及说明

(os开头的能够由任务调用,isr开头的只能由中断函数调用,如外部中断等)web

  • void start_up_task(void) task 0
    新建一个任务。
  • os_set_ready(任务号)或isr_set_ready(任务号)
    为任务设置就绪标志使其当即就绪。
  • os_send_signal(任务号)或isr_send_signal(任务号)
    向其余任务发送信号。若是此任务在等待信号,则会使该任务准备执行但不是立刻 执行,信号储存在任务的信号标志中。
  • os_wait()
    挂起当前任务(使之变为等待态)直到指定的时间发生(接着任务变为就绪态), 继续往下执行,等待的期间其余的任务能够运行。
  • os_switch_task(void)
    中止当前任务,当即切换到另外一个就绪的任务。
  • os_clear_signal (任务号)
    清除由任务号指定的任务信号标志。
  • os_create_task(任务号)
    启动指定任务,标记为就绪态,下一个时间点开始执行。
  • os_delete_task(任务号)
    中止指定任务,并从任务列表中删除。若是删除本身,当即被删除,任务立刻切换。
  • os_reset_interval(滴答数)
    用于纠正可能由os_wait引发的等待时间错乱问题,由于由信号事件K_SIG引发的 退出,时间间隔定时器并不调整,一般会调用此函数进行调整。
  • os_running_task_id(void)
    返回正在执行的任务ID。
  • os_wait(要等待的事件,要等待的滴答数,无用参数0)
    【参数】事件:
    K_IVL等待时间间隔(滴答数为单位);
    K_TMO等待超时时间(滴答数为单位);
    K_SIG等待一个信号;
    【做用】
    挂起当前任务,等待一个或多个事件。事件之间能够用“|”进行逻辑或(间 隔和超时事件不能用)。当有一个指定事件发生时,任务进入就绪态,并不能立刻 执行。
    【返回值】
    RDY_EVENT:表示任务的就绪标志是被函数置位的。
    SIG_EVENT:收到一个信号。
    TMO_EVENT:超时完成,或者时间间隔到。
    NOT_OK:参数的值无效。
    【其余】
    经常使用case语句判断是哪一个时间发生。
  • os_wait1(K_SIG)
    惟一参数只能是K_SIG,等待信号。
  • os_wait2(要等待的事件,要等待的滴答数) 参数和os_wait同样。