ucosIII 的五个内部任务和钩子函数
1、空闲任务(必须创建)
设置为最低优先级,当其他任务都处于等待态时运行。每进入一次任务OSdleTaskCtr就加一,用来统计CPU的繁忙程度。
2、时钟节拍任务(必须创建)
任务优先级较高,默认为1。用于跟踪正在延时的任务,以及在指定时间内等待某个内核对象的任务。通过post让等待任务就绪,用于任务同步。
3、统计任务(默认不创建)
任务优先级倒数第二,用来统计CPU的使用率以及各任务的堆栈使用情况。
4、定时任务(任务可选)
任务优先级默认为2。在OSInit()中调用OS_TmrInit()来创建定时任务。
5、中断服务管理任务(可选)
任务优先级最高,为0。任务负责“延迟”在中断中调用系统post服务函数的行为。避免了在中断中做“把任务从等待列表中删除”,“把任务放入就绪表”等耗时行为。(注:
ucos通过关闭中断和任务调度器上锁两种方式管理临界区代码)
钩子函数
功能:当程序执行某个动作(如:初始化、进入空闲任务等等)时,会执行相应的钩子函数,通过调用函数指针来实现。
作用:方便程序扩展。
ucosIII 钩子函数:OSInitHook()、OSStatTaskHook()、OSTaskCreateHook()、OSTaskDelHook()等8个。 |