五个内部任务初始化:
//UCOSIII中以下优先级用户程序不能使用,将这些优先级分配给了UCOSIII的5个系统内部任务:
【【UCOSIII】【初始化五个内部任务】中断服务服务管理任务0、时钟节拍任务1、定时任务2、统计任务62、空闲任务63】理论上任务数可以无限,但因为RAM、ROM等的限制,定为最大64个任务
(OS_CFG_PRIO_MAX = 64)
main()函数中调用OSInit():
os_core.c中定义OSInit():
//优先级0:中断服务服务管理任务 OS_IntQTask()在os_int.c中定义Interrupt
//优先级1:时钟节拍任务 OS_TickTask()在os_tick.c定义
//优先级2:定时任务 OS_TmrTask()在os_tmr.c定义Timer Manager
//优先级OS_CFG_PRIO_MAX-2:统计任务 OS_StatTask()在os_stat.c定义statistic
//优先级OS_CFG_PRIO_MAX-1:空闲任务 OS_IdleTask()在os_core.c os_app_hooks.c定义
main中调用OSInit():
- 创建5个内部任务
- 创建start_task任务(其余任务在start_task任务中创建)
- 开启UCOSIII
void main()
{
/*UCOSIII启动与初始化:五步*/
OSInit(&err);
//1初始化
//五个内部任务
OS_CRITICAL_ENTER();
//2进入临界区
OSTaskCreate(.........//3、main()中只创建一个
//start_task任务,其余在start_task这个任务里面创建
-----> (OS_TASK_PTR )start_task,
.........
)
OS_CRITICAL_EXIT();
//4退出临界区
OSStart(&err);
//5开启UCOSIII
//其余任务在start_task中创建
}
os_core.c中定义OSInit():
os_core.c:
voidOSInit (OS_ERR*p_err)
{/*创建:UCOSIII的5个系统内部任务*/
/*1、创建 中断服务管理任务 优先级:0os_int.cInterrupt*/
//中断服务管理任务的任务优先级永远是最高的,0
#if OS_CFG_ISR_POST_DEFERRED_EN > 0u
OS_IntQTaskInit(p_err);
/* Initialize the Interrupt Queue Handler Task*/
if (*p_err != OS_ERR_NONE) {
return;
}
#endif/*2、创建 空闲任务优先级:最后 os_core.c os_app_hooks.c*/
//最终调用 App_OS_IdleTaskHook 函数
OS_IdleTaskInit(p_err);
/* Initialize the Idle Task*/
if (*p_err != OS_ERR_NONE) {
return;
}
//App_OS_SetAllHooks();
//配置空闲任务的指针 //#include //空闲函数
/*3、创建 时钟节拍任务 优先级:1//os_tick.c*/
OS_TickTaskInit(p_err);
/* Initialize the Tick Task*/
if (*p_err != OS_ERR_NONE) {
return;
}/*4、创建 统计任务优先级:倒数第二 //os_stat.cstatistic*/
#if OS_CFG_STAT_TASK_EN > 0u/* Initialize the Statistic Task*/
OS_StatTaskInit(p_err);
if (*p_err != OS_ERR_NONE) {
return;
}
#endif/*5、创建 定时任务(定时器管理模块) 优先级:2os_tmr.cTimer Manager module*/
#if OS_CFG_TMR_EN > 0u/* Initialize the Timer Manager module*/
OS_TmrInit(p_err);
if (*p_err != OS_ERR_NONE) {
return;
}
#endif
}
空闲函数的钩子函数:OSIdleTaskHook();
->调用(*OS_AppIdleTaskHookPtr)();
->调用 App_OS_IdleTaskHook 执行空函数
需要配置钩子函数需要的函数指针
//App_OS_SetAllHooks();
//配置空闲任务的指针 //#include //空闲函数