Як виправити ESP32 rmt: rmt_transmit(466): loop count is not supported

Якщо ви зіткнулися з

rmt_transmit_error.txt
rmt: rmt_transmit(466): loop count is not supported

на ESP32, це тому, що ви використали rmt_transmit_config_t з явно заданим loop_count.

rmt_cfg_with_loop.cpp
rmt_transmit_config_t cfg = {
  .loop_count = 1,
  .flags = {
        .eot_level = 0,
    }
};
ESP_ERROR_CHECK(rmt_transmit(/* ... */, &cfg));

але ваш мікроконтролер (наприклад, ESP32-D0WD-V3) не підтримує апаратний режим циклу.

Виправити це легко: просто закоментуйте рядок .loop_count:

rmt_cfg_without_loop.cpp
rmt_transmit_config_t cfg = {
  //.loop_count = 1, // ВИМКНЕНО, оскільки чіп не підтримує це
  .flags = {
        .eot_level = 0,
    }
};
ESP_ERROR_CHECK(rmt_transmit(/* ... */, &cfg));

Зверніть увагу, що якщо ви залишите .loop_count зі значенням за замовчуванням, він завжди діятиме так, ніби .loop_count = 1.


Дивіться схожі статті за категоріями: C/C++ ESP8266/ESP32