OSTaskCreateHook(),OSTaskDelHook(),OSTaskSwHook(),OSTaskStatHook()

  1. 当用OSTaskCreate()或OSTaskCreateExt()建立任务的时候就会调用OSTaskCreateHook()。该函数允许用户或使用用户的移植实例的用户扩展µC/OS-Ⅱ的功能。当µC/OS-Ⅱ设置完了自己的内部结构后,会在调用任务调度程序之前调用OSTaskCreateHook()。该函数被调用的时候中断是禁止的。因此用户应尽量减少该函数中的代码以缩短中断的响应时间。  
  2.     当OSTaskCreateHook()被调用的时候,它会收到指向已建立任务的OS_TCB的指针,这样它就可以访问所有的结构成员了。当使用OSTaskCreate()建立任务时,OSTaskCreateHook()的功能是有限的。但当用户使用OSTaskCreateExt()建立任务时,用户会得到OS_TCB中的扩展指针(OSTCBExtPtr),该指针可用来访问任务的附加数据,如浮点寄存器,MMU寄存器,任务计数器的内容,以及调试信息。  
  3.     只用当OS_CFG.H中的OS_CPU_HOOKS_EN被置为1时才会产生OSTaskCreateHook()的代码。这样,使用用户的移植实例的用户可以在其它的文件中重新定义hook函数。  
  1. 当任务被删除的时候就会调用OSTaskDelHook()。该函数在把任务从µC/OS-Ⅱ的内部任务链表中解开之前被调用。当OSTaskDelHook()被调用的时候,它会收到指向正被删除任务的OS_TCB的指针,这样它就可以访问所有的结构成员了。OSTaskDelHook()可以用来检验TCB扩展是否被建立了(一个非空指针)并进行一些清除操作。OSTaskDelHook()不返回任何值。  
  2.     只用当OS_CFG.H中的OS_CPU_HOOKS_EN被置为1时才会产生OSTaskDelHook()的代码。  

  1. 当发生任务切换的时候调用OSTaskSwHook()。不管任务切换是通过OSCtxSw()还是OSIntCtxSw()来执行的都会调用该函数。OSTaskSwHook()可以直接访问OSTCBCur 和OSTCBHighRdy,因为它们是全局变量。OSTCBCur指向被切换出去的任务的OS_TCB,而OSTCBHighRdy指向新任务的OS_TCB。注意在调用OSTaskSwHook()期间中断一直是被禁止的。因为代码的多少会影响到中断的响应时间,所以用户应尽量使代码简化。OSTaskSwHook()没有任何参数,也不返回任何值。  
  2.     只用当OS_CFG.H中的OS_CPU_HOOKS_EN被置为1时才会产生 O<pre code_snippet_id="2366548" snippet_file_name="blog_20170502_3_1576895" name="code" class="cpp">OSTaskStatHook()每秒钟都会被OSTaskStat()调用一次。用户可以用OSTaskStatHook()来扩展统计功能。例如,用户可以保持并显示每个任务的执行时间,每个任务所用的CPU份额,以及每个任务执行的频率等等。OSTaskStatHook()没有任何参数,也不返回任何值。  
  3.     只用当OS_CFG.H中的OS_CPU_HOOKS_EN被置为1时才会产生OSTaskStatHook()的代码。</pre><br>  
  4. STaskSwHook()的代码。  
  5. <pre></pre>  
  6. <br>  
  7. <pre code_snippet_id="2366548" snippet_file_name="blog_20170502_4_8861679" name="code" class="cpp">OSTaskTimeHook()在每个时钟节拍都会被OSTaskTick()调用。实际上,OSTaskTimeHook()是在节拍被µC/OS-Ⅱ真正处理,并通知用户的移植实例或应用程序之前被调用的。OSTaskTimeHook()没有任何参数,也不返回任何值。  
  8.     只用当OS_CFG.H中的OS_CPU_HOOKS_EN被置为1时才会产生OSTaskTimeHook()的代码。  
  9. </pre><br>  
  10. <br>  
  11.     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值