Раз в 49 дней устройство сразу рвёт связь по таймауту
Счётчик миллисекунд uint32_t ms_ticks увеличивается в SysTick. Таймаут ответа модема:
uint32_t start = ms_ticks;
while (!modem_reply()) {
if (ms_ticks > start + 1000) {
return TIMEOUT;
}
}
Обычно всё работает, но примерно раз в 49,7 суток попытка связи обрывается мгновенно. Как записать проверку?
- if ((uint32_t)(ms_ticks - start) >= 1000)
- if (ms_ticks >= start + 1000U)
- if ((int32_t)ms_ticks > (int32_t)start + 1000)
- if (ms_ticks / 1000 > start / 1000)
