Альтернатива функции delay() при использовании тикера в ESP8622

При использовании библиотеки тикеров на ESP8266 вы не можете использовать функцию delay (), поскольку функции тикера используют базовый таймер. В оригинальной библиотеке Arduino говорится, что вы можете использовать тикер в качестве задержки, но в реализации ESP8266 все работает по-другому. Вы "прикрепляете()" функцию обратного вызова и указываете период.

Как я могу создать задержку, для которой не требуется базовый таймер?

(Кстати, где документация для библиотеки тикеров ESP8266? В репозитории нет ни документации, ни комментариев по функциям.)

, 👍1


1 ответ


Лучший ответ:

2

используйте обратный вызов тикера для увеличения значения. это значение может быть использовано в качестве замены millis (). на самом деле "миллис" сделан именно так.

напишите простую функцию, которая даст вам задержку. этот код предполагает, что функция обратного вызова управляется прерываниями/событиями, как системный таймер в ARMs.

uint32_t ticks;

void callbackFunc()
{
   ticks++;
}

void myDelay(uint32_t del)
{
   uint32_t tempTime = ticks;
   while (ticks < tempTime + del);
}
,

ДА. Это, кажется, работает, но мне нужно поместить ESP.wdtFeed(); в цикл while в функции задержки. В противном случае срабатывает сторожевой таймер., @A. Vieira