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