uC/OS_Ⅱ笔记

来源:互联网 发布:我要投诉淘宝小二 编辑:程序博客网 时间:2024/05/16 17:46

任务:

任务程序代码(保存任务属性),任务堆栈(保存任务工作环境),任务控制块(代码的执行部分)。

 

用户任务,系统任务

 

任务的五种状态:睡眠状态,就绪状态,运行状态,等待状态,中断服务状态

 

超循环结构:无限循环结构,并且在这个循环中可以响应中断

us_os_Ⅱ任务代码结构:带有临界段的无限次循环

 

us_os_Ⅱ系统任务:空闲任务(OSTaskIdle()),统计任务(OSTaskStat()(使用需初始化,置1)

us_os_Ⅱ采用按优先级抢占式规则:最多创建64个任务,最低优先级是在OS_CFG.H定义了常数OS_LOWEST_PRIO,最低优先级自动赋给空闲任务。若有统计任务,系统自动将OS_LOWEST_PRIO - 1 赋给统计任务。

 

 

任务堆栈:在存储器中按数据后进先出的原则组织的连续存储空间。为了满足任务切换和响应中断,每个任务都应配有自己的堆栈。

 

任务堆栈的创建

OS_CPU.H中定义数据类型OS_STK

typedef unsigned int OS_STK;

栈区需定义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           //指定任务优先级别的参数

                 );

增长方向:向下的堆栈vs向上的堆栈(OS_STK_GROWTH选择开关)

 

任务堆栈的初始化

CPU获得使用权,就是将堆栈的内容复制到CPU各寄存器,从而可使任务顺利地启动并运行。

任务堆栈初始化就是把任务初始数据存放到任务堆栈的工作。OSTaskStkInit()

0 0
原创粉丝点击