Как использовать pwm.h

Как я могу использовать библиотеку ESP8266 pwm.h? Если я просто включу библиотеку в свой проект Arduino, я получаю сообщение об ошибке: undefined reference to pwm_init

Мне нужна синусоида 40 кГц для ультразвукового датчика, а аналоговая запись плохо работает на высоких частотах.

Извините, если ответ очевиден, я несколько часов гуглю проблему и не могу найти ничего полезного.

ИЗМЕНИТЬ

Я думаю, что это правильный файл pwm.c. Куда мне его положить? Я попытался добавить только этот файл в свой проект, но он не работает. Я предполагаю, что у него есть зависимости от других файлов в этой библиотеке. Но как мне добавить библиотеку C в проект arduino? И почему он еще не включен в основную библиотеку ESP8266, если есть заголовок pwm.h?


person Community    schedule 22.09.2016    source источник
comment
вам, скорее всего, придется добавить некоторую библиотеку (например, libpwm.lib) в свой проект.   -  person tofro    schedule 22.09.2016
comment
В C (и C++, но в меньшей степени) заголовки не содержат фактический код, а только интерфейс, который сообщает вам, как работает конкретный модуль или библиотека, какие у них есть функции и какие типы данных и так далее. Поэтому у вас должен быть код либо в виде исходного файла, либо в виде предварительно скомпилированной библиотеки.   -  person unwind    schedule 22.09.2016
comment
возможный дубликат stackoverflow.com/questions/12573816/   -  person Galik    schedule 22.09.2016
comment
Я понимаю, что заголовок не содержит кода, но я прошу более конкретно библиотеку pwm. Куда мне поместить файл pwm.c? Я думаю, что это правильный файл pwm.c Я думаю, это правильно. Я попытался добавить только этот файл в свой проект, но он не работает. Я предполагаю, что у него есть зависимости от других файлов в этой библиотеке. Но как мне добавить библиотеку C в проект arduino? И почему он еще не включен в основную библиотеку ESP8266, если есть заголовок pwm.h?   -  person    schedule 22.09.2016
comment
Вы хотите сгенерировать синусоиду 40 кГц с помощью ШИМ? Какая частота ШИМ вам тогда нужна?   -  person JimmyB    schedule 25.09.2016


Ответы (1)


libpwm.a является частью ESP8266 SDK, если вы установили аддон ESP8266 с менеджером плат Arduino, эта библиотека должна находиться в:

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

Чтобы использовать PWM, вы должны включить в свой скетч pwm.h принудительное искажение C:

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

person mpromonet    schedule 09.10.2016
comment
Я не знаю, как сказать компилятору использовать пользовательский файл конфигурации. Поэтому я просто добавил эту строку в файл platform.txt и все равно получаю ту же ошибку. Я нашел файл libpwm.a в указанной вами папке. - person ; 12.10.2016