如何使用pwm.h

How to use pwm.h

如何使用 ESP8266 库 pwm.h?如果我只是将库包含在我的 arduino 项目中,我会得到一个错误:undefined reference to pwm_init

我需要一个 40khz 的正弦波用于超声波传感器,analogWrite 在高频下工作不好。

抱歉,如果答案很明显,我已经用谷歌搜索了几个小时,但找不到任何有用的东西。

编辑

我认为这是正确的pwm.c file。我必须把它放在哪里?我尝试仅将此文件添加到我的项目中,但它不起作用。我猜它依赖于该库中的其他文件。但是我如何将 C 库添加到 arduino 项目中呢?如果有头文件,为什么它还没有包含在 ESP8266 核心库中 pwm.h?

libpwm.a是ESP8266 SDK的一部分,如果你安装了ESP8266 Addon With the Arduino Boards Manager,这个库应该在:

.arduino15/packages/esp8266/hardware/esp8266/<SDK Version>/tools/sdk/lib/libpwm.a

为了使用 PWM,您应该在您的草图中包含 pwm.h 强制 C 修饰:

extern "C" {
  #include "pwm.h" 
}

然后为了 link 和 libpwm.a 你应该自定义 link 命令创建自定义平台配置文件 .arduino15/packages/esp8266/hardware/esp8266/<SDK Version>/platform.local.txt,添加

compiler.c.elf.extra_flags=-lpwm

你也可以在plateform配置文件中加入这一行.arduino15/packages/esp8266/hardware/esp8266/<SDK Version>/platform.txt