任务堆栈

来源:互联网 发布:java基础项目实战 编辑:程序博客网 时间:2024/06/05 17:39
typedef unsigned int OS_STK;        //该类型长度为16位#define TASK_STK_SIZE       512     //定义堆栈长度(1024字节)/*当调用OSTaskCreate()来创建一个任务时,把数组指针传递给函数OSTaskCreate()的堆栈栈顶参数ptos,就可以把该数组与任务关联起来而成为该任务的任务堆栈*///已知创建任务函数OSTaskCreate()原型如下:INT8U   OSTaskCreate(                      void      (*task)(void *pd),//指向任务的指针                      void      *pdata,//传递给任务的参数                      OS_STK    *ptos,//任务堆栈栈顶指针                      INT8U     prio//指定任务优先级别的参数);

试创建一个任务,任务堆栈长度为128字节,优先级别为20,任务参数pdata的实参是MyTaskAgu.试写出main()函数的代码。

typedef     unsigned int OS_STK;//该类型的数据长度是16位#define     TASK_STK_SIZE   512//定义堆栈的长度为1024字节void main(){    OS_STK   TaskStk[TASK_STK_SIZE];    ......    OSTaskCreate(                    MyTask;                    &MyTaskAgu;                    &TaskStk[TASK_STK_SIZE - 1];                    20            ); }

每个任务都有一个任务堆栈,存放任务的私有数据。当CPU执行任务的时候把任务堆栈的数据复制到CPU的寄存器中。