RTOS(5)创建任务函数详解

动态内存使用

面向对象的编程思想
我们想要使用应该结构体,但又不想了解其内部时,一般使用句柄(handle);句柄是指针指向结构体,只是同一个结构体类型的另外一种名称而已;

任务(task)用一个TCB结构体来表示它:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

静态创建任务

在这里插入图片描述
需要事先定义好栈和TCB结构体:
在这里插入图片描述
并且要定义vApplicationGetIdleTaskMemory函数;
并且要在
在这里插入图片描述

简单实验

  • 优先级实验
    默认调度下:同优先级的任务交替执行,高优先级只要不放弃执行,低优先级的任务
    无法执行;
    在这里插入图片描述

  • 删除任务
    运行100次在任务2中删除任务1,运行200次任务2自己删除自己;
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 使用同一任务函数创建多个任务
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 栈大小实验
    在这里插入图片描述
    我们使用malloc函数创建一个内存的时候,我们需要先创建一个头部,头部结构体里记录有buf的长度信息len,我们free的时候只传给函数buf的首地址,长度len会在头部中读取,然后全部释放掉;
    在这里插入图片描述
    我们创建任务,首先创建tcb和它的头部,再分配栈和它的头部,我们的临时变量存储在栈里面,栈是往下增长的,如果太多的话会直接占用掉头部和tcb;
    在这里插入图片描述
    显示发生硬件错误,后续韦东山老师还会介绍,内存分配的更详细的讲解,包括分配栈的大小等等

猜你喜欢

转载自blog.csdn.net/weixin_45636780/article/details/133898706