1. پرش به برچسب خطا
2. پرش به برچسب timeout
// پرش به برچسب timeout
uint32_t startTime = HAL_GetTick();
int i = 0;
wait_loop:
espRun();
if (I0[i].Value) {
goto success;
}
if (HAL_GetTick() - startTime > 5000) {
goto timeout;
}
i++;
if (i < 8) {
goto wait_loop;
}
timeout:
// مدیریت timeout
// Do for error handling
goto end;
success:
// عملیات موفق
SetQ(0, i);
goto end;
end:
return;
3. پرش به برچسب Reset
// پرش به برچسب Reset if (I0[7].Value) { // دکمه Reset goto reset_system; } // کد اصلی espRun(); goto end; reset_system: // ریست کردن سیستم for (int i = 0; i < 6; i++) { ResetQ(0, i); } for (int i = 0; i < 512; i++) { M[i].Value = 0; } for (int i = 0; i < 256; i++) { T[i].IN = 0; T[i].Q = 0; } end: return;
