实时操作系统学习笔记-RTX 51 TiNi的初步知识

1,RTX51 Tiny Introduction

RTX51 Tiny是一个实时操作系统(RTOS),它可以用来构建同时执行多个任务(函数)的应用程序(宏观上,它们是同时执行的,但微观上,它们是独立运行的)嵌入式应用系统通常有这样的要求RTOS可以提供调度、维护、同步等功能

实时操作系统可以灵活地调度系统资源,如CPU和内存,并提供任务间的通信Rtx51tini是一款功能强大且易于使用的RTOS。它用于8051系列微控制器。RTOS支持多达16项任务。基于RTX51 Tiny构建的应用程序没有main()函数,从任务0开始执行。

2,单任务、多任务和基于rtx51tini的程序的比较

单任务程序:

嵌入式程序和标准c程序都是从主函数执行的。在嵌入式应用程序中,main通常是一个无限循环,可以被视为连续执行的单个任务,例如:

void main(void)

{

while(1){

do _ some();//do _ some task

}

}

多任务程序:

许多C程序通过循环调用服务函数(或任务)来实现伪多任务调度例如:

void main(void)

{

while(1){

key _ scan();//键盘扫描

do _ key();//处理关键事件

CTR _ ADJ();//调整控制器

}

}

在本例中,每个函数执行一个单独的操作或任务,函数(或任务)按顺序执行当有越来越多的任务时,调度问题就自然产生了例如,如果ctr_adj()函数需要很长时间才能执行,主循环可能需要很长时间才能返回执行key_scan()函数,从而导致丢失一些键事件当然,可以在主循环中更频繁地调用key_scan()函数来纠正这个问题,但是最终这个方法还是会失败。

rtx51tini程序:

当使用rtx51tini时,为每个任务建立一个独立的任务函数,例如:

void job 0(void)_ task _ 0

{

OS _ create _ task(1);//创建任务1

操作系统_创建_任务(2);//创建任务2

操作系统_创建_任务(3);//创建任务3

操作系统_删除_任务(0);//删除任务0

}

作废作业1(作废)_ Task _ 1//键盘扫描任务

{

同时(1){

键扫描();

}

}

void job 2(void)_ task _ 2//处理关键事件任务

{

while(1){

do _ key();

}

}

void job 3(void)_ task _ 3//调整控制器任务

{

while(1){

CTR _ adj();

}

}

在本例中,每个函数都被定义为一个rtx51tini任务rtx51tini程序不需要主要功能。相反,rtx51tini从任务0开始。在典型的应用程序中,任务0只是建立所有其他任务研究rtx51tini的

书籍相对较少。事实上,最好的学习材料是Keil uVision中包含的用户手册,可以打开如下图所示:

51简借

2

51简借

大家都在看

相关专题