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

动态内存使用

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

任务(task)用一个TCB结构体来表示它:
在这里插入图片描述
RTOS(5)创建任务函数详解_第1张图片

RTOS(5)创建任务函数详解_第2张图片

静态创建任务

RTOS(5)创建任务函数详解_第3张图片
需要事先定义好栈和TCB结构体:
RTOS(5)创建任务函数详解_第4张图片
并且要定义vApplicationGetIdleTaskMemory函数;
并且要在
RTOS(5)创建任务函数详解_第5张图片

简单实验

  • 优先级实验
    默认调度下:同优先级的任务交替执行,高优先级只要不放弃执行,低优先级的任务
    无法执行;
    RTOS(5)创建任务函数详解_第6张图片

  • 删除任务
    运行100次在任务2中删除任务1,运行200次任务2自己删除自己;
    RTOS(5)创建任务函数详解_第7张图片

RTOS(5)创建任务函数详解_第8张图片
RTOS(5)创建任务函数详解_第9张图片

  • 使用同一任务函数创建多个任务
    RTOS(5)创建任务函数详解_第10张图片
    在这里插入图片描述
    RTOS(5)创建任务函数详解_第11张图片

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

你可能感兴趣的:(c++)