zoukankan      html  css  js  c++  java
  • 任哲<<μC/OS>>

    从第二章开始啦:

    程序控制块(TCB)  重要概念  相当于对应程序块的学生证,学号,,,

    上面的图是一个简单的程序控制块,还会有复杂的程序控制块,也许是嵌套的两级的:

    链表就相当于老师手中的花名册,,把学号一个一个排起来

     位图有很多作用,,,相当于座位,座位上没有人就是0,座位上有人就是1,,,,,,也就是用位图可以查询某个外设是否被占用.

    相当于考勤表..

    ////////////////////////////////////////////

    第三章

    任务的组成:  任务程序代码; 任务堆栈 ; 任务控制块;

    任务程序代码,就是函数,是任务的执行部分.

    任务堆栈,保存任务的运行环境.

    任务控制块,里面包含了任务的属性,是任务的'学生号'

    该看一下微机原理,补一下pc是什么??

     任务的状态:

    OS_ENTER_CRITICAL()  关中断  ,是宏

    OS_EXIT_CRITICAL()      开中断 ,是一个宏定义

    OSTaskCreate() :是μC/OS提供用来创建任务的函数

    OSStart() :启动μC/OS的函数 , 系统启动后,任务就由操作系统来管理和调度了.

    两个系统任务: 空闲任务,统计任务

    空闲任务 OSTaskIdle()  必须有,而且不能用程序删除

    //看到了任务堆栈的建立

    OS_CPU.H  中专门定义了一个数据类型OS_STK :

    typedef unsigned int OS_STK;       //该类型长度为16位

    这样,在定义任务堆栈的栈区时,只要定义一个OS_STK类型的数组即可,

    #define TASK_STK_SIZE 512 . //定义堆栈的长度

    OS STK TaskStk[TASK_STK_SIZE]; //定义一个数组来作为任务堆栈

    创建任务函数原型

    INT8U OSTaskCreate(

                                      void (*task)(void *pd), //指向任务的指针

                                      void *pdata, //传递给任务的参数

                                     OS_STK * ptos,//任务堆栈栈顶的指针

                                      INT8U prio //指定任务优先级别的参数

                                      );

    例: 创建一个任务,任务堆栈长度为128字节,优先级为20,任务参数pdata的实参为MyTaskAgu

    答:

    #define MyTaskStkN  64

    OS_STK MyTaskStk[MyTaskStkN]

    void main (void)

    {

    ......

    OSTaskCreate(

                 MyTask, //任务的指针

                 &MyTaskAgu,//传递给任务的参数

                &MyTaskStk[MyTaskStkN-1], //任务堆栈栈顶地址

                20 //任务的优先级别

    )

    }

    OS_STK_GROWTH  //用来决定堆栈的增长方向.

    STM32的栈,是向下生长的.事实上,一般CPU的栈增长方向,都是向下的. 

    也就是越增长,越大

    那么stm32单片机应该把这个参数定为0

    3.2.2

    任务堆栈

     任务堆栈初始化函数:

    OS_STK *OSTaskStkInit (

        void (*task)(void *pd),

        void *pdato,

        OS_STK *ptos

        INT16U opt

    ) ;

    上面函数主要是有任务创建函数来调用:OSTaskCreate()

    3.3 任务控制块及其链表

    任务控制块是任务的学生证

    学生证上面记录了一些信息: 优先级别;任务的堆栈指针;任务的当前状态;

    任务控制块结构定义如下:

    Task Control Block   (TCB)

     //以上黑体,表示常用的

    SOTCBStat : 用来存放任务的当前状态,该变量的值可以为:

  • 相关阅读:
    JS自动微信消息轰炸
    会议管家——常用的JQ知识点
    关于微信分享
    前端——解决微信网页清除缓存的方法
    2018新知识点
    一键分享代码(提供能分享到QQ空间、新浪微博、人人网等的分享功能)
    如何在网中使用百度地图API自定义个性化地图
    spring5 源码深度解析----- IOC 之 默认标签解析(上)
    spring5 源码深度解析----- IOC 之 容器的基本实现
    高级Java工程师必备 ----- 深入分析 Java IO (三)
  • 原文地址:https://www.cnblogs.com/chulin/p/9041504.html
Copyright © 2011-2022 走看看