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


    动态内存使用

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

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

    在这里插入图片描述

    静态创建任务

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

    简单实验

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

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

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

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

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

  • 相关阅读:
    Python+超市进销存 毕业设计-附源码211549
    ASIFT算法过程实现 --- 配置避坑指南
    linux安装达梦数据库8
    SpringCache
    【710. 黑名单中的随机数】
    java开发工具IDEA JVM框架教程:Google App Engine配置
    Linux CentOS7 vim多文件编辑
    自定义MVC
    js的定时器
    Android四大组件之BroadcastReceiver(三)
  • 原文地址:https://blog.csdn.net/weixin_45636780/article/details/133898706