安装arduino ide后出现Esp32频率错误



上周出于某种原因,我重新安装了我的膝盖和arduino ide。我遇到的问题是,在重新安装之前编写的一些esp上运行良好的代码,现在当我部署它时,我得到这个错误。

这是一段代码:

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);

错误:

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

第一次我认为是我买的新esp有问题,但我拿了一个旧的,我只是在上面再次写了那个代码,得到了同样的错误。所以我几乎可以肯定,这是我在arduino ide上安装的最后一个版本…我不知道我以前有什么。

有什么想法吗?

感谢

是的,因为分辨率取决于您想要生成的频率。对于较高的频率,您只能使用较低的分辨率。

你必须改变这个-

const int resolution = 13;

因此,5khz的最大占空率分辨率为13位。

此表列出了一些常用的频率及其最大分辨率。

https://www.espressif.com/sites/default/files/documentation/esp32_technical_reference_manual_en.pdf table.14.1

请注意,最大分辨率和频率也取决于您正在使用的计时器。在用于led的Arduino API中,定时器和其他定时器配置的选择是在后台处理的。但是,有3个定时器可供您使用,每个定时器都有自己的频率。

表中有一个公式,您可以使用该公式计算所需频率的最大可用分辨率。

最新更新