动态创建任务:我们设置好栈的深度,栈的大小和TCB的大小系统分配(空闲任务自动申请栈和TCB)
静态创建任务:设置好栈的深度之后,栈的大小和TCB的大小需要自己手动申请(空闲任务的栈和TCB也需要自动去手动申请)
TCB(Task Control Block,任务控制块)不是存储在栈里面的。
TCB是FreeRTOS等实时操作系统中用于描述任务状态的一个重要数据结构。它包含了任务的许多关键信息,如任务状态、优先级、栈指针等。每个任务在创建时都会被分配一个唯一的TCB,并且这个TCB是在系统的内存中分配的,而不是在任务的栈中。
任务栈则是用于保存任务在执行过程中的局部变量、函数调用信息(如返回地址、参数等)的。当任务切换时,当前任务的上下文(包括CPU寄存器的值、栈指针等)会被保存到其任务栈中,以便在任务恢复执行时可以从中恢复上下文。因此,任务栈是与任务紧密相关的,但TCB并不是存储在栈中的。
一、动态创建任务
1.1静态创建任务代码函数原型
xTaskCreate( TaskFunction_t pxTaskCode,
const char * const pcName,
const configSTACK_DEPTH_TYPE usStack