Где эта функция определена?

Это код для примера таймера в esp8266..(получен с веб-сайта)

Я сомневаюсь, где определена функция timer1_enable(TIM_DIV16, TIM_EDGE, TIM_SINGLE)?? Я смотрю в Ticker.cpp, но не нашел.

#include < ESP8266WiFi.h>
#include < Ticker.h >

Ticker blinker;

#define LED 2  //Бортовой светодиод

//=======================================================================
void ICACHE_RAM_ATTR onTimerISR(){
    digitalWrite(LED,!(digitalRead(LED)));  //Toggle LED Pin
    timer1_write(600000);//12us
}

void setup()
{
    Serial.begin(115200);
    Serial.println("");

    pinMode(LED,OUTPUT);

    //Инициализировать Тикер каждые 0,5 с
    timer1_attachInterrupt(onTimerISR);
    timer1_enable(TIM_DIV16, TIM_EDGE, TIM_SINGLE);
    timer1_write(600000); //120000 us
}

void loop()
{
}

, 👍1

Обсуждение

Нашел ваш пример кода [здесь](https://circuits4you.com/2018/01/02/esp8266-timer-ticker-example/). Пожалуйста, всегда указывайте ссылку, когда вы задаете вопросы о коде из Интернета., @chrisl

Также обратите внимание, что в C++ тривиальные функции иногда полностью реализуются в файле .h, поэтому поиск в файле .cpp может не выявить никакого кода. Это особенно характерно для функций доступа ("сеттеров" и "геттеров"), где определение функции занимает не больше места (или совсем немного больше), чем объявление., @JRobert


1 ответ


2

Эти функции не имеют ничего общего с библиотекой тикеров. Эти функции определены в ядре ESP8266.

В приведенном вами примере вверху есть следующее:

Аппаратный Timer0 используется функциями Wi-Fi. Мы можем использовать только Timer1. Использование таймера вместо тикера дает преимущество точного хронометража, и вы можете получить прерывание таймера за микросекунды.

Обратите внимание на использование там "вместо тикера". Это говорит о том, что приведенный ниже код не имеет ничего общего с Тикером.

,