1开启任务调度器:在此函数包括创建空闲任务(优先级最低),创建定时器服务任务(软件定时器,该步骤是条件编译可以用宏关闭)。然后会先关闭中断,在SVC中断服务函数中再重新打开。配置时间统计功能的定时器(条件编译,一般调试时才会用)。还包括其他硬件的初始化如滴答定时器、FPU单元、PendSV中断等等(这些有相关函数去调用实现或是寄存器直接配置)。
2空闲任务的意义:保证系统任何时刻都有一个任务进行,其次是处理一些琐事如有任务删除时在这空闲任务里执行其内存释放又如运行用户设置的空闲任务钩子函数又或者是在低功耗模式下执行其他处理。(空闲任务不需要手动创建)
3任务创建:首先申请任务堆栈内存再申请任务控制块内存,然后进行任务控制块的堆栈那部分内容初始化(注意不是所有信息都初始化),若控制块内存不足则创建失败并且释放之前申请的所有内存,否则标记该任务是动态创建的然后继续初始化任务的大部分信息并添加到就绪列表(静态和动态的删除任务等处理不一样因此要标记区分)。、
4任务初始化:任务创建过程剩下任务堆栈和任务控制块所有未初始化信息在此初始化,此外(注意,标记任务堆栈栈顶,任务数组名必须以’\0’结尾,该任务列表项的value值是关系任务的优先级,因为列表插入列表项顺序是升序的,即数字越大越后面,执行优先级越低)。
5任务就绪表:不同状态都由对应的一个列表,就