Альтернатива функции delay() при использовании тикера в ESP8622
При использовании библиотеки тикеров на ESP8266 вы не можете использовать функцию delay ()
, поскольку функции тикера используют базовый таймер. В оригинальной библиотеке Arduino говорится, что вы можете использовать тикер в качестве задержки, но в реализации ESP8266 все работает по-другому. Вы "прикрепляете()" функцию обратного вызова и указываете период.
Как я могу создать задержку, для которой не требуется базовый таймер?
(Кстати, где документация для библиотеки тикеров ESP8266? В репозитории нет ни документации, ни комментариев по функциям.)
@A. Vieira, 👍1
1 ответ
Лучший ответ:
используйте обратный вызов тикера для увеличения значения. это значение может быть использовано в качестве замены millis (). на самом деле "миллис" сделан именно так.
напишите простую функцию, которая даст вам задержку. этот код предполагает, что функция обратного вызова управляется прерываниями/событиями, как системный таймер в ARMs.
uint32_t ticks;
void callbackFunc()
{
ticks++;
}
void myDelay(uint32_t del)
{
uint32_t tempTime = ticks;
while (ticks < tempTime + del);
}
- Как читать и записывать EEPROM в ESP8266
- Как сделать выводы Tx и Rx на ESP-8266-01 в выводах GPIO?
- Как навсегда изменить скорость передачи данных ESP8266 (12e)?
- Как заставить 5-вольтовое реле работать с NodeMCU
- Как исправить: Invalid conversion from 'const char*' to 'char*' [-fpermissive]
- ESP8266 не подключается к Wi-Fi
- AT-команда не отвечает на последовательный монитор
- Разница между этими двумя платами NodeMCU?
ДА. Это, кажется, работает, но мне нужно поместить
ESP.wdtFeed();
в цикл while в функции задержки. В противном случае срабатывает сторожевой таймер., @A. Vieira