[Решенная] ошибка с библиотекой i2CDEV

Icelon
Че 24 августа 2017 г. 13:35
[tr] [/tr] этот arduino new ide в i2cdevlib
In file included from /home/icelon/midro/hardware/Arduino_STM32-master/STM32F1/cores/maple/wirish.h:60:0, from /home/icelon/midro/hardware/Arduino_STM32-master/STM32F1/cores/maple/Arduino.h:30, from /home/icelon/midro/libraries/I2Cdev/I2Cdev.h:77, from /home/icelon/midro/libraries/I2Cdev/I2Cdev.cpp:46: /home/icelon/midro/libraries/I2Cdev/I2Cdev.cpp: In static member function 'static int8_t I2Cdev::readBytes(uint8_t, uint8_t, uint8_t, uint8_t*, uint16_t)': /home/icelon/midro/libraries/I2Cdev/I2Cdev.cpp:276:62: error: 'BUFFER_LENGTH' was not declared in this scope for (uint8_t k = 0; k < length; k += min(length, BUFFER_LENGTH)) { ^ /home/icelon/midro/hardware/Arduino_STM32-master/STM32F1/cores/maple/wirish_math.h:107:39: note: in definition of macro 'min' #define min(a,b) ((a)<(b)?(a):(b)) ^ /home/icelon/midro/libraries/I2Cdev/I2Cdev.cpp: In static member function 'static int8_t I2Cdev::readWords(uint8_t, uint8_t, uint8_t, uint16_t*, uint16_t)': /home/icelon/midro/libraries/I2Cdev/I2Cdev.cpp:414:70: error: 'BUFFER_LENGTH' was not declared in this scope for (uint8_t k = 0; k < length * 2; k += min(length * 2, BUFFER_LENGTH)) { ^ /home/icelon/midro/hardware/Arduino_STM32-master/STM32F1/cores/maple/wirish_math.h:107:39: note: in definition of macro 'min' #define min(a,b) ((a)<(b)?(a):(b)) ^ exit status 1 Error compilando para la tarjeta Maple Mini.

fpistm
Че 24 августа 2017 г. 14:51
Это ссылка на изменение, сделанное для использования Hardwire вместо Softwire.
https: // github.com/rogerclarkmelbourne/ ... D44D874L60
В Проволока.час Buffer_length больше не определен.

Как обходной путь:
Изменить включение в библиотеку i2CDEV из Проволока.час к Мягкий провод.час
https: // github.com/jrowberg/i2cdevlib/b ... CDEV.H#183

Или вы можете проверить, чтобы добавить Проволока.час: #define BUFFER_LENGTH 32

ZMEMW16
Че 24 августа 2017 г. 15:15
И где ты взял i2cdev ? Угадайте GitHub So https: // github.com/jrowberg/i2cdev А потом больше информации от
http: // www.i2cdevlib.ком/ ? (около 15 секунд)

На их форумах я нашел Я видел на главной странице i2Cdevlib, что STM32 был будущим целью Похоже, что у него есть должный порт, может быть хорошим местом для начала.
Ищите другой проект с пособием и портами STM32, сравните те, что может потребоваться, что может потребоваться изменение, таймеры, irq with

Стивен

fpistm
Че 24 августа 2017 г. 15:28
Поскольку он использует класс проводов из ядра, ему не нужно конкретное обновление для STM32.
Я думаю, что оригинальный вопрос заключается в том, почему он больше не построен.

РЕДАКТИРОВАТЬ: Протестировано с помощью arduino_core_stm32 и это нормально.

Icelon
Че 24 августа 2017 г. 16:18
СПАСИБО СПАСИБО .... Слово нормально ,,,,, Hardwire и добавьте проволоку . использовал jrowberg git ... Спасибо

fpistm
Че 24 августа 2017 г. 16:38
Добро пожаловать.
Может быть, должно быть хорошо добавить определение для Hardwire, и это будет более совместимо с LIB, использующим это определение.
Я позволил @rogerclark проверить этот момент ;)

Rogerclark
Че 24 августа 2017 г., 21:30
Buffer_length определяется для библиотеки проводов AVR.

Кажется странным определить кого -то с глобальным именем, таким как Buffer_length, который не описывает, что связан буфер

fpistm
Пт 25 августа 2017 г., 7:30 утра
+1 Роджер.

Icelon
Пт 25 августа 2017 г. 7:53 утра
Спасибо, Роджер !!!!


Я видел, что ты мне говорил, но я все еще не сдаваюсь, я изменяю прошивку STM32F030 ... Тип контроллера Wemos, хотя я чертовски возможность использовать TLC5490 или шляпа типа PCA9685 ....

Rogerclark
Пт 25 августа 2017 г. 8:02
Похоже, Buffer_length определяется в проводе.H для архитектуры SAM

https: // github.com/arduino/arduinocore- ... Ngth&Тип =

а также для AVR

Но не для Самда

Я вижу, что упоминается в http: // Playground.Ардуино.cc/main/wirel ... Дрефер

Но это не совсем часть общественного API для провода.

https: // www.Ардуино.cc/en/reference/wire


Глядя в Libmaple, Wirebase определяет #define wire_bufsiz 32
Я изменю определение на Buffer_length = 32, только для максимальной совместимости.

Но лично я не думаю, что это хорошая практика для каких -либо внешних библиотек, которые можно использовать (поскольку это не часть публичного API)

Rogerclark
Пт 25 августа 2017 г. 8:36 утра
[Icelon - Пт 25 августа 2017 г. 7:53] - Спасибо, Роджер !!!!


Я видел, что ты мне говорил, но я все еще не сдаваюсь, я изменяю прошивку STM32F030 ... Тип контроллера Wemos, хотя я чертовски возможность использовать TLC5490 или шляпа типа PCA9685 ....
Скачать последнюю версию.

Я обновил проволочную базу.H и проволочная база.CPP, а также Softwire.час

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

Icelon
Пт 25 августа 2017 г. 14:04
бак !!!