我们知道FreeRTOS划分为一个个的任务,然后由任务调度器实现调度执行,那么我们如何创建任务呢?这就是本篇博客需要讲解的问题。
目录
一、任务创建和删除的API函数
任务的创建和删除本质就是调用FreeRTOS的API函数。
二、动态创建任务函数
2.1 函数原型
在编程时,对返回值进行参数检测,可以判断任务是否创建成功!
2.2 实现动态创建任务流程
此函数创建的任务会立刻进入就绪态,由任务调度器调度运行 。
2.3 动态创建任务函数内部实现
2.4 任务控制块结构体成员介绍
注意:每个任务都有属于自己的任务控制块,类似身份证
任务栈栈顶,在任务切换时的任务上下文保存、任务恢复息息相关
三、静态创建任务函数
3.1 函数原型
3.2 实现静态创建任务流程
此函数创建的任务会立刻进入就绪态,由任务调度器调度运行
3.3 静态创建任务函数内部实现
四、任务删除函数
4.1 函数原型
用于删除已被创建的任务,被删除的任务将从就绪态任务列表、阻塞态任务列表、挂起态任务列表和事件列表中移除!!!
注意:
1、当传入的参数为NULL,则代表删除任务自身(当前正在运行的任务)
2、删除动态创建的任务时:如果传的是另一个任务的句柄时,则直接将此任务分配的内存释放,但是如果传的是NULL(删除自身),则并不会直接在自身任务中直接释放,因为自身的任务还在运行,需要使用内存,而是在空闲任务中会负责释放自身占用的内存!
3、删除静态创建的任务时:由用户在任务删除前申请的内存, 则需要由用户在任务被删除前提前释放,否则将导致内存泄露!!
4.2 删除任务流程
4.3 内部实现过程
至此,任务创建和删除的API函数就已经介绍完毕,下一节博客以实战方式创建动态任务!初次学习,循序渐进,一步步掌握即可!以上就是全部内容!请务必掌握,创作不易,欢迎大家点赞加关注评论,您的支持是我前进最大的动力!下期再见!