目录
空闲任务:
引入:当任务需要延时,进入阻塞状态,那CPU去干什么事情了?
如果没有其他的任务可以运行,RTOS都会为CPU创建一个空闲任务这个时候CPU就运行空闲任务。在uCOSIII中,空闲任务是系统在初始化的时候创建的优先级最低的任务,空闲任务OSTaskIdle()什么也不做,只是在不停的给一个32位的OSIdleCtr的计数器加1。使用这个计数器以确定现行应用软件实际消耗的CPU时间。鉴于空闲任务的这种特性,在实际应用中,当系统进入空闲任务的时候,可在空闲任务中让单片机进入休眠或者低功耗等操作。
特点:
- 空闲任务是UCOSIII创建的第一个任务。
- 空闲任务是UCOSIII创建的,不需要手动创建,在调用OS_Init()初始化UCOS的时候就会被创建。
- 空闲任务优先级总是为OS_CFG_PRIO_MAK-1.
- 空闲任务中不能调用任何可是空闲任务进入等待的函数(比如延时函数)!!!
作用:
- 空闲任务可以降低CPU的使用率。
- 可以利用钩子函数实现低功耗相关功能。
为了更好的实现低功耗,空闲任务也很有必要,我们可以在空闲任务中实现睡眠,待机等低功耗措施。
空闲任务相关源码分析:
先进入OS初始化函数当中,可以看到在该函数当中进行好多初始化。
找到空闲函数初始化:
转跳进去:我们可以看到有一个OSTaskCreate()任务创建函数
继续转跳进入函数主体
CPU_CRITICAL_ENTER();CPU_CRITICAL_EXIT();临界段代码保护
● OSIdleTaskCtr++;每进入一次空闲任务,OSIdleTaskCtr 就加一,当该变量增加比较快时,证明空闲时间比较多,应用任务花费资源少。
● 宏 OS_CFG_STAT_TASK_EN 大于 0 说明开启了统计任务。
● OSStatTaskCtr 加一,统计任务中用到 OSStatTaskCtr,用来统计 CPU

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




最低0.47元/天 解锁文章
449

被折叠的 条评论
为什么被折叠?



