Установка marlin на blue pill stm32f103cbt6

Marlin Platformio Morpheus STM32

В этой статье рассмотрю возможность установки Marlin на blue pill stm32f103cbt6. Это позволяет сделать очень дешевые и компактные платы управления 3D принтером. Стоимость голубой таблетки 120-150р. и при желании драйвера шаговых двигателей можно припаять к ней даже проводами, а нагрев стола и хотенда выполнять при помощи модуля для ардуино, состоящего их мосфета с обвязкой.

Я же для принтера QUBOID делал плату расширения QUBOID SHIELD, которую я описывал здесь Самые дешевые 32 бита для 3D принтера. Схема и печатная плата. Изготовление платы я заказывал в Китае, так как было лень заниматься этим дома, да и подходящего куска текстолита у меня не было.

А схему подключения периферии мною описана здесь: Как подключить принтер к плате QUBOID SHIELD.

Сам marlin на голубой таблетке запускается при помощи проекта Morpheus-STM32.

Теперь о настройке прошивки. Я использовал последнюю версию Marlin 2.0 на GitHub . В принципе можете скачать уже настроенную версию марлина со всеми правками, ссылка в конце статьи.

Сам проект собирается в VC Code с установленным Platformio. Как это сделать читайте здесь Установка platformio в Visual Studio Code., там ничего сложного нет. После прошивки потребуется залить прошивку в плату, как это сделать я описывал здесь Как и чем прошить STM32 STM32F103C8T6 на примере blue pill.

Ну а теперь сами настройки Marlin.

Вначале я расскажу как настроить прошивку с нуля. Если не хотите возиться с этим, можете скачать архив вконце статьи с внесенными правками, и останется только настроить ваш тип кинематики, ускорения и т.д. Не нужно будет возитья с настройками, для запуска платы. Ну а для любителей покопаться текст ниже.

После распаковки исходников, в них нужно подменить несколько файлов. Все файлы в конце статьи.

Первое, это файл с настройками под плату pins_MORPHEUS.h. В этом файле прописаны пины blue pill, какой для чего используется на плате. Если у вас своя разводка платы, отличная от моей, то пропустите этот шаг и настраивайте файл по своему.

Второе, это файл platformio.ini, в Marlin е этот файл есть, но его стоит заменить, для правильной компиляции.

Дальше настраивается сама прошивка для работы с голубой таблеткой.

Configuration.h

Включаем Morpheus (blue pill) #define MOTHERBOARD 1806 — MOTHERBOARD 1806 это название платы Morpheus.

135  #ifndef MOTHERBOARD
136    #define MOTHERBOARD 1806
137  #endif

А дальше настраиваете железо, которое собираетесь подключать к плате. Для использования дисплея раскомментировать указанные строки в Configuration.h и в pins_MORPHEUS.h

Для дисплея MKS MINI 12864

MKS MINI
MKS MINI

Configuration.h:

1500   #define SDSUPPORT
1816   #define MKS_MINI_12864

pins_MORPHEUS.h:

 106 #define DOGLCD_CS         PA3
 107 #define DOGLCD_A0         PB10

Для дисплея  RepRapDiscount Smart Controller

RepRapDiscount Smart Controller
RepRapDiscount Smart Controller

Configuration.h:

1500 #define SDSUPPORT
1603 #define REPRAP_DISCOUNT_SMART_CONTROLLER

pins_MORPHEUS.h:

97  #define LCD_PINS_RS PB12
98  #define LCD_PINS_ENABLE PB13
99  #define LCD_PINS_D4 PB14
100 #define LCD_PINS_D5 PA3
101 #define LCD_PINS_D6 PB10
102 #define LCD_PINS_D7 PB11

Для дисплея   OLED SSD1306 (0.96)

OLED SSD1306 (0.96)
OLED SSD1306 (0.96)

По умолчанию в прошивке стоит использовать I2C номер один, необходимо перебросить на второй.

файле Wire.cpp <Системный диск>:\Users\<Пользователь>/.platformio/packages/framework-arduinoststm32/STM32F1/libraries/Wire

заменить TwoWire Wire(1); на TwoWire Wire(2);

Но если в вашей версии платы используется первый контроллер, то менять ничего не нужно. Для моей же платы это необходимо.

Configuration.h:

1500 #define SDSUPPORT
1619 #define ULTIPANEL
1790 #define U8GLIB_SSD1306

