taskSpawn()实现任务过程:
1、分配任务栈的空间,初始化WIND_TCB;
2、激活任务。
taskSpawn()自动在系统堆上分配任务栈空间,并在任务栈上创建TCB;
taskSpawn()生成任务后进入就绪队列。
taskSpawn()函数的定义
1 | int taskSpawn( char *name, /*任务名称唯一标识*/ |
函数调用成功,返回新任务的ID;或者调用失败,返回ERROR。
不建议函数返回指针等数据类型,因为指针使用不当,很容易出现乱指或指空等错误。
参数options任务选项解读,可以是以下标志的组合
1 | VX_FP_TASK: 标志浮点寄存器是否属于上下文,若函数中使用了浮点数,应带上此标记。 |
参数int型10个,主要传入入口函数的参数,若不足10个,后面剩余的设为0。
任务延迟
taskDelay(int tick)
taskDelay()提供了一个简单的任务睡眠机制,也常用于需要定时/延时机制的应用中。
利用taskDelay(),可以将调用的任务移动到具有相同优先级的就绪队列尾部。
taskDelay()会导致调用的任务在指定的延时期间(以ticks计数)放弃cpu,使任务处于DELAY状态(因此,其不能用于中断服务程序中)。
taskDelay(n)使调用该函数的任务延时n个tick(内核时钟周期)。
任务删除taskDelete()
taskDelete用于删除任务
定义:
taskDelete(int taskID)
示例
修改:建议任务函数不返回指针,返回void即可,其他code不变。
(使用指针,容易出现预期之外的错误,谨慎使用)
见此文:https://blog.csdn.net/u011362822/article/details/51767860