uc/os操作系统读书笔记

第二章  μCOS Ⅱ中的任务

2.1 任务的基本概念

2.1.1 任务的状态

睡眠状态

任务只是以代码的形式驻留在程序空间(ROMRAM),还没有交给操作系统管理的情况

就绪状态

如果系统为任务配置了任务控制块且在任务就绪表中做了就绪登记,则任务就具备了运行的充分条件

运行状态

处于就绪状态的任务如果获得了CPU的使用权,就进入了运行状态

等待状态

正在运行的任务,需要等待一段时间或需要等待一个事件发生再运行时,该任务就会把CPU的使用权让给其他任务而使任务进入等待状态

中断服务状态

一个正在运行的任务一旦响应中断申请就会中断执行而去执行中断服务程序

 

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

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

 任务的执行代码通常是一个无限循环结构,并且在这个循环中可以响应中断,这种结构也叫超循环结构

例:void MyTask(void *pdata)

{

    for( ; ; )

    {

        可以被中断的用户代码;

        OS_ENTER_CRITICAL(); // 进入临界段,关中断;

        不可以被中断的用户代码;

        OS_EXIT_CRITICAL();  //退出临界段,开中断;

        可以被中断的用户代码;

    }

}

2.用户应用程序的一般结构

Void MyTask1(void *pdata)

{

for(;;)

{

    ……

}

}

Void MyTask2(void *pdata)

{

for(;;)

{

    ……

}

}

Void main()

{

……

OSInit(); // 初始化μCOS

……

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

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

……

OSStart();//启动任务

……

}

 

 

2.1.3  系统任务    分为空闲任务和统计任务

1.空闲任务

系统某个时间内无用户任务可运行而处于所谓的空闲状态。

空闲任务的代码如下:

Void OSTaskIdle(void *pdata)

{

#if  OS_CRITCAL_METHOD == 3

    OS_CPU_SR cpu_sr;

#endif

Pdata = pdata; //防止某些编译器报销

for(;;)

{

    OS_ENTER_CRITICAL();//关闭中断

        OsdleCtr++; // 计数

    OS_EXIT_CRITICAL(); //开放中断

}

}

 

μCOS Ⅱ规定,一个用户应用程序必须使用这个空闲任务,而且这个任务是不能用软件来删除的。

2.统计任务

用户应用程序是否使用统计任务,用户可以根据应用程序的实际需要来进行选择。

 

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

μCOS Ⅱ把任务的优先权分为64个优先级别,每一个级别都用一个数字来表示。数字0表示任务的优先级别最高;数字越大则表示任务的优先级别越低。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值