微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 移植μC/OS-Ⅱ

移植μC/OS-Ⅱ

时间:10-08 来源:互联网 点击:

OSTaskCreateExt()建立任务的,因为它希望在任务OS_TCB中

有.OSTCBExtPtr域,该域包含了指向浮点寄存器的指针。

VoidOSTaskCreateHook(OS_TCB*ptcb)

{

if(ptcb->OSTCBExtPtr!=(void*)0){

/* 储存浮点寄存器的内容到..*/

/*..TCB扩展域中 */

}

}

当用户通过调用OSTaskDel()来删除任务时都会调用该函数。这样用户就可以处理OSTaskCreateHook()所分配的内存。 OSTaskDelHook()就在TCB从TCB链中被移除前被调用。

用户还可以通过使用OSTaskDelHook()来触发示波器或逻辑分析仪,以及设置断点。

参数

ptcb是指向所创建任务的任务控制块的指针。

返回值

注意事项

该函数在被调用的时候中断是禁止的。 因此用户应尽量减少该函数中的代码以缩短中断

的响应时间。

范例

voidOSTaskDelHook(OS_TCB*ptcb)

{

/* 输出信号触发示波器 */

}

当执行任务切换时都会调用该函数。全局变量OSTCBHighRdy指向得到CPU的任务的TCB,而OSTCBCur指向被切换出去的任务的TCB。OSTaskSwHook()在保存好了任务的寄存器和保存好了指向当前任务TCB的堆栈指针后马上被调用。 用户可以用该函数来保存或恢复浮点寄存器或MMU寄存器的内容,来得到任务执行时间的轨迹以及任务被切换进来的次数等等。

参数

返回值

注意事项

该函数在被调用的时候中断是禁止的。 因此用户应尽量减少该函数中的代码以缩短中断的响应时间。

范例

voidOSTaskSwHook(void)

{

/* 将浮点寄存器的内容储存在当前任务的TCB扩展域中。 */

/* 用新任务的TCB扩展域中的值更新浮点寄存器的内容。 */

}

该函数每秒钟都会被μC/OS-Ⅱ的统计任务调用。OSTaskStatHook()允许用户加入自己的统计功能。

参数

返回值

注意事项

统计任务大概在调用OSStart()后再过5秒开始执行。注意,当OS_TASK_STAT_EN或者

OS_TASK_CREATE_EXT_EN被置为0时,该函数不会被调用。

范例

voidOSTaskStatHook(void)

{

/* 计算所有任务执行的总时间 */

/* 计算每个任务的执行时间在总时间内所占的百分比 */

}

只要发生时钟节拍,该函数就会被OSTimeTick()调用。一旦进入OSTimeTick()就会马上调用OSTimeTickHook()以允许执行用户的应用程序中的与时间密切相关的代码。用户还可以通过使用该函数触发示波器或逻辑分析仪来调试,或者为仿真器设置断点。

参数

返回值

注意事项

OSTimeTick()通常是被ISR调用的, 所以时钟节拍ISR的执行时间会因为用户在该函数

中提供的代码而增加。当OSTimeTick()被调用的时候,中断可以是禁止的也可以是允许的,

这主要取决于该处理器上的移植是怎样进行的。如果中断是禁止的,该函数将会影响到中断

响应时间。

范例

voidOSTimeTickHook(void)

{

/* 触发示波器 */

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top