2

如何使用 ESP8266 库 pwm.h?如果我只是在我的 arduino 项目中包含该库,则会收到错误消息: undefined reference to pwm_init

我需要一个用于超声波传感器的 40khz 正弦波,而analogWrite 在高频下效果不佳。

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

编辑

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

4

1 回答 1

0

libpwm.a是 ESP8266 SDK 的一部分,如果您使用 Arduino Boards Manager 安装了 ESP8266 插件,则此库应位于:

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

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

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

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

compiler.c.elf.extra_flags=-lpwm

您也可以在平台配置文件中添加此行.arduino15/packages/esp8266/hardware/esp8266/<SDK Version>/platform.txt

于 2016-10-09T17:17:52.273 回答