Для дисплея (платы управления) MKS TFT

Mks TFT 32
Mks TFT 32

Configuration.h

Это не дисплей, а плата управления, и она работает с голубой таблеткой, как работал бы компьютер (внешний контроллер с дисплеем, флешкой и т.д.). Общение происходит по протоколу UART , а плата использует контроллер USART3, его необходимо активировать, но при его активации обязательно отключать SD карту и поддержку дисплея OLED SSD1306, если он был включен ранее, иначе получите ошибку при компиляции:

116 #define SERIAL_PORT_2 3
117 #define NUM_SERIAL 2

Теперь нужно донастроить кое какую переферию.

Для того что бы заработал ШИМ на нагреватели и вентиллятор обдува детали, необходимо:

В файле HAL_timers_Stm32f1.h в папке \Marlin\src\HAL\HAL_STM32F1\ 

исправить

58 #define TEMP_TIMER_NUM 2  // index of timer to use for temperature

на

58 #define TEMP_TIMER_NUM 1  // index of timer to use for temperature

Пины PB3, PB4, PA15 в моей плате управляют драйверами, но по умолчанию в проекте заняты JTAGом, поэтому его нужно отключить, чтобы задействовать эти пины для управления драйвером ШД.

Для этого в файле

<Системный диск>:\Users\<Пользователь>/.platformio/packages/framework-arduinoststm32/STM32F1/variantsgeneric_stm32f103c/board.cpp

Заменить строку

#ifndef CONFIG_MAPLE_MINI_NO_DISABLE_DEBUG

на

#ifdef CONFIG_MAPLE_MINI_NO_DISABLE_DEBUG

а в файле

<Системный диск>:\Users\<Пользователь>/.platformio/packages/framework-arduinoststm32/STM32F1/system/libmaple/stm32f1/include/series/gpio.h

заменить строку:

AFIO_DEBUG_NONE = AFIO_MAPR_SWJ_CFG_NO_JTAG_NO_SW

на:

AFIO_DEBUG_NONE = AFIO_MAPR_SWJ_CFG_NO_JTAG_SW

На этом настройка прошивки закончена, и в зависимости от конфигурации и используемого дисплея, может не хватить памяти. Например при использовании MKS TFT с управлением по UART, ничего больше делать не нужно, если использовать OLED дисплей, то в памяти нужно будет еще хранить все графические отображения символов и букв, а это сильно кушает память. Если памяти не хватило, то можно отключить что то «не очень важное»

в файле Marlim/ Configuration_adv.h можно отключить поддержку G2/G3 Arc Support

Для этого всего лишь нужно закомментировав строку:

#define ARC_SUPPORT

Ну а теперь более легкий способ, если вы собираетесь использовать мою плату, либо RABPS, с которым я делал совместимую плату, и на который опирался при разработке 32-bit своими руками, шилд RABPS.

Можно скачать уже настроенный MARLIN. Это моя сборка под MKS TFT, но я проверял его на работоспособность с oled дисплеем, SD картой и энкодером. Просто переконфигурируйте под свой дисплей. Поддержку G2/G3 Arc Support уже отключена, потребуется только перенастроить свой дисплей, ну и под свою кинематику и под свои ускорения. Но эта статья эти настройки не рассматривает, так как в интернете по этому поводу полно информации, это штатные настройки Marlin.

Скачать настроенный марлин можно здесь r13-project.ru/files/3D_PRT/Marlin-bugfix-2.0_(CUBOID_1.0).zip

И что бы не ковырять настройки Platformio, замените папку <Системный диск>:\Users\<Пользователь>\.platformio\packages\framework-arduinoststm32\STM32F1

На папку из вот этого архива r13-project.ru/files/3D_PRT/STM32F1.zip

Предварительно сохраните свою папку STM32F1, на случай, если , что то пойдет не так, иначе придется переустанавливать Platformio.

В обновленном платформио есть проблема с компиляцией, но она касается только фреймворка под STM32F1, в остальных файлах проблем я не замечал. Поэтому замена папки STM32F1 должна решить проблему компиляции, я там правил с десяток файлов, что бы их обновленный платформио начал нормально пережевывать.

Вопросы можно задать на форуме https://r13-project.ru/chat_room/index.php?topic=4.0

Или в группе в ВК Как сделать

