Hallo, mir gelingt es nicht auf einem STM32F103CBT6 (Maple Mini) firmata zu installieren. Laut Info von firmata ist STM32 seit der Version 2.5.7 implementiert. Ich habe auf einer aktuellen IDE (1.8.12) firmata (2.5.8 ) und STM32 Cores (1.9.0) installiert.
Es erscheint die Meldung:
In file included from C:\Users\root\Documents\Arduino\libraries\Firmata/Firmata.h:17:0,
from C:\Users\root\Documents\Arduino\libraries\Firmata\examples\StandardFirmata\StandardFirmata.ino:28:
C:\Users\root\Documents\Arduino\libraries\Firmata/Boards.h:878:2: error: #error "Please edit Boards.h with a hardware abstraction for this board"
#error "Please edit Boards.h with a hardware abstraction for this board"
Kann mir jemand einen Tipp geben, wie das Problem zu lösen ist?
Vielen Dank.
Gruß Jens
Ich kenne 'firmata' nicht. Allerdings gibt es für die STM32 verschiedene Cores. Welcher wird von firmata unterstützt und hast Du auch den richtigen installiert?
Der Core ist von STMicroelectronics.
https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json
Gruß Jens
P.S. In der Board.h steht folgender Abschnitt zu STM32, welcher einfach ubergangen wird.
[/
// STM32 based boards
#elif defined(ARDUINO_ARCH_STM32)
#define TOTAL_ANALOG_PINS NUM_ANALOG_INPUTS
#define TOTAL_PINS NUM_DIGITAL_PINS
#define TOTAL_PORTS MAX_NB_PORT
#define VERSION_BLINK_PIN LED_BUILTIN
// PIN_SERIALY_RX/TX defined in the variant.h
#define IS_PIN_DIGITAL(p) (digitalPinIsValid(p) && !pinIsSerial(p))
#define IS_PIN_ANALOG(p) ((p >= A0) && (p < (A0 + TOTAL_ANALOG_PINS)) && !pinIsSerial(p))
#define IS_PIN_PWM(p) (IS_PIN_DIGITAL(p) && digitalPinHasPWM(p))
#define IS_PIN_SERVO(p) IS_PIN_DIGITAL(p)
#define IS_PIN_I2C(p) (IS_PIN_DIGITAL(p) && digitalPinHasI2C(p))
#define IS_PIN_SPI(p) (IS_PIN_DIGITAL(p) && digitalPinHasSPI(p))
#define IS_PIN_INTERRUPT(p) (IS_PIN_DIGITAL(p) && (digitalPinToInterrupt(p) > NOT_AN_INTERRUPT)))
#define IS_PIN_SERIAL(p) (digitalPinHasSerial(p) && !pinIsSerial(p))
#define PIN_TO_DIGITAL(p) (p)
#define PIN_TO_ANALOG(p) (p-A0)
#define PIN_TO_PWM(p) (p)
#define PIN_TO_SERVO(p) (p)
#define DEFAULT_PWM_RESOLUTION PWM_RESOLUTION
Kann irgendwie herausbekommen, wie das aktuelle Board übergeben wird?
Bei einem Mega fängt der Abschnitt so an:
// Arduino Mega
#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
#elif defined(ARDUINO_ARCH_STM32)
Damit fängt's ja nicht an - Das ist ein ELSE IF.
Wenn also vorher schon der Treffer war, kommen wir nicht in den ELSE-Zweig, somit auch nicht an diese IF.
MfG