1、配置文件
在工程中添加RTXCONF.A51、Rtxsetup.inc这两个配置文件,并在Rtxsetup.inc文件中配置RTX51系统初始化参数,如下:
?RTX_CPU_TYPE EQU 2 ;这里使用的是AT89C51,所以填写值为2
其它参数并没有修改,采用了默认设置,请参考阅读RTX 51 FULL源码学习(3)!
2、编写用户自己的C文件
这里,本人新建了一个名为main.c的C文件,在main.c中添加头文件“rtx51.h”和“regx52.h”,接下来编写任务函数,并创建任务,具体如下:
#include <rtx51.h>
#include <regx52.h>
void LED1()_task_ 1 //任务1
{
P1_0=0;
while(1)
{
P1_0 =~P1_0;
os_wait2(K_TMO,100);
}
}
void lED2()_task_ 2 //任务2
{
P1_1=1;
while(1)
{
P1_1 =~P1_1;
os_wait2(K_TMO,100);
}
}
void lED3()_task_ 3 //任务3
{
P2=0x00;
while(1)
{
P2 =~P2;
os_wait2(K_TMO,100);
}
}
void Init()_task_ 0 //任务0
{
os_set_slice(10000);//10ms,滴答时钟设置
os_create_task(1);
os_create_task(2);
os_create_task(3);
os_delete_task(0);//删除任务
}
void main()
{
os_start_system(0);//启动系统
}
这里的“task”任务号关键字,系统通过任务号来识别任务。这里的任务1、2、3其实才是有实际功能的任务,而任务0只是为了创建任务1、2、3而存在的,创建完成后就删除了自己。
os_wait2(等待事件类型,等待时间)这是os_wait()的简化版,丢掉了第三个参数。等待事件类型有三种:
K_TMO,这表示超时事件;
K_IVL,这表示周期性事件;
K_SIG,这表示信号事件。
等待时间:为一常量,表示等待多少个滴答时钟的时间。
该函数执行期间不影响任务切换!
3、总结
编写任务函数不允许有返回值,给出不重复的任务号标识,每一个实际的任务都是死时钟循环,任务运行前,配置滴答,最后在main函数中调用os_start_system(任务号)系统函数启动系统!