uCOSIII实时操作系统 六 内部任务(空闲函数)

文章详细阐述了在实时操作系统(uCOSIII)中,空闲任务的作用、创建机制、优先级以及其与钩子函数的关联。重点介绍了如何通过空闲任务实现低功耗功能,同时探讨了时钟节拍任务、统计任务和定时任务的相关概念。

目录

空闲任务:

时钟节拍任务:

统计任务:

定时任务:

中断服务管理任务:

钩子函数:

空闲任务的钩子函数:

空闲任务钩子函数实验:

其他任务的钩子函数:


空闲任务:

引入:当任务需要延时,进入阻塞状态,那CPU去干什么事情了?

如果没有其他的任务可以运行,RTOS都会为CPU创建一个空闲任务这个时候CPU就运行空闲任务。在uCOSIII中,空闲任务是系统在初始化的时候创建的优先级最低的任务,空闲任务OSTaskIdle()什么也不做,只是在不停的给一个32位的OSIdleCtr的计数器加1。使用这个计数器以确定现行应用软件实际消耗的CPU时间。鉴于空闲任务的这种特性,在实际应用中,当系统进入空闲任务的时候,可在空闲任务中让单片机进入休眠或者低功耗等操作。

特点:

  1. 空闲任务是UCOSIII创建的第一个任务。
  2. 空闲任务是UCOSIII创建的,不需要手动创建,在调用OS_Init()初始化UCOS的时候就会被创建。
  3. 空闲任务优先级总是为OS_CFG_PRIO_MAK-1.
  4. 空闲任务中不能调用任何可是空闲任务进入等待的函数(比如延时函数)!!!

作用:

  1. 空闲任务可以降低CPU的使用率。
  2. 可以利用钩子函数实现低功耗相关功能。

为了更好的实现低功耗,空闲任务也很有必要,我们可以在空闲任务中实现睡眠,待机等低功耗措施。

空闲任务相关源码分析:

先进入OS初始化函数当中,可以看到在该函数当中进行好多初始化。

找到空闲函数初始化:

转跳进去:我们可以看到有一个OSTaskCreate()任务创建函数

继续转跳进入函数主体

CPU_CRITICAL_ENTER();CPU_CRITICAL_EXIT();临界段代码保护
● OSIdleTaskCtr++;每进入一次空闲任务,OSIdleTaskCtr 就加一,当该变量增加比较快时,证明空闲时间比较多,应用任务花费资源少。
● 宏 OS_CFG_STAT_TASK_EN 大于 0 说明开启了统计任务。
● OSStatTaskCtr 加一,统计任务中用到 OSStatTaskCtr,用来统计 CPU

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值