2016-09-22 7 views
2

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

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

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

EDIT

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

+1

вы, скорее всего, придется добавить LIB (например, может быть, «libpwm.lib») для вашего проекта, а также. – tofro

+1

В C (и C++, но в меньшей степени) заголовки не содержат фактического кода, а просто * interface *, который сообщает вам, как работает конкретный модуль или библиотека, какие функции он имеет и какие типы данных и т. Д. Таким образом, вы должны иметь код, либо как исходный файл, либо предварительно скомпилированную библиотеку. – unwind

+0

Возможный дубликат https://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external-symbol-error-and-how-do-i-fix – Galik

ответ

0

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" 
} 

Тогда для того, чтобы связать с libpwm.a вы должны настроить команду ссылку создание файла конфигурации пользовательских Plateform .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

цех изготовления печатных форм
+0

Я не знаю, как сообщить компилятору использовать собственный файл конфигурации. Поэтому я просто добавил эту строку в файл platform.txt, и я все равно получаю ту же ошибку. Я нашел файл libpwm.a в указанной вами папке. – mbostic

 Смежные вопросы

  • Нет связанных вопросов^_^