创建任务函数的四个参数
1、任务函数地址
2、用户定义任务名
3、栈的大小
4、任务函数参数
5、任务优先级
6、TCB结构体(里面定义有创建任务的组成成分)
TCB结构体
与创建任务函数相比,TCB结构体中少了任务函数地址和函数参数。那么他们不在内存里会在哪里呢。在上节知道函数被切换时会保留现场(即保存cpu的r0-r15到栈中),现在,在任务创建后,任务函数处于暂停态,任务函数地址和函数参数分别存储在pc和r0寄存器中,使函数恢复。
那栈空间是如何分配大小的和从哪分配的
这里直接给出结果。
栈空间是定义了一个17*1024的数组,用来分配栈
而根据实验栈空间大小是估计分配的(通过观察任务中定义的变量和任务执行深度(即子函数))
定义变量会占据栈空间
在栈中会存贮LR寄存器的值用来返回也会占用空间,LR为函数结束后下一句代码的地址。