动态内存使用
面向对象的编程思想
我们想要使用应该结构体,但又不想了解其内部时,一般使用句柄(handle);句柄是指针指向结构体,只是同一个结构体类型的另外一种名称而已;
任务(task)用一个TCB结构体来表示它:
…
静态创建任务
需要事先定义好栈和TCB结构体:
并且要定义vApplicationGetIdleTaskMemory函数;
并且要在
简单实验
-
优先级实验
默认调度下:同优先级的任务交替执行,高优先级只要不放弃执行,低优先级的任务
无法执行;
-
删除任务
运行100次在任务2中删除任务1,运行200次任务2自己删除自己;
-
使用同一任务函数创建多个任务
-
栈大小实验
我们使用malloc函数创建一个内存的时候,我们需要先创建一个头部,头部结构体里记录有buf的长度信息len,我们free的时候只传给函数buf的首地址,长度len会在头部中读取,然后全部释放掉;
我们创建任务,首先创建tcb和它的头部,再分配栈和它的头部,我们的临时变量存储在栈里面,栈是往下增长的,如果太多的话会直接占用掉头部和tcb;
显示发生硬件错误,后续韦东山老师还会介绍,内存分配的更详细的讲解,包括分配栈的大小等等