uCOSIII启动过程分析笔记

在这里插入图片描述
首先执行CPU_IntDis()函数关闭总中断。此函数在cpu_a.asm文件中声明。
在这里插入图片描述
接下来执行OSInit(&err)函数,此函数会初始化uCOSIII的内部变量和数据结构,并会创建2~5个系统任务。至少会创建2个任务,空闲任务和时钟节拍任务,空闲任务优先级最低,时钟节拍任务设置一个相对较高的优先级,比用户系统中最重要的优先级略低一点。可选的任务有中断服务管理任务,优先级永远为最高的0,定时任务,默认优先级11,统计任务默认优先级11。
在这里插入图片描述
下面分析OSTaskCreat()函数
在这里插入图片描述
在这里插入图片描述
1、第一个参数p_tcb传入的为要创建的任务的任务控制块(OS_TCB结构体变量)的地址,首先判断地址不能为0,如果使能了中断管理任务,则优先级不能为0,另外优先级不能为最低(空闲任务最低),通过OS_TaskInitTCB(p_tcb)对此结构体进行初始化,大部分都初始化为0。然后将此函数传入的一些参数赋值到任务控制块的对应变量,在就绪表中插入此任务的优先级。
2、第二个参数p_name为指向任务名字char型变量的指针,这个指针变量保存到了TCB。
3、第三个参数p_task为函数指针变量,OS_TASK_PTR的类型定义为
在这里插入图片描述
通过调用OSTaskStkInit()函数完成对此任务的堆栈区的初始化。
在这里插入图片描述
在这里插入图片描述
这里将任务的堆栈初始化为和被中断后的状态一样,上半部分模拟产生异常时自动压栈的过程,下半部分模拟R4~11是进入异常后压栈的,保存了现场。
4、第四个参数为任务函数的参数指针。
5、第五个参数为此任务的优先级。
6、第六个参数为此任务堆栈的基地址指针。
在这里插入图片描述
7、第7个参数为栈空间的剩余量限制值,一般为栈空间的10%。
8、第8个参数为栈空间的数据(CPU_STK)个数。
9、第9个参数为
10、第10个参数为
11、第11个参数为
12、第12个参数为可选项,当把这个参数设置为OS_OPT_TASK

在这里插入图片描述
在OS未运行时,创建任务的函数直接return返回。
在这里插入图片描述
至此,OSStart(&err);之前已经创建了几个任务。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值