g-makulik がコメントに投稿したように、スレッドを使用できます。または、単一のループ内で状態を維持する古いソリューションにフォールバックすることもできます。お使いの TI が fork() またはスレッドをサポートしているかどうかはわかりませんが、サポートしていない場合、このようなものが強力な候補になります。
int need_to_monitor_motor = 1;
int common_switch; // 共通処理ならtrue
while (need_to_monitor_motor)
{
共通_スイッチ = 1; // 共通処理を許可
// プロセッサの占有を避けるために何かをする必要があるかもしれません
// 他のプロセスが実行中です。最小限のナノスリープでも。
// sched_yield()
// usleep()
sleep_or_processor_release();
スイッチ ( motor_state )
{
ケース MOTOR_OFF:
need_to_monitor_motor = do_motor_off_stuff();
壊す;
ケース MOTOR_ON:
need_to_monitor_motor = do_motor_on_stuff();
壊す;
デフォルト
need_to_monitor_motor = trouble__fix_it( &common_switch );
壊す;
}
if (共通スイッチ)
{
do_common_processing();
}
}
(注意してください、これはコンパイルされていません)