uCOSIII启动过程分析笔记

uCOSIII启动过程分析笔记
首先执行CPU_IntDis()函数关闭总中断。此函数在cpu_a.asm文件中声明。
uCOSIII启动过程分析笔记
接下来执行OSInit(&err)函数,此函数会初始化uCOSIII的内部变量和数据结构,并会创建2~5个系统任务。至少会创建2个任务,空闲任务和时钟节拍任务,空闲任务优先级最低,时钟节拍任务设置一个相对较高的优先级,比用户系统中最重要的优先级略低一点。可选的任务有中断服务管理任务,优先级永远为最高的0,定时任务,默认优先级11,统计任务默认优先级11。
uCOSIII启动过程分析笔记
下面分析OSTaskCreat()函数
uCOSIII启动过程分析笔记
uCOSIII启动过程分析笔记
1、第一个参数p_tcb传入的为要创建的任务的任务控制块(OS_TCB结构体变量)的地址,首先判断地址不能为0,如果使能了中断管理任务,则优先级不能为0,另外优先级不能为最低(空闲任务最低),通过OS_TaskInitTCB(p_tcb)对此结构体进行初始化,大部分都初始化为0。然后将此函数传入的一些参数赋值到任务控制块的对应变量,在就绪表中插入此任务的优先级。
2、第二个参数p_name为指向任务名字char型变量的指针,这个指针变量保存到了TCB。
3、第三个参数p_task为函数指针变量,OS_TASK_PTR的类型定义为
uCOSIII启动过程分析笔记
通过调用OSTaskStkInit()函数完成对此任务的堆栈区的初始化。
uCOSIII启动过程分析笔记
uCOSIII启动过程分析笔记
4、第四个参数为任务函数的参数指针。