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

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

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

文件大小:6.12MB

文件格式:PDF

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

UCOSIII 教程

7.1 空闲任务 我们首先来看一下空闲任务:OS_IdleTask(),在 os_core.c 文件中定义。任务 OS_IdleTask() 是必须创建的,不过不需要手动创建,在调用 OS_Init()初始化 UCOS 的时候就会被创建。打开 OS_Init() 函数,可以看到,在 OS_Init() 中调用了函数 OS_IdleTaskInit() ,打开函数 OS_IdleTaskInit(),函数代码如下: void OS_IdleTaskInit (OS_ERR *p_err) { #ifdef OS_SAFETY_CRITICAL if (p_err == (OS_ERR *)0) { OS_SAFETY_CRITICAL_EXCEPTION(); return; } #endif OSIdleTaskCtr = (OS_IDLE_CTR)0; (1) OSTaskCreate((OS_TCB * )&OSIdleTaskTCB, (CPU_CHAR * )((void *)"uC/OS-III Idle Task"), (OS_TASK_PTR )OS_IdleTask, (void * )0, (OS_PRIO )(OS_CFG_PRIO_MAX - 1u), (CPU_STK * )OSCfg_IdleTaskStkBasePtr, (CPU_STK_SIZE )OSCfg_IdleTaskStkLimit, (CPU_STK_SIZE )OSCfg_IdleTaskStkSize, (OS_MSG_QTY )0u, (OS_TICK )0u, (void * )0, (OS_OPT )(OS_OPT_TASK_STK_CHK | \ OS_OPT_TASK_STK_CLR | OS_OPT_TASK_NO_TLS), (OS_ERR * )p_err); } (1)、OSIdleTaskCtr 在文件 os.h 中定义,是一个 32 位无符号整型变量。这里将 OSIdleTaskCtr 清零。 从上面的代码可以看出,函数 OS_IdleTaskInit()很简单,只是调用了 OSTaskCreate()来创建 一个任务,这个任务就是空闲任务。任务优先级为 OS_CFG_PRIO_MAX – 1 , OS_CFG_PRIO_MAX 是一个宏,在文件 os_cfg.h 中定义,OS_CFG_PRIO_MAX 定义了 UCOSIII 可用的任务数。前面我们说过 UCOSIII 的任务数是无数的,但是在实际使用中考虑到硬件资源 (ROM 和 RAM)等因素,不可能真的使用无数的任务,在 UCOSIII 中可以使用宏 OS_CFG_PRIO_MAX 来定义可使用的任务数,默认情况下 OS_CFG_PRIO_MAX 为 64。空闲 任务优先级为 OS_CFG_PRIO_MAX-1,说明空闲任务的优先级为最低的。 空闲任务堆栈大小为 OSCfg_IdleTaskStkSize,OSCfg_IdleTaskStkSize 也是一个宏,在 os_cfg_app.c 文件中定义,默认为 128,则空闲任务堆栈默认为 128*4=512 字节。 空闲任务的任务函数为任务函数为 OS_IdleTask(),OS_IdleTask()函数代码如下:


网友评论