UCOSII源码分析八——空闲任务和统计任务

空闲任务和统计任务

1.空闲任务
系统初始是在函数OSInit (void)中进行建立空闲函数OS_InitTaskIdle(); 函数内部创建了空闲任务,并将空闲任务的优先级设置为最低:
#define OS_TASK_IDLE_PRIO (OS_LOWEST_PRIO)
这样在没有任务就绪的时候,会执行空闲函数,空闲任务OS_TaskIdle (void *p_arg)的内容很简单,只是在里面做简单的变量加一OSIdleCtr++;该变量记录了空闲任务调用的次数,同时该变量的增加快慢也体现了cpu的使用率,函数内部最后有一个空闲任务的回调函数,可以让用户自添加代码。
这里有一个需要思考的地方,一般创建的任务都会有任务调度的函数,比如延时中,空闲任务里面并没有调用可以引起函数调度的函数,为什么在空闲任务的死循环里面可以跳出去执行其他任务呢?通过对系统的源码的分析可知,其实所有任务的调度是通过系统时钟Tick中进行的,在Tick函数OSTickHandler (void)里调用OSTimeTick()用来就检查任务是否已经延时到时,到时间则进行将任务就绪,最后调用OSIntExit()退出中断,这个函数用来通知系统你现在已经完成了中断服务函数,在该函数中进行OSIntNesting–,系统会在重新调用一个准备就绪的最高优先级的任务,当没有中断嵌套的时候进行系统任务调度,所以任务调度根据Tick时间在时刻进行检查,有任务时间到就绪的时候就进行调度。最后,函数OSIntEnter() and OSIntExit()要成对使用!
1.统计任务
统计任务是通过宏OS_TASK_STAT_EN开启的,设置为1的话,统计任务就会被建立,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值