任务堆栈-倒数粗糙熵图像阈值化分割算法

时间:2024-06-29 05:02:57
【文件属性】:

文件名称:任务堆栈-倒数粗糙熵图像阈值化分割算法

文件大小:6.12MB

文件格式:PDF

更新时间:2024-06-29 05:02:57

UCOSIII 教程

5.4 任务堆栈 在 UCOSIII 中任务堆栈是一个非常重要的概念,任务堆栈用来在切换任务和调用其它函数 的时候保存现场,因此每个任务都应该有自己的堆栈,我们可以按照下面的步骤创建一个堆栈: 1、定义一个 CPU_STK 变量,在 UCOSIII 中用 CPU_STK 数据类型来定义任务堆栈, CPU_STK 在 cpu.h 中有定义,其实 CPU_STK 就是 CPU_INT32U,可以看出一个 CPU_STK 变 量为 4 字节,因此任务的实际堆栈大小应该为我们定义的 4 倍。下面代码就是我们定义了一个 任务堆栈 TASK_STK,堆栈大小为 64*4=256 字节。 CPU_STK TASK_STK[64]; //定义一个任务堆栈 我们可以使用下面的方法定义一个堆栈,这样代码比较清晰,我们所有例程都使用下面的 方法定义堆栈。 #define TASK_STK_SIZE 64 //任务堆栈大小 CPU_STK TASK_STK[LED1_STK_SIZE]; //任务堆栈 我们使用 OSTaskCreat()函数创建任务的时候就可以把创建的堆栈传递给任务,如下红色字 体所示将创建的堆栈传递给任务,将堆栈的基地址传递给OSTaskCreate()函数的参数p_stk_base, 将堆栈深度传递给参数 stk_limit,堆栈深度通常为堆栈大小的十分之一,主要用来检测堆栈是 否为空,将堆栈大小传递给参数 stk_size。 OSTaskCreate((OS_TCB* )&StartTaskTCB, //任务控制块 (CPU_CHAR* )"start task", //任务名字 (OS_TASK_PTR )start_task, //任务函数 (void* )0, //传递给任务函数的参数 (OS_PRIO )START_TASK_PRIO, //任务优先级 (CPU_STK* )&TASK_STK[0], //任务堆栈基地址 (CPU_STK_SIZE )TASK_STK_SIZE/10, //任务堆栈深度限位 (CPU_STK_SIZE )TASK_STK_SIZE, //任务堆栈大小 (OS_MSG_QTY )0, (OS_TICK )0, (void* )0, //用户补充的存储区 (OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR, (OS_ERR* )&err); //存放该函数错误时的返回值


网友评论