如何修复 ESP32 rmt: rmt_transmit(466): loop count is not supported

如果你在 ESP32 上遇到

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

这是因为你使用了显式设置 loop_countrmt_transmit_config_t

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

但你的 IC(如 ESP32-D0WD-V3)不支持硬件循环模式。

修复很简单:只需注释掉 .loop_count 行:

rmt_cfg_without_loop.cpp
rmt_transmit_config_t cfg = {
  //.loop_count = 1, // DISABLED as chip does not support it
  .flags = {
        .eot_level = 0,
    }
};
ESP_ERROR_CHECK(rmt_transmit(/* ... */, &cfg));

注意,如果你将 .loop_count 保留为默认值,它将始终像 .loop_count = 1 一样工作。


Check out similar posts by category: C/C++, ESP8266/ESP32