admin 管理员组

文章数量: 1184232

RTX51 Tiny的函数说明

os开头的只能在主函数里使用,中断只能用isr开头的

os_create_task(task_id); 

1,创建task_id号任务,未被创建的任务无法执行

2,被os_delete_task(task_id);删除的任务如果要再次运行,需要被os_create_task(task_id);重新创建

3,被创建的任务会从头运行,重复创建同一个任务无影响

os_delete_task(task_id);

1,删除task_id号任务,被删除的任务无法执行

2,对静态变量无影响,静态变量的数据仍在。不是静态局部变量会消失

os_wait(typ,ticks,dummy)

1,dummy无用,填0即可。os_wait1(typ)只能填K_SIG,os_wait2(typ,ticks)没有dummy

2,typ可以写成 K_SIG|K_TMO ,K_SIG|K_IVL,如果延时未到,被K_SIG提前结束需使用os_reset_interval(task_id);置位延时寄存器,否则下次延时将加上剩余部分

3,ticks是延时的滴答次数

4,单个任务里,多个os_wait(K_SIG,0,0);连用,需要被多次触发

4,K_TMO和K_IVL的区别在于:K_TMO等待指定滴答数后,下次执行到这个地方就可以运行,延时时间是滴答数完成+滴答数完成后执行其他语句到这个K_TMO处。

                                                     而K_IVL是每间隔一定的滴答数后,次数+1,这个次数可以被累加,如果其他语句太长或延时滴答数太少导致次数累加过多,比如加到了3,那么当再次轮询到这个地方时不是像K_TMO执行一遍就跳出任务,而是每判断过一次该语句,次数-1,接着执行下面的语句,直至判断次数为0,跳过任务

os_send_signal(task_id);isr_send_signal(task_id);

1,向task_id号任务发送信号。只能作用于K_SIG

os_clear_signal(task_id);

1,清除task_id号任务的信号。只能作用于K_SIG

2,如果os_send_signal(task_id);向task_id号任务发送信号后,又被os_clear_signal(task_id);把task_id号任务得到的信号清除了,那么相当于task_id号任务没有收到信号

os_set_ready(task_id);isr_set_ready(task_id);

1,使task_id号任务里的os_wait(),os_wait1(),os_wait2()认为延时完成或者信号到达

os_running_task_id();

1,返回当前正在执行的x号任务

os_switch_task();

1,跳出当前任务

本文标签: RTX51 Tiny的函数说明