Автор: Ryazanec13

10 комментариев для “Установка marlin на blue pill stm32f103cbt6

    1. Драйвера на виртуальный ком порт стоят? СТМ-ка прикидывается виртуальным ком портом. Я проверял, у меня работает, так же подписчик одни настраивал — у него другая проблема была, но именно через юэсби работало все.

  1. Спасибо за проделанную работу! Нашел максимальную версию марлина, которая собирается по данной инструкции — это 2.0.4.4
    У меня мат плата RABPS и экран RepRapDiscount Smart Controller, вот с ним проблемы, если питать плату от usb, то все хорошо, если питание с БП, то кракозябры на экране. Как побороть пока не нашел.
    Хотел написать на форуме, но ваша регистрация какая то жесть, либо я тупой )

    1. Смотреть помехи по питанию, смотреть откуда контроллер получает это питание. Возможно с инициальзацией дисплея проблема. Это порверить можно так — подать питание на контроллер отдельно а потом подключить голубую таблетку, получится задержка. Проблема скорее всего не программная.

      1. Я тоже сначала подумал на питание, может да, а возможно и нет )
        Проделал эксперимент, подключил RepRapDiscount Smart Controller напрямую к BluePill, чтобы исключить возможное влияние мат платы.
        Сделал простенький проект Hello world!
        Если компилить в platform.io со стандартным ядром, то все ок, если с maple, то результат непредсказуемый: крякозябры и текст не там где надо.
        Пробовал разные библиотеки LiquidCrystal, один и тот же результат.
        Кстати, последний Марлин легко компилится с актуальной версией платформы ststm32 и через repeater-host видно, что работает.
        Но с моим экраном абсолютно такая же проблема .

  2. Может кто компилировал проект под RepRapDiscount Smart Controller? Поделитесь пожалуйста а то у меня не получается? Собрал а не работает!?
    Спасибо всем кто откликнется!

  3. Только экран светится, а при нажатии на энкодер на дисплее, моргает лампочка на контроллере???

  4. Я не могу правильно скомпилировать прошивку, несмотря на то, что сделал все по буквам, у меня возникают ошибки … если бы кто-то был так добр, чтобы мне помочь, я был бы признателен заранее …

    Processing bluepill (platform: ststm32@4.4.0; framework: arduino; board: genericSTM32F103CB)
    ————————————————————————————————————————-Tool Manager: Installing tool-stlink @ ~1.10400.0
    Unpacking [####################################] 100%
    Tool Manager: tool-stlink @ 1.10400.0 has been installed!
    Tool Manager: Installing tool-stm32duino @ ~1.0.0
    Unpacking [####################################] 100%
    Tool Manager: tool-stm32duino @ 1.0.2 has been installed!
    Tool Manager: Installing tool-openocd @ ~1.1000.0
    Unpacking [####################################] 100%
    Tool Manager: tool-openocd @ 1.1000.6 has been installed!
    Verbose mode can be enabled via `-v, —verbose` option
    CONFIGURATION: https://docs.platformio.org/page/boards/ststm32/genericSTM32F103CB.html
    PLATFORM: ST STM32 (4.4.0) > STM32F103CB (20k RAM. 128k Flash)
    HARDWARE: STM32F103CBT6 72MHz, 20KB RAM, 128KB Flash
    DEBUG: Current (blackmagic) External (blackmagic, jlink, stlink)
    PACKAGES:
    — framework-arduinoststm32 2.2.180809
    — tool-openocd 1.1000.6 (10.0)
    — tool-stlink 1.10400.0 (1.4.0)
    — tool-stm32duino 1.0.2
    — toolchain-gccarmnoneeabi 1.90301.200702 (9.3.1)
    Converting Marlin.ino
    LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
    LDF Modes: Finder ~ chain, Compatibility ~ soft
    Found 33 compatible libraries
    Scanning dependencies…
    Dependency Graph
    |— 1.3.4
    | |— 1.0
    |— 0.4.0
    | |— 1.0
    | |— 1.0
    |— 2.3.5
    |— 1.0
    |— 1.0
    |—
    |— 1.0
    Building in release mode
    Compiling .pioenvs\bluepill\src\src\HAL\HAL_STM32F1\HAL.cpp.o
    Compiling .pioenvs\bluepill\src\src\HAL\HAL_STM32F1\HAL_Servo_Stm32f1.cpp.o
    Compiling .pioenvs\bluepill\src\src\HAL\HAL_STM32F1\HAL_spi_Stm32f1.cpp.o
    Compiling .pioenvs\bluepill\src\src\HAL\HAL_STM32F1\HAL_timers_Stm32f1.cpp.o
    In file included from c:\users\alf\.platformio\packages\toolchain-gccarmnoneeabi\arm-none-eabi\include\stdlib.h:19,
    from c:\users\alf\.platformio\packages\toolchain-gccarmnoneeabi\arm-none-eabi\include\c++\9.3.1\cstdlib:75,
    from c:\users\alf\.platformio\packages\toolchain-gccarmnoneeabi\arm-none-eabi\include\c++\9.3.1\stdlib.h:36,
    from C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\cores\maple/wirish.h:41,
    from C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\cores\maple/Arduino.h:30,
    from Marlin\src\HAL\HAL_STM32F1\HAL.h:41,
    from Marlin\src\HAL\HAL_STM32F1\HAL_spi_Stm32f1.cpp:39:
    C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\system\libmaple/stm32f1/include/series/gpio.h:489:15:
    error: duplicate ‘inline’
    489 | static inline __always_inline void afio_exti_select(exti_num exti, exti_cfg port) {
    | ^~~~~~~~~~~~~~~
    In file included from c:\users\alf\.platformio\packages\toolchain-gccarmnoneeabi\arm-none-eabi\include\stdlib.h:19,
    from c:\users\alf\.platformio\packages\toolchain-gccarmnoneeabi\arm-none-eabi\include\c++\9.3.1\cstdlib:75,
    from c:\users\alf\.platformio\packages\toolchain-gccarmnoneeabi\arm-none-eabi\include\c++\9.3.1\stdlib.h:36,
    from C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\cores\maple/wirish.h:41,
    from C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\cores\maple/Arduino.h:30,
    from Marlin\src\HAL\HAL_STM32F1\HAL.h:41,
    from Marlin\src\HAL\HAL_STM32F1\HAL.cpp:34:
    C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\system\libmaple/stm32f1/include/series/gpio.h:489:15:
    error: duplicate ‘inline’
    489 | static inline __always_inline void afio_exti_select(exti_num exti, exti_cfg port) {
    | ^~~~~~~~~~~~~~~
    In file included from c:\users\alf\.platformio\packages\toolchain-gccarmnoneeabi\arm-none-eabi\include\stdlib.h:19,
    from c:\users\alf\.platformio\packages\toolchain-gccarmnoneeabi\arm-none-eabi\include\c++\9.3.1\cstdlib:75,
    from c:\users\alf\.platformio\packages\toolchain-gccarmnoneeabi\arm-none-eabi\include\c++\9.3.1\stdlib.h:36,
    from C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\cores\maple/wirish.h:41,
    from C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\cores\maple/Arduino.h:30,
    from Marlin\src\HAL\HAL_STM32F1\HAL.h:41,
    from Marlin\src\HAL\HAL_STM32F1\HAL_timers_Stm32f1.cpp:33:
    C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\system\libmaple/stm32f1/include/series/gpio.h:489:15:
    error: duplicate ‘inline’
    489 | static inline __always_inline void afio_exti_select(exti_num exti, exti_cfg port) {
    | ^~~~~~~~~~~~~~~
    C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\system\libmaple\include/libmaple/nvic.h:112:15: error: duplicate ‘inline’
    112 | static inline __always_inline void nvic_globalirq_enable() {
    | ^~~~~~~~~~~~~~~
    C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\system\libmaple\include/libmaple/nvic.h:119:15: error: duplicate ‘inline’
    119 | static inline __always_inline void nvic_globalirq_disable() {
    | ^~~~~~~~~~~~~~~
    C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\system\libmaple\include/libmaple/nvic.h:112:15: error: duplicate ‘inline’
    112 | static inline __always_inline void nvic_globalirq_enable() {
    | ^~~~~~~~~~~~~~~
    C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\system\libmaple\include/libmaple/nvic.h:119:15: error: duplicate ‘inline’
    119 | static inline __always_inline void nvic_globalirq_disable() {
    | ^~~~~~~~~~~~~~~
    In file included from c:\users\alf\.platformio\packages\toolchain-gccarmnoneeabi\arm-none-eabi\include\stdlib.h:19,
    from c:\users\alf\.platformio\packages\toolchain-gccarmnoneeabi\arm-none-eabi\include\c++\9.3.1\cstdlib:75,
    from c:\users\alf\.platformio\packages\toolchain-gccarmnoneeabi\arm-none-eabi\include\c++\9.3.1\stdlib.h:36,
    from C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\cores\maple/wirish.h:41,
    from C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\cores\maple/Arduino.h:30,
    from Marlin\src\HAL\HAL_STM32F1\../../inc/../HAL/HAL_STM32F1/HAL.h:41,
    from Marlin\src\HAL\HAL_STM32F1\../../inc/MarlinConfig.h:30,
    from Marlin\src\HAL\HAL_STM32F1\HAL_Servo_Stm32f1.cpp:26:
    C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\system\libmaple/stm32f1/include/series/gpio.h:489:15:
    error: duplicate ‘inline’
    489 | static inline __always_inline void afio_exti_select(exti_num exti, exti_cfg port) {
    | ^~~~~~~~~~~~~~~
    C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\cores\maple/ext_interrupts.h:109:15: error: duplicate
    ‘inline’
    109 | static inline __always_inline void interrupts() {
    | ^~~~~~~~~~~~~~~
    C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\cores\maple/ext_interrupts.h:123:15: error: duplicate
    ‘inline’
    123 | static inline __always_inline void noInterrupts() {
    | ^~~~~~~~~~~~~~~
    C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\cores\maple/ext_interrupts.h:109:15: error: duplicate
    ‘inline’
    109 | static inline __always_inline void interrupts() {
    | ^~~~~~~~~~~~~~~
    C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\cores\maple/ext_interrupts.h:123:15: error: duplicate
    ‘inline’
    123 | static inline __always_inline void noInterrupts() {
    | ^~~~~~~~~~~~~~~
    C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\system\libmaple\include/libmaple/nvic.h:112:15: error: duplicate ‘inline’
    112 | static inline __always_inline void nvic_globalirq_enable() {
    | ^~~~~~~~~~~~~~~
    C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\system\libmaple\include/libmaple/nvic.h:119:15: error: duplicate ‘inline’
    119 | static inline __always_inline void nvic_globalirq_disable() {
    | ^~~~~~~~~~~~~~~
    C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\system\libmaple\include/libmaple/nvic.h:112:15: error: duplicate ‘inline’
    112 | static inline __always_inline void nvic_globalirq_enable() {
    | ^~~~~~~~~~~~~~~
    C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\system\libmaple\include/libmaple/nvic.h:119:15: error: duplicate ‘inline’
    119 | static inline __always_inline void nvic_globalirq_disable() {
    | ^~~~~~~~~~~~~~~
    C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\cores\maple/ext_interrupts.h:109:15: error: duplicate
    ‘inline’
    109 | static inline __always_inline void interrupts() {
    | ^~~~~~~~~~~~~~~
    C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\cores\maple/ext_interrupts.h:123:15: error: duplicate
    ‘inline’
    123 | static inline __always_inline void noInterrupts() {
    | ^~~~~~~~~~~~~~~
    C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\cores\maple/ext_interrupts.h:109:15: error: duplicate
    ‘inline’
    109 | static inline __always_inline void interrupts() {
    | ^~~~~~~~~~~~~~~
    C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\cores\maple/ext_interrupts.h:123:15: error: duplicate
    ‘inline’
    123 | static inline __always_inline void noInterrupts() {
    | ^~~~~~~~~~~~~~~
    C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\system\libmaple/stm32f1/include/series/spi.h:78:15: error: duplicate ‘inline’
    78 | static inline __always_inline void spi_gpio_cfg(uint8 as_master,
    | ^~~~~~~~~~~~~~~
    In file included from Marlin\src\HAL\HAL_STM32F1\HAL_spi_Stm32f1.cpp:44:
    C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\libraries\SPI\src/SPI.h:164:13: warning: unnecessary parentheses in declaration of ‘_spi1_this’ [-Wparentheses]
    164 | static void (*_spi1_this);
    | ^
    C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\libraries\SPI\src/SPI.h:165:13: warning: unnecessary parentheses in declaration of ‘_spi2_this’ [-Wparentheses]
    165 | static void (*_spi2_this);
    | ^
    In file included from Marlin\src\HAL\HAL_STM32F1\../../inc/MarlinConfig.h:30,
    from Marlin\src\HAL\HAL_STM32F1\HAL_Servo_Stm32f1.cpp:26:
    Marlin\src\HAL\HAL_STM32F1\../../inc/../HAL/HAL_STM32F1/HAL.h:183:12: warning: ‘int freeMemory()’ defined but not used [-Wunused-function]
    183 | static int freeMemory() {
    | ^~~~~~~~~~
    In file included from Marlin\src\HAL\HAL_STM32F1\../shared/../../core/macros.h:24,
    from Marlin\src\HAL\HAL_STM32F1\../shared/math_32bit.h:24,
    from Marlin\src\HAL\HAL_STM32F1\HAL.h:47,
    from Marlin\src\HAL\HAL_STM32F1\HAL_timers_Stm32f1.cpp:33:
    Marlin\src\HAL\HAL_STM32F1\../shared/../../core/minmax.h: In instantiation of ‘constexpr decltype ((lhs + rhs)) MIN(L, R) [with L = int; R = long unsigned int; decltype ((lhs + rhs)) = long unsigned int]’:
    Marlin\src\HAL\HAL_STM32F1\HAL_timers_Stm32f1.cpp:124:61: required from here
    Marlin\src\HAL\HAL_STM32F1\../shared/../../core/minmax.h:35:20: warning: comparison of integer expressions of different signedness: ‘const int’ and ‘const long unsigned int’ [-Wsign-compare]
    35 | return lhs < rhs ? lhs : rhs;
    | ~~~~^~~~~
    C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\libraries\SPI\src/SPI.h:165:15: warning: '_spi2_this'
    defined but not used [-Wunused-variable]
    165 | static void (*_spi2_this);
    | ^~~~~~~~~~
    C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\libraries\SPI\src/SPI.h:164:15: warning: '_spi1_this'
    defined but not used [-Wunused-variable]
    164 | static void (*_spi1_this);
    | ^~~~~~~~~~
    C:\Users\ALF\.platformio\packages\framework-arduinoststm32\STM32F1\libraries\SPI\src/SPI.h:163:16: warning: 'ff' defined
    but not used [-Wunused-variable]
    163 | static uint8_t ff = 0XFF;
    | ^~
    In file included from Marlin\src\HAL\HAL_STM32F1\HAL_spi_Stm32f1.cpp:39:
    Marlin\src\HAL\HAL_STM32F1\HAL.h:183:12: warning: 'int freeMemory()' defined but not used [-Wunused-function]
    183 | static int freeMemory() {
    | ^~~~~~~~~~
    In file included from Marlin\src\HAL\HAL_STM32F1\HAL.cpp:34:
    Marlin\src\HAL\HAL_STM32F1\HAL.h:183:12: warning: 'int freeMemory()' defined but not used [-Wunused-function]
    183 | static int freeMemory() {
    | ^~~~~~~~~~
    Marlin\src\HAL\HAL_STM32F1\HAL_timers_Stm32f1.cpp: In function 'timer_dev* get_timer_dev(int)':
    Marlin\src\HAL\HAL_STM32F1\HAL_timers_Stm32f1.cpp:217:1: warning: control reaches end of non-void function [-Wreturn-type]
    217 | }
    | ^
    In file included from Marlin\src\HAL\HAL_STM32F1\HAL_timers_Stm32f1.cpp:33:
    Marlin\src\HAL\HAL_STM32F1\HAL.h: At global scope:
    Marlin\src\HAL\HAL_STM32F1\HAL.h:183:12: warning: 'int freeMemory()' defined but not used [-Wunused-function]
    183 | static int freeMemory() {
    | ^~~~~~~~~~
    *** [.pioenvs\bluepill\src\src\HAL\HAL_STM32F1\HAL_Servo_Stm32f1.cpp.o] Error 1
    *** [.pioenvs\bluepill\src\src\HAL\HAL_STM32F1\HAL_spi_Stm32f1.cpp.o] Error 1
    *** [.pioenvs\bluepill\src\src\HAL\HAL_STM32F1\HAL.cpp.o] Error 1
    *** [.pioenvs\bluepill\src\src\HAL\HAL_STM32F1\HAL_timers_Stm32f1.cpp.o] Error 1

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *