任务——μ/COS-II读书笔记

来源:互联网 发布:php上传文件类型限制 编辑:程序博客网 时间:2024/05/16 12:43

2.1 任务的基本概念

任务种类:

1.用户任务:解决应用问题。(由应用程序设计者编写)

 

2.系统任务:为应用程序提供某种服务。(由系统提供)

 

任务组成:

1.任务控制块:保存任务属性。

2.任务堆栈:保存任务工作环境。

3.任务程序代码

 

 

任务链表:多个任务链接而成。


 

 

 

2.1.1 任务的状态

 

1.睡眠状态:任务没有被配备任务控制块或剥夺了任务控制块时的状态。

2.就绪状态:任务被配备了任务控制块且在任务就绪表中进行了登记的状态。

3.运行状态:任何时刻只能有一个任务处于运行状态。

4.等待状态:之前在运行的任务,现在需要等待一段时间  需要等待一个事件发生 再运行时的状态。

5.中断服务状态:正在运行的任务响应中断申请去执行中断服务程序的状态。

 

任务状态转换图:

 

 

 

2.1.2 用户任务代码的一般结构

 

1. 用户任务代码的一般结构

  μC/OS-II任务的代码结构是一个带有临界段的无限循环。(在运行OS_ENTER_CRITICAL() 和 OS_EXIT_CRITICAL()来控制任务何时响应中断,何时屏蔽中断。)

 

2. 用户应用程序的结构

  

    void MyTask1(void *pdata) //定义用户任务1

    {

    for(;;)

{

......

}

}

 

void MyTask(void * pdata) //定义用户任务2

{

for(;;)

{

......

}

}

 

void MyTask3(void * pdata) //定义用户任务3

{

for(;;)

{

......

}

}

 

void main()

{

......

OSInit(); //初始化μC/OS-II

......

OSTaskCreate(MyTask1,......); //创建用户任务1

OSTaskCreate(MyTask2,......); //创建用户任务2

OSTaskCreate(MyTask3,......); //创建用户任务3

......

OSStart(); //启动任务

......

}

 

主函数main()只负责创建和启动用户任务,而由操作系统调度运行用户任务。

 

2.1.3  系统任务

μC/OS-II定义了两个为应用程序服务的系统任务:空闲任务(每个应用程序必须使用) 和 统计任务(每秒计算一次CPU在单位时间内被使用的时间,把计算结果以百分比的形式存放在变量OSC-PUUsage中。  应用程序根据实际需要选择使用)。

 

1. 空闲任务

 

 

 

2. 统计任务

 

  要使用统计任务需要:

  1.把定义在系统头文件OS_CFG.H中的系统配置常数OS_TASK_STAT_EN设置为1

      2.在创建统计任务之前调用函数OSStatInit()对统计任务进行初始化。

 

2.1.4 任务的优先权及优先级别


例:若应用程序的优先级别为28个,则该应用程序最多安排26个任务。(优先级26自动赋给统计任务,优先级27自动赋给空闲任务)

0 0
原创粉丝点击