Определить, является ли MCU ESP8266 или ESP32
Я кодирую библиотеку, которая обрабатывает процедуры сна.
Поскольку я использую как ESP826, так и ESP32, которые используют разные команды ожидания (и Wi-Fi), я ищу способ обнаружить MCU, не используя логический флаг, который указывает на это.
Парень
@Guy . D, 👍0
Обсуждение1 ответ
Лучший ответ:
Я полагаю, это означает, что вы не хотите просить пользователя кода настроить логический флаг.
Пакет ESP8266 для Arduino обеспечивает -DARDUINO_ARCH_ESP8266 -DESP8266
параметры командной строки эти при вызове g ++. Они эффективно определяют макросы тестирования функций #define, как если бы они были в начале исходного кода.
Для ESP32 это аналогично с -DARDUINO_ARCH_ESP32 -DESP32
Вы можете выполнять тесты в своем коде, такие как:
#if defined (ARDUINO_ARCH_ESP8266)
// сделай одну вещь
#elif defined(ESP32)
// сделай еще один
#else
#error Architecture unrecognized by this code.
#endif
Вероятно, существуют также подобные макросы, которые предопределены компилятором xtensa g ++.
- Драйверы для чипа последовательного порта CH9102X
- ESP32: отключить детектор отключения питания
- Преобразование строки в IP-адрес
- Какую плату выбрать в PlatformIO для ESP Wroom 32?
- esp32 Stack canary watchpoint срабатывает
- Постоянная частота дискретизации АЦП на ESP8266 или ESP32
- ESP32S v1.1 NodeMCU vs ESP32 DevKitV1
- esp32-cam публикует изображение в mqtt
#если определено (ESP8266)
,#если определено (ESP32)
, @Jurajкак вы могли бы использовать логический флаг? код для esp32 не будет компилироваться на esp8266 и наоборот, @Juraj
@Juraj часть, для которой код отличается, мне нужен флаг., @Guy . D
у вас есть в вопросе "пока НЕ используется логический флаг, который указывает на это". таким образом, вы исключаете несуществующую опцию, @Juraj