一、TRTOS的任务创建与注销方式

来源:互联网 发布:免费数据采集软件 编辑:程序博客网 时间:2024/05/16 08:40

 

一、TRTOS的任务创建与注销方式

void Tos_TaskCreate(uint8 Id,Tos_Task vfFuncPointer,uint32 StackSize)

 

为了开发方面,减少入口参数的复杂性,TRTOS2.0直接把创建任务的入口参数精简到三个,

id既代表任务的优先级又是任务的唯一身份标志,可用来通过id发送接收消息,并且可以直接通过id直接管理任务,对任务进行删除暂停恢复和重建。

Tos_Task类型的任务入口地址vfFuncPointer,,的原型定义是typedef  void (*Tos_Task)(void *) 无参无反回,StackSize为任务堆栈大小,系统会根据任务的新建顺序在全局变量(uint8 TaskStack[Tos_TaskTotal*Tos_TaskStackDefSize];)里依次往后开辟一块区域作为该任务的任务堆栈,在任务被删除后,该堆栈区域仍可以新建其他任务使用,但堆栈的大小不能再次更改,依然和第一次新建任务分配的堆栈大小相同。与Tos_TaskCreate相对应的是任务删除函数void Tos_TaskDelete(uint8_t Index) ,只有在任务删除的情况下才能在该任务使用的堆栈区域新建其他任务,且当执行Tos_TaskReCreate(uint8 Id,Tos_Task vfFuncPointer)任务重建函数的时候没有已经删除的其他任务时,任务将分配到默认大小的堆栈地址。

TRTOS任务的创建说明 如下

任务0

void TosTask0(void *Tags)

{

while(1)

{

LED_ON;

Tos_TaskDelay(100);

LED_OFF;

Tos_TaskDelay(100);

}

}

LED 灯以200个节拍闪烁一次

任务1

void TosTask1(void *Tags)

{

while(1)

{

   SPK_ON;

    Tos_TaskDelay(2);

    SPK_OFF;

DeBug("TosTask0",Infor_Infor);

}

}

蜂鸣器以4个节拍响一次并且通过调试打印字符“TosTask0

 

 

int main(void)

{

 .......................

Tos_TaskCreate(0,TosTask0,3000);

   Tos_TaskCreate(1,TosTask1,3000);

......................

}

0 0