FreeRTOS-00-基础知识+任务创建删除 (2)

FreeRTOS 之所以能正确的恢复一个任务的运行就是因为有任务堆栈在保驾护航,任务调
度器在进行任务切换的时候会将当前任务的现场(CPU 寄存器值等)保存在此任务的任务堆栈中,
等到此任务下次运行的时候就会先用堆栈中保存的值来恢复现场,恢复现场以后任务就会接着
从上次中断的地方开始运行。

创建任务的时候需要给任务指定堆栈,如果使用的函数 xTaskCreate()创建任务(动态方法)
的话那么任务堆栈就会由函数 xTaskCreate()自动创建,后面分析 xTaskCreate()的时候会讲解 。

堆栈大小:任务堆栈的数据类型为 StackType_t, StackType_t 本质上是 unsigned long,在 portmacro.h 中有定义。

#define portSTACK_TYPE unsigned long typedef portSTACK_TYPE StackType_t;

可以看出 StackType_t 类型的变量为 4 个字节,那么任务的实际堆栈大小就应该是我们所定义的 4 倍(32位处理器)或8倍(64位处理器) 。

3 任务相关API函数

任务相关函数如下:

任务创建和删除API函数

任务创建和删除实验(动态方法)

任务创建和删除实验(静态方法)

任务挂起和恢复API函数

任务挂起和恢复实验

3.1 任务创建API函数(动态方法)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwsspy.html