创建了任务一定要开启调度器
堆栈大小根据它的历史剩余大小定义。
删除句柄vTaskDelete (NULL):删除自己
进入临界区和退出临界区操作可以保障优先级高的先执行,所有任务创建完,然后退出临界区之后才执行任务,所以可以最高的先执行。
详细补充:
任务控制块就是 用来保存任务的信息
这里是判断栈是否是向上生长的,很明显不是,栈是高到低,向下生长。堆相反
任务堆栈首地址,动态创建是由系统来申请的我们只用提供所需要申请的任务堆栈大小,堆栈大小以字为单位,字节要x4,然后不等于null就申请成功,等于null,我们就把任务控制块设置成null。
申请成功然后我们开始申请任务控制快的大小内存,把地址赋值给pxStack。否则则申请失败,我们就把任务堆栈释放
1.申请堆栈内存,2申请任务控制块内存(返回首地址),3把前面申请的堆栈地址,赋值给控制块的堆栈成员,
当我们申请任务控制块不为null,然后执行下面的代码。
1.调用prvInitialiseNewTask()初始化任务控制块中的成员。2调用prvAddNew..()添加新创建的任务到就绪列表中
prvInitialiseNewTask()
都赋值为a5,好处是某个值不是a5了,表示被用了,然后我们可以通过之前学的一个函数可以检测还剩多少。
重要
这里是内存,出栈的时候吧数据写入到寄存器中发挥作用。