You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

重装Arduino IDE后ESP32出现LEDC频率配置错误求助

ESP32 LEDC 频率与分辨率不兼容报错解决方案

之前在ESP32上正常运行的LEDC代码,重装系统和新版Arduino IDE后部署时出现以下错误:

E (76891) ledc: requested frequency and duty resolution can not be achieved, try reducing freq_hz or duty_resolution. div_param=63

相关代码片段:

const int PinCh1 = 13;
const int PinCh2 = 15;
const int freq = 5000;
const int Channel1 = 0;
const int Channel2 = 1;
const int resolution = 16;

ledcSetup(Channel1, freq, resolution);
ledcSetup(Channel2, freq, resolution);

问题原因

新版Arduino-ESP32核心库调整了LEDC模块的时钟计算逻辑,ESP32的LEDC硬件受限于时钟分频范围,5000Hz频率搭配16位分辨率的参数组合,已经超出了当前核心库允许的硬件支持范围。

解决方案

  • 降低分辨率:如果对精度要求不是极端苛刻,把resolution从16改为12或10,5000Hz频率就能正常适配。修改后代码:
    const int resolution = 12; // 可根据实际需求选10-15之间的数值
    
  • 降低频率:必须保留16位分辨率的话,把freq降到1000Hz左右(可根据实际测试微调):
    const int freq = 1000;
    
  • 手动配置时钟分频:需要同时保留较高频率和分辨率的话,可手动指定LEDC的时钟分频系数。比如先设置分频再初始化通道:
    ledcSetClkDiv(Channel1, 8); // 分频系数需根据ESP32时钟源计算,这里仅作示例
    ledcSetup(Channel1, 5000, 16);
    ledcSetClkDiv(Channel2, 8);
    ledcSetup(Channel2, 5000, 16);
    

内容的提问来源于stack exchange,提问作者lucian_v

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 01:15:31