現在のタスクを一時停止する方法は?
uCOS では、現在のタスクを一時停止するために OSTaskSuspend() 関数を使用することができます。この関数のプロトタイプは次の通りです。
void OSTaskSuspend (OS_TCB *ptcb, OS_ERR *perr);
ptcbとは、タスクコントロールブロック(TCB)を指すポインタであり、中断されるタスクを示しています。パラメーターとしてNULLを渡すことで、現在のタスクを中断することができます。perrは、関数の実行結果を返すためのエラーコードを指すポインタです。
OSTaskSuspend()関数を使用して現在のタスクを一時停止するサンプルコードが以下に示されています。
void TaskA (void *p_arg)
{
// 执行任务A的操作
// 挂起当前任务
OSTaskSuspend(NULL, &err);
// 任务A的其他操作
}
void main (void)
{
// 初始化uCOS
// 创建任务A
// 启动任务调度
while (1) {
// 主循环
}
}
上記の例では、タスクAがOSTaskSuspend(NULL, &err)を実行すると、現在のタスクが一時停止され、他のタスクが実行されるか、イベントの発生を待ちます。一時停止されたタスクは、他のタスクや割り込みによって再開されることがあります。