Я пытаюсь написать программу в vxworks. Когда общая задержка задачи составляет 400 тактов, она приостанавливается на 100-м такте на 20 тактов, а затем возобновляется до задержки.
Мой основной код выглядит следующим образом:
void DelaySuspend (int level)
{
int tid, suspend_start,suspend_end,i;
suspend_start = vxTicks + 100;
suspend_end = vxTicks + 120;
i = vxTicks;
/* myfunction has taskDelay(400)*/
tid = taskSpawn("tMytask",200,0,2000,(FUNCPTR)myfunction,0,0,0,0,0,0,0,0,0,0);
/* tick between vxTicks+100 and vxTicks+120,suspend tMytask*/
while (i<suspend_start)
{
i=tickGet();
}
while (i <= suspend_end &&i >= suspend_start)
{
i = tickGet();
taskSuspend(tid);
}
}
Я хочу убедиться, что общее время задержки (или отметка) не меняется, даже если я приостанавливаю задачу на некоторое время. Я знаю ответ, но просто попробуйте запрограммировать его, чтобы показать, как это делает vxWorks.