ucos2问题:使用c语言创建一个任务堆栈,将这个堆栈赋值给一个任务控制块?求解决?
展开全部
ucos的任务堆栈就是一个内存区域,由于其不支持动态内存分配所以可以用数组的方式定义堆栈,如unsinged char task_tack[2000];就会有一个2000字节内存空间 然后将 task_tack赋给任务控制即可。
追问
求实现代码啊/
追答
#define TASKSTK 0x8000
void sys_func( void )
{
OS_TCB my_tasktTcb;
CPU_STK my_taskStk[0x8000];
OS_ERR err;
OSTaskCreate((OS_TCB *)&my_tasktTcb,
(CPU_CHAR *)((void *)"my_Task"),
(OS_TASK_PTR)my_task,
(void *)0,
(OS_PRIO )9,
(CPU_STK *)my_taskStk,
(CPU_STK_SIZE)(TASKSTK/10),
(CPU_STK_SIZE)TASKSTK,
(OS_MSG_QTY )0u,
(OS_TICK )0u,
(void *)0,
(OS_OPT )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR | ),
(OS_ERR *)(&err));
}
void my_task( void )
{
while(1);
}
这是在ucos3中创建任务,在函数sys_func中声明了my_taskStk的数组,其大小为
0x8000*sizeof(CPU_STK),随后将其赋给任务块my_tasktTcb。之后就可以用了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询