У меня есть плата разработки ESP8266 NodeMCU 12E.Я пытаюсь реализовать ISR, который использует аппаратный таймер, как описано в этом блоге здесь .Сообщение в блоге изначально предназначалось для ESP32, и в нем приведен окончательный демонстрационный код, который я не могу скомпилировать в Arduino IDE для ESP8266.
volatile int interruptCounter;
int totalInterruptCounter;
hw_timer_t * timer = NULL;
portMUX_TYPE timerMux = portMUX_INITIALIZER_UNLOCKED;
void IRAM_ATTR onTimer() {
portENTER_CRITICAL_ISR(&timerMux);
interruptCounter++;
portEXIT_CRITICAL_ISR(&timerMux);
}
void setup() {
Serial.begin(115200);
timer = timerBegin(0, 80, true);
timerAttachInterrupt(timer, &onTimer, true);
timerAlarmWrite(timer, 1000000, true);
timerAlarmEnable(timer);
}
void loop() {
if (interruptCounter > 0) {
portENTER_CRITICAL(&timerMux);
interruptCounter--;
portEXIT_CRITICAL(&timerMux);
totalInterruptCounter++;
Serial.print("An interrupt as occurred. Total number: ");
Serial.println(totalInterruptCounter);
}
}
Когда я пытаюсь скомпилировать, я получаю сообщения об ошибках hw_timer_t, portENTER_CRITICAL, portEXIT_CRITICAL, timerAttachInterrupt, timerAlarmWrite и т. д. ... все не существует.
Должен ли я импортировать некоторую библиотеку для поддержки этого демонстрационного кода?
Не могу найти разговоров об аппаратном таймере для ESP8266.Кажется, что каждый говорит об аппаратном таймере для ESP32.