Browse Source

🔨 Creality v4 with STM32 HAL (#21999)

- New STM32 env for Creality V4 boards.
- Separate Libmaple targets into their own `ini` file.
- Temporarily remove unusable targets from `pins.h`.

Co-authored-by: ellensp <ellensp@hotmsil.com>
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
vanilla_fb_2.0.x
ellensp 3 years ago
committed by Scott Lahteine
parent
commit
d13ffa0aba
  1. 22
      .github/workflows/test-builds.yml
  2. 82
      Marlin/src/HAL/STM32/eeprom_bl24cxx.cpp
  3. 54
      Marlin/src/HAL/STM32/eeprom_if_iic.cpp
  4. 16
      Marlin/src/libs/BL24CXX.cpp
  5. 30
      Marlin/src/pins/pins.h
  6. 2
      Marlin/src/pins/stm32f1/env_validate.h
  7. 4
      buildroot/share/PlatformIO/scripts/mks_encrypt.py
  8. 2
      buildroot/tests/STM32F103RC_btt_USB
  9. 4
      buildroot/tests/STM32F103RC_btt_USB_maple
  10. 2
      buildroot/tests/STM32F103RC_btt_maple
  11. 13
      buildroot/tests/mks_robin
  12. 22
      buildroot/tests/mks_robin_maple
  13. 41
      buildroot/tests/mks_robin_nano35
  14. 68
      buildroot/tests/mks_robin_nano35_maple
  15. 67
      buildroot/tests/mks_robin_nano35_stm32
  16. 13
      buildroot/tests/mks_robin_stm32
  17. 363
      ini/stm32f1-maple.ini
  18. 391
      ini/stm32f1.ini
  19. 1
      platformio.ini

22
.github/workflows/test-builds.yml

@ -56,29 +56,31 @@ jobs:
# STM32F1 (Maple) Environments
- STM32F103RC_btt
- STM32F103RC_btt_USB
- STM32F103RE_btt
- STM32F103RE_btt_USB
#- STM32F103RC_btt_maple
- STM32F103RC_btt_USB_maple
- STM32F103RC_fysetc
- STM32F103RC_meeb
- jgaurora_a5s_a1
- STM32F103VE_longer
- mks_robin
#- mks_robin_maple
- mks_robin_lite
- mks_robin_pro
- STM32F103RET6_creality
- mks_robin_nano35
#- mks_robin_nano35_maple
#- STM32F103RET6_creality_maple
# STM32 (ST) Environments
- STM32F103RC_btt_stm32
- STM32F103RC_btt
#- STM32F103RC_btt_USB
- STM32F103RE_btt
- STM32F103RE_btt_USB
- STM32F103RET6_creality
- STM32F407VE_black
- STM32F401VE_STEVAL
- BIGTREE_BTT002
- BIGTREE_SKR_PRO
- BIGTREE_GTR_V1_0
- mks_robin_stm32
- mks_robin
- ARMED
- FYSETC_S6
- STM32F070CB_malyan
@ -88,7 +90,7 @@ jobs:
- rumba32
- LERDGEX
- LERDGEK
- mks_robin_nano35_stm32
- mks_robin_nano35
- NUCLEO_F767ZI
- REMRAM_V1
- BTT_SKR_SE_BX

82
Marlin/src/HAL/STM32/eeprom_bl24cxx.cpp

@ -0,0 +1,82 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#ifdef STM32F1
/**
* PersistentStore for Arduino-style EEPROM interface
* with simple implementations supplied by Marlin.
*/
#include "../../inc/MarlinConfig.h"
#if ENABLED(IIC_BL24CXX_EEPROM)
#include "../shared/eeprom_if.h"
#include "../shared/eeprom_api.h"
//
// PersistentStore
//
#ifndef MARLIN_EEPROM_SIZE
#error "MARLIN_EEPROM_SIZE is required for IIC_BL24CXX_EEPROM."
#endif
size_t PersistentStore::capacity() { return MARLIN_EEPROM_SIZE; }
bool PersistentStore::access_start() { eeprom_init(); return true; }
bool PersistentStore::access_finish() { return true; }
bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) {
uint16_t written = 0;
while (size--) {
uint8_t v = *value;
uint8_t * const p = (uint8_t * const)pos;
if (v != eeprom_read_byte(p)) { // EEPROM has only ~100,000 write cycles, so only write bytes that have changed!
eeprom_write_byte(p, v);
if (++written & 0x7F) delay(2); else safe_delay(2); // Avoid triggering watchdog during long EEPROM writes
if (eeprom_read_byte(p) != v) {
SERIAL_ECHO_MSG(STR_ERR_EEPROM_WRITE);
return true;
}
}
crc16(crc, &v, 1);
pos++;
value++;
}
return false;
}
bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
do {
uint8_t * const p = (uint8_t * const)pos;
uint8_t c = eeprom_read_byte(p);
if (writing) *value = c;
crc16(crc, &c, 1);
pos++;
value++;
} while (--size);
return false;
}
#endif // IIC_BL24CXX_EEPROM
#endif // STM32F1

54
Marlin/src/HAL/STM32/eeprom_if_iic.cpp

@ -0,0 +1,54 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
/**
* Platform-independent Arduino functions for I2C EEPROM.
* Enable USE_SHARED_EEPROM if not supplied by the framework.
*/
#ifdef STM32F1
#include "../../inc/MarlinConfig.h"
#if ENABLED(IIC_BL24CXX_EEPROM)
#include "../../libs/BL24CXX.h"
#include "../shared/eeprom_if.h"
void eeprom_init() { BL24CXX::init(); }
// ------------------------
// Public functions
// ------------------------
void eeprom_write_byte(uint8_t *pos, uint8_t value) {
const unsigned eeprom_address = (unsigned)pos;
return BL24CXX::writeOneByte(eeprom_address, value);
}
uint8_t eeprom_read_byte(uint8_t *pos) {
const unsigned eeprom_address = (unsigned)pos;
return BL24CXX::readOneByte(eeprom_address);
}
#endif // IIC_BL24CXX_EEPROM
#endif // STM32F1

16
Marlin/src/libs/BL24CXX.cpp

@ -27,7 +27,12 @@
*/
#include "BL24CXX.h"
#include <libmaple/gpio.h>
#ifdef __STM32F1__
#include <libmaple/gpio.h>
#else
#include "../HAL/shared/Delay.h"
#define delay_us(n) DELAY_US(n)
#endif
#ifndef EEPROM_WRITE_DELAY
#define EEPROM_WRITE_DELAY 10
@ -37,8 +42,13 @@
#endif
// IO direction setting
#define SDA_IN() do{ PIN_MAP[IIC_EEPROM_SDA].gpio_device->regs->CRH &= 0XFFFF0FFF; PIN_MAP[IIC_EEPROM_SDA].gpio_device->regs->CRH |= 8 << 12; }while(0)
#define SDA_OUT() do{ PIN_MAP[IIC_EEPROM_SDA].gpio_device->regs->CRH &= 0XFFFF0FFF; PIN_MAP[IIC_EEPROM_SDA].gpio_device->regs->CRH |= 3 << 12; }while(0)
#ifdef __STM32F1__
#define SDA_IN() do{ PIN_MAP[IIC_EEPROM_SDA].gpio_device->regs->CRH &= 0XFFFF0FFF; PIN_MAP[IIC_EEPROM_SDA].gpio_device->regs->CRH |= 8 << 12; }while(0)
#define SDA_OUT() do{ PIN_MAP[IIC_EEPROM_SDA].gpio_device->regs->CRH &= 0XFFFF0FFF; PIN_MAP[IIC_EEPROM_SDA].gpio_device->regs->CRH |= 3 << 12; }while(0)
#elif STM32F1
#define SDA_IN() SET_INPUT(IIC_EEPROM_SDA)
#define SDA_OUT() SET_OUTPUT(IIC_EEPROM_SDA)
#endif
// IO ops
#define IIC_SCL_0() WRITE(IIC_EEPROM_SCL, LOW)

30
Marlin/src/pins/pins.h

@ -489,13 +489,13 @@
#elif MB(CHITU3D)
#include "stm32f1/pins_CHITU3D.h" // STM32F1 env:STM32F103RE
#elif MB(MKS_ROBIN)
#include "stm32f1/pins_MKS_ROBIN.h" // STM32F1 env:mks_robin env:mks_robin_stm32
#include "stm32f1/pins_MKS_ROBIN.h" // STM32F1 env:mks_robin env:mks_robin_maple
#elif MB(MKS_ROBIN_MINI)
#include "stm32f1/pins_MKS_ROBIN_MINI.h" // STM32F1 env:mks_robin_mini
#elif MB(MKS_ROBIN_NANO)
#include "stm32f1/pins_MKS_ROBIN_NANO.h" // STM32F1 env:mks_robin_nano35 env:mks_robin_nano35_stm32
#include "stm32f1/pins_MKS_ROBIN_NANO.h" // STM32F1 env:mks_robin_nano35 env:mks_robin_nano35_maple
#elif MB(MKS_ROBIN_NANO_V2)
#include "stm32f1/pins_MKS_ROBIN_NANO_V2.h" // STM32F1 env:mks_robin_nano35 env:mks_robin_nano35_stm32
#include "stm32f1/pins_MKS_ROBIN_NANO_V2.h" // STM32F1 env:mks_robin_nano35 env:mks_robin_nano35_maple
#elif MB(MKS_ROBIN_LITE)
#include "stm32f1/pins_MKS_ROBIN_LITE.h" // STM32F1 env:mks_robin_lite
#elif MB(MKS_ROBIN_LITE3)
@ -513,17 +513,17 @@
#elif MB(MKS_ROBIN_E3P)
#include "stm32f1/pins_MKS_ROBIN_E3P.h" // STM32F1 env:mks_robin_e3p
#elif MB(BTT_SKR_MINI_V1_1)
#include "stm32f1/pins_BTT_SKR_MINI_V1_1.h" // STM32F1 env:STM32F103RC_btt_stm32 env:STM32F103RC_btt_512K_stm32 env:STM32F103RC_btt_USB_stm32 env:STM32F103RC_btt_512K_USB_stm32 env:STM32F103RC_btt env:STM32F103RC_btt_512K env:STM32F103RC_btt_USB env:STM32F103RC_btt_512K_USB
#include "stm32f1/pins_BTT_SKR_MINI_V1_1.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_512K env:STM32F103RC_btt_maple env:STM32F103RC_btt_512K_maple env:STM32F103RC_btt_USB_maple env:STM32F103RC_btt_512K_USB_maple
#elif MB(BTT_SKR_MINI_E3_V1_0)
#include "stm32f1/pins_BTT_SKR_MINI_E3_V1_0.h" // STM32F1 env:STM32F103RC_btt_stm32 env:STM32F103RC_btt_512K_stm32 env:STM32F103RC_btt_USB_stm32 env:STM32F103RC_btt_512K_USB_stm32 env:STM32F103RC_btt env:STM32F103RC_btt_512K env:STM32F103RC_btt_USB env:STM32F103RC_btt_512K_USB
#include "stm32f1/pins_BTT_SKR_MINI_E3_V1_0.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_512K env:STM32F103RC_btt_maple env:STM32F103RC_btt_512K_maple env:STM32F103RC_btt_USB_maple env:STM32F103RC_btt_512K_USB_maple
#elif MB(BTT_SKR_MINI_E3_V1_2)
#include "stm32f1/pins_BTT_SKR_MINI_E3_V1_2.h" // STM32F1 env:STM32F103RC_btt_stm32 env:STM32F103RC_btt_512K_stm32 env:STM32F103RC_btt_USB_stm32 env:STM32F103RC_btt_512K_USB_stm32 env:STM32F103RC_btt env:STM32F103RC_btt_512K env:STM32F103RC_btt_USB env:STM32F103RC_btt_512K_USB
#include "stm32f1/pins_BTT_SKR_MINI_E3_V1_2.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_512K env:STM32F103RC_btt_maple env:STM32F103RC_btt_512K_maple env:STM32F103RC_btt_USB_maple env:STM32F103RC_btt_512K_USB_maple
#elif MB(BTT_SKR_MINI_E3_V2_0)
#include "stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h" // STM32F1 env:STM32F103RC_btt_stm32 env:STM32F103RC_btt_512K_stm32 env:STM32F103RC_btt_USB_stm32 env:STM32F103RC_btt_512K_USB_stm32 env:STM32F103RC_btt env:STM32F103RC_btt_512K env:STM32F103RC_btt_USB env:STM32F103RC_btt_512K_USB
#include "stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_512K env:STM32F103RC_btt_maple env:STM32F103RC_btt_512K_maple env:STM32F103RC_btt_USB_maple env:STM32F103RC_btt_512K_USB_maple
#elif MB(BTT_SKR_MINI_MZ_V1_0)
#include "stm32f1/pins_BTT_SKR_MINI_MZ_V1_0.h" // STM32F1 env:STM32F103RC_btt_stm32 env:STM32F103RC_btt_512K_stm32 env:STM32F103RC_btt_USB_stm32 env:STM32F103RC_btt_512K_USB_stm32 env:STM32F103RC_btt env:STM32F103RC_btt_512K env:STM32F103RC_btt_USB env:STM32F103RC_btt_512K_USB
#include "stm32f1/pins_BTT_SKR_MINI_MZ_V1_0.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_512K env:STM32F103RC_btt_maple env:STM32F103RC_btt_512K_maple env:STM32F103RC_btt_USB_maple env:STM32F103RC_btt_512K_USB_maple
#elif MB(BTT_SKR_E3_DIP)
#include "stm32f1/pins_BTT_SKR_E3_DIP.h" // STM32F1 env:STM32F103RE_btt env:STM32F103RE_btt_USB env:STM32F103RC_btt env:STM32F103RC_btt_512K env:STM32F103RC_btt_USB env:STM32F103RC_btt_512K_USB
#include "stm32f1/pins_BTT_SKR_E3_DIP.h" // STM32F1 env:STM32F103RE_btt env:STM32F103RE_btt_USB env:STM32F103RC_btt env:STM32F103RC_btt_512K
#elif MB(BTT_SKR_CR6)
#include "stm32f1/pins_BTT_SKR_CR6.h" // STM32F1 env:STM32F103RE_btt env:STM32F103RE_btt_USB
#elif MB(JGAURORA_A5S_A1)
@ -543,17 +543,17 @@
#elif MB(CHITU3D_V6)
#include "stm32f1/pins_CHITU3D_V6.h" // STM32F1 env:chitu_f103
#elif MB(CREALITY_V4)
#include "stm32f1/pins_CREALITY_V4.h" // STM32F1 env:STM32F103RET6_creality
#include "stm32f1/pins_CREALITY_V4.h" // STM32F1 env:STM32F103RET6_creality env:STM32F103RET6_creality_maple
#elif MB(CREALITY_V4210)
#include "stm32f1/pins_CREALITY_V4210.h" // STM32F1 env:STM32F103RET6_creality
#include "stm32f1/pins_CREALITY_V4210.h" // STM32F1 env:STM32F103RET6_creality env:STM32F103RET6_creality_maple
#elif MB(CREALITY_V427)
#include "stm32f1/pins_CREALITY_V427.h" // STM32F1 env:STM32F103RET6_creality
#include "stm32f1/pins_CREALITY_V427.h" // STM32F1 env:STM32F103RET6_creality env:STM32F103RET6_creality_maple
#elif MB(CREALITY_V431)
#include "stm32f1/pins_CREALITY_V431.h" // STM32F1 env:STM32F103RET6_creality
#include "stm32f1/pins_CREALITY_V431.h" // STM32F1 env:STM32F103RET6_creality env:STM32F103RET6_creality_maple
#elif MB(CREALITY_V452)
#include "stm32f1/pins_CREALITY_V452.h" // STM32F1 env:STM32F103RET6_creality
#include "stm32f1/pins_CREALITY_V452.h" // STM32F1 env:STM32F103RET6_creality env:STM32F103RET6_creality_maple
#elif MB(CREALITY_V453)
#include "stm32f1/pins_CREALITY_V453.h" // STM32F1 env:STM32F103RET6_creality
#include "stm32f1/pins_CREALITY_V453.h" // STM32F1 env:STM32F103RET6_creality env:STM32F103RET6_creality_maple
#elif MB(TRIGORILLA_PRO)
#include "stm32f1/pins_TRIGORILLA_PRO.h" // STM32F1 env:trigorilla_pro
#elif MB(FLY_MINI)

2
Marlin/src/pins/stm32f1/env_validate.h

@ -21,6 +21,6 @@
*/
#pragma once
#if NOT_TARGET(__STM32F1__)
#if NOT_TARGET(__STM32F1__, STM32F1)
#error "Oops! Select an STM32F1 board in 'Tools > Board.'"
#endif

4
buildroot/share/PlatformIO/scripts/mks_encrypt.py

@ -2,9 +2,9 @@
# buildroot/share/PlatformIO/scripts/mks_encrypt.py
#
# Apply encryption and save as 'build.firmware' for these environments:
# - env:mks_robin_stm32
# - env:mks_robin
# - env:flsun_hispeedv1
# - env:mks_robin_nano35_stm32
# - env:mks_robin_nano35
#
Import("env")

2
buildroot/tests/STM32F103RC_btt_USB

@ -10,7 +10,7 @@ set -e
# Build with the default configurations
#
restore_configs
opt_set MOTHERBOARD BOARD_BTT_SKR_MINI_V1_1 SERIAL_PORT 1 SERIAL_PORT_2 -1 BAUDRATE_2 115200
opt_set MOTHERBOARD BOARD_BTT_SKR_MINI_V1_1 SERIAL_PORT 1 SERIAL_PORT_2 -1
exec_test $1 $2 "BigTreeTech SKR Mini v1.1 - Basic Configuration" "$3"
# clean up

4
buildroot/tests/STM32F103RC_btt_USB_stm32 → buildroot/tests/STM32F103RC_btt_USB_maple

@ -1,6 +1,6 @@
#!/usr/bin/env bash
#
# Build tests for STM32F103RC BigTreeTech (SKR Mini v1.1)
# Build tests for STM32F103RC BigTreeTech (SKR Mini v1.1) with LibMaple STM32F1 HAL
#
# exit on first failure
@ -10,7 +10,7 @@ set -e
# Build with the default configurations
#
restore_configs
opt_set MOTHERBOARD BOARD_BTT_SKR_MINI_V1_1 SERIAL_PORT 1 SERIAL_PORT_2 -1
opt_set MOTHERBOARD BOARD_BTT_SKR_MINI_V1_1 SERIAL_PORT 1 SERIAL_PORT_2 -1 BAUDRATE_2 115200
exec_test $1 $2 "BigTreeTech SKR Mini v1.1 - Basic Configuration" "$3"
# clean up

2
buildroot/tests/STM32F103RC_btt_stm32 → buildroot/tests/STM32F103RC_btt_maple

@ -1,6 +1,6 @@
#!/usr/bin/env bash
#
# Build tests for STM32F103RC BigTreeTech (SKR Mini E3)
# Build tests for STM32F103RC BigTreeTech (SKR Mini E3) with LibMaple STM32F1 HAL
#
# exit on first failure

13
buildroot/tests/mks_robin

@ -1,22 +1,13 @@
#!/usr/bin/env bash
#
# Build tests for MKS Robin
# (STM32F1 genericSTM32F103ZE)
# Build tests for MKS Robin (HAL/STM32)
#
# exit on first failure
set -e
use_example_configs Mks/Robin
exec_test $1 $2 "MKS Robin config (FSMC Color UI)" "$3"
#
# MKS Robin LVGL FSMC
#
use_example_configs Mks/Robin
opt_disable TFT_CLASSIC_UI TFT_COLOR_UI TOUCH_SCREEN TFT_RES_320x240
opt_enable TFT_LVGL_UI TFT_RES_480x320
exec_test $1 $2 "MKS Robin nano v1.2 LVGL FSMC" "$3"
exec_test $1 $2 "MKS Robin base configuration" "$3"
# cleanup
restore_configs

22
buildroot/tests/mks_robin_maple

@ -0,0 +1,22 @@
#!/usr/bin/env bash
#
# Build tests for MKS Robin with LibMaple STM32F1 HAL
# (STM32F1 genericSTM32F103ZE)
#
# exit on first failure
set -e
use_example_configs Mks/Robin
exec_test $1 $2 "MKS Robin config (FSMC Color UI)" "$3"
#
# MKS Robin LVGL FSMC
#
use_example_configs Mks/Robin
opt_disable TFT_CLASSIC_UI TFT_COLOR_UI TOUCH_SCREEN TFT_RES_320x240
opt_enable TFT_LVGL_UI TFT_RES_480x320
exec_test $1 $2 "MKS Robin nano v1.2 LVGL FSMC" "$3"
# cleanup
restore_configs

41
buildroot/tests/mks_robin_nano35

@ -24,15 +24,24 @@ opt_disable TFT_INTERFACE_FSMC
opt_enable TFT_INTERFACE_SPI
exec_test $1 $2 "MKS Robin v2 nano Emulated DOGM SPI" "$3"
#
# MKS Robin nano v1.2 LVGL FSMC
#
# use_example_configs Mks/Robin
# opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO
# opt_disable TFT_CLASSIC_UI TFT_COLOR_UI TOUCH_SCREEN TFT_RES_320x240
# opt_enable TFT_LVGL_UI TFT_RES_480x320
# exec_test $1 $2 "MKS Robin nano v1.2 LVGL FSMC" "$3"
#
# MKS Robin v2 nano LVGL SPI
# (Robin v2 nano has no FSMC interface)
#
use_example_configs Mks/Robin
opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO_V2
opt_disable TFT_INTERFACE_FSMC TFT_COLOR_UI TOUCH_SCREEN TFT_RES_320x240 SERIAL_PORT_2
opt_enable TFT_INTERFACE_SPI TFT_LVGL_UI TFT_RES_480x320 MKS_WIFI_MODULE
exec_test $1 $2 "MKS Robin v2 nano LVGL SPI w/ WiFi" "$3"
# use_example_configs Mks/Robin
# opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO_V2
# opt_disable TFT_INTERFACE_FSMC TFT_COLOR_UI TOUCH_SCREEN TFT_RES_320x240
# opt_enable TFT_INTERFACE_SPI TFT_LVGL_UI TFT_RES_480x320
# exec_test $1 $2 "MKS Robin v2 nano LVGL SPI" "$3"
#
# MKS Robin v2 nano New Color UI 480x320 SPI
@ -42,27 +51,17 @@ use_example_configs Mks/Robin
opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO_V2
opt_disable TFT_INTERFACE_FSMC TFT_RES_320x240
opt_enable TFT_INTERFACE_SPI TFT_RES_480x320
opt_enable BINARY_FILE_TRANSFER
exec_test $1 $2 "MKS Robin v2 nano New Color UI 480x320 SPI + BINARY_FILE_TRANSFER" "$3"
exec_test $1 $2 "MKS Robin v2 nano New Color UI 480x320 SPI" "$3"
#
# MKS Robin v2 nano LVGL SPI + TMC
# (Robin v2 nano has no FSMC interface)
#
use_example_configs Mks/Robin
opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO_V2 X_DRIVER_TYPE TMC2209 Y_DRIVER_TYPE TMC2209
opt_disable TFT_INTERFACE_FSMC TFT_COLOR_UI TOUCH_SCREEN TFT_RES_320x240
opt_enable TFT_INTERFACE_SPI TFT_LVGL_UI TFT_RES_480x320
exec_test $1 $2 "MKS Robin v2 nano LVGL SPI + TMC" "$3"
#
# MKS Robin v2 nano New Color UI 480x320 SPI Without Touch Screen
#
use_example_configs Mks/Robin
opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO_V2
opt_disable TFT_INTERFACE_FSMC TFT_RES_320x240 TOUCH_SCREEN
opt_enable TFT_INTERFACE_SPI TFT_RES_480x320 TFT_COLOR_UI
exec_test $1 $2 "MKS Robin v2 nano New Color UI 480x320 SPI without TOUCH_SCREEN" "$3"
# use_example_configs Mks/Robin
# opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO_V2 X_DRIVER_TYPE TMC2209 Y_DRIVER_TYPE TMC2209
# opt_disable TFT_INTERFACE_FSMC TFT_COLOR_UI TOUCH_SCREEN TFT_RES_320x240
# opt_enable TFT_INTERFACE_SPI TFT_LVGL_UI TFT_RES_480x320
# exec_test $1 $2 "MKS Robin v2 nano LVGL SPI + TMC" "$3"
# cleanup
restore_configs

68
buildroot/tests/mks_robin_nano35_maple

@ -0,0 +1,68 @@
#!/usr/bin/env bash
#
# Build tests for MKS Robin nano with LibMaple STM32F1 HAL
# (STM32F1 genericSTM32F103VE)
#
# exit on first failure
set -e
#
# MKS Robin nano v1.2 Emulated DOGM FSMC
#
use_example_configs Mks/Robin
opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO
exec_test $1 $2 "MKS Robin nano v1.2 Emulated DOGM FSMC" "$3"
#
# MKS Robin v2 nano Emulated DOGM SPI
# (Robin v2 nano has no FSMC interface)
#
use_example_configs Mks/Robin
opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO_V2
opt_disable TFT_INTERFACE_FSMC
opt_enable TFT_INTERFACE_SPI
exec_test $1 $2 "MKS Robin v2 nano Emulated DOGM SPI" "$3"
#
# MKS Robin v2 nano LVGL SPI
# (Robin v2 nano has no FSMC interface)
#
use_example_configs Mks/Robin
opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO_V2
opt_disable TFT_INTERFACE_FSMC TFT_COLOR_UI TOUCH_SCREEN TFT_RES_320x240 SERIAL_PORT_2
opt_enable TFT_INTERFACE_SPI TFT_LVGL_UI TFT_RES_480x320 MKS_WIFI_MODULE
exec_test $1 $2 "MKS Robin v2 nano LVGL SPI w/ WiFi" "$3"
#
# MKS Robin v2 nano New Color UI 480x320 SPI
# (Robin v2 nano has no FSMC interface)
#
use_example_configs Mks/Robin
opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO_V2
opt_disable TFT_INTERFACE_FSMC TFT_RES_320x240
opt_enable TFT_INTERFACE_SPI TFT_RES_480x320
opt_enable BINARY_FILE_TRANSFER
exec_test $1 $2 "MKS Robin v2 nano New Color UI 480x320 SPI + BINARY_FILE_TRANSFER" "$3"
#
# MKS Robin v2 nano LVGL SPI + TMC
# (Robin v2 nano has no FSMC interface)
#
use_example_configs Mks/Robin
opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO_V2 X_DRIVER_TYPE TMC2209 Y_DRIVER_TYPE TMC2209
opt_disable TFT_INTERFACE_FSMC TFT_COLOR_UI TOUCH_SCREEN TFT_RES_320x240
opt_enable TFT_INTERFACE_SPI TFT_LVGL_UI TFT_RES_480x320
exec_test $1 $2 "MKS Robin v2 nano LVGL SPI + TMC" "$3"
#
# MKS Robin v2 nano New Color UI 480x320 SPI Without Touch Screen
#
use_example_configs Mks/Robin
opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO_V2
opt_disable TFT_INTERFACE_FSMC TFT_RES_320x240 TOUCH_SCREEN
opt_enable TFT_INTERFACE_SPI TFT_RES_480x320 TFT_COLOR_UI
exec_test $1 $2 "MKS Robin v2 nano New Color UI 480x320 SPI without TOUCH_SCREEN" "$3"
# cleanup
restore_configs

67
buildroot/tests/mks_robin_nano35_stm32

@ -1,67 +0,0 @@
#!/usr/bin/env bash
#
# Build tests for MKS Robin nano
# (STM32F1 genericSTM32F103VE)
#
# exit on first failure
set -e
#
# MKS Robin nano v1.2 Emulated DOGM FSMC
#
use_example_configs Mks/Robin
opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO
exec_test $1 $2 "MKS Robin nano v1.2 Emulated DOGM FSMC" "$3"
#
# MKS Robin v2 nano Emulated DOGM SPI
# (Robin v2 nano has no FSMC interface)
#
use_example_configs Mks/Robin
opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO_V2
opt_disable TFT_INTERFACE_FSMC
opt_enable TFT_INTERFACE_SPI
exec_test $1 $2 "MKS Robin v2 nano Emulated DOGM SPI" "$3"
#
# MKS Robin nano v1.2 LVGL FSMC
#
# use_example_configs Mks/Robin
# opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO
# opt_disable TFT_CLASSIC_UI TFT_COLOR_UI TOUCH_SCREEN TFT_RES_320x240
# opt_enable TFT_LVGL_UI TFT_RES_480x320
# exec_test $1 $2 "MKS Robin nano v1.2 LVGL FSMC" "$3"
#
# MKS Robin v2 nano LVGL SPI
# (Robin v2 nano has no FSMC interface)
#
# use_example_configs Mks/Robin
# opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO_V2
# opt_disable TFT_INTERFACE_FSMC TFT_COLOR_UI TOUCH_SCREEN TFT_RES_320x240
# opt_enable TFT_INTERFACE_SPI TFT_LVGL_UI TFT_RES_480x320
# exec_test $1 $2 "MKS Robin v2 nano LVGL SPI" "$3"
#
# MKS Robin v2 nano New Color UI 480x320 SPI
# (Robin v2 nano has no FSMC interface)
#
use_example_configs Mks/Robin
opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO_V2
opt_disable TFT_INTERFACE_FSMC TFT_RES_320x240
opt_enable TFT_INTERFACE_SPI TFT_RES_480x320
exec_test $1 $2 "MKS Robin v2 nano New Color UI 480x320 SPI" "$3"
#
# MKS Robin v2 nano LVGL SPI + TMC
# (Robin v2 nano has no FSMC interface)
#
# use_example_configs Mks/Robin
# opt_set MOTHERBOARD BOARD_MKS_ROBIN_NANO_V2 X_DRIVER_TYPE TMC2209 Y_DRIVER_TYPE TMC2209
# opt_disable TFT_INTERFACE_FSMC TFT_COLOR_UI TOUCH_SCREEN TFT_RES_320x240
# opt_enable TFT_INTERFACE_SPI TFT_LVGL_UI TFT_RES_480x320
# exec_test $1 $2 "MKS Robin v2 nano LVGL SPI + TMC" "$3"
# cleanup
restore_configs

13
buildroot/tests/mks_robin_stm32

@ -1,13 +0,0 @@
#!/usr/bin/env bash
#
# Build tests for MKS Robin (HAL/STM32)
#
# exit on first failure
set -e
use_example_configs Mks/Robin
exec_test $1 $2 "MKS Robin base configuration" "$3"
# cleanup
restore_configs

363
ini/stm32f1-maple.ini

@ -0,0 +1,363 @@
#
# Marlin Firmware
# PlatformIO Configuration File
#
#################################
#
# STM32F1 Architecture with LibMaple STM32F1 HAL
#
# Naming Example: STM32F103RCT6
#
# F : Foundation (sometimes High Performance F2/F4)
# 1 : Cortex M1 core
# 03 : Line/Features
# R : 64 or 66 pins (V:100, Z:144, I:176)
# C : 256KB Flash-memory (D:384KB, E:512KB, G:1024KB)
# T : LQFP package
# 6 : -40...85°C (7: ...105°C)
#
#################################
#
# HAL/STM32F1 Common Environment values
#
[common_stm32f1]
platform = ststm32@~12.1
board_build.core = maple
build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py
${common.build_flags}
-DARDUINO_ARCH_STM32
build_unflags = -std=gnu11 -std=gnu++11
src_filter = ${common.default_src_filter} +<src/HAL/STM32F1>
lib_ignore = SPI, FreeRTOS701, FreeRTOS821
lib_deps = ${common.lib_deps}
SoftwareSerialM
platform_packages = tool-stm32duino
extra_scripts = ${common.extra_scripts}
pre:buildroot/share/PlatformIO/scripts/fix_framework_weakness.py
#
# STM32F103RC
#
[common_STM32F103RC_maple]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103RC
monitor_speed = 115200
#
# MEEB_3DP (STM32F103RCT6 with 512K)
#
[env:STM32F103RC_meeb]
platform = ${common_stm32f1.platform}
extends = common_STM32F103RC_maple
board = marlin_MEEB_3DP
build_flags = ${common_stm32f1.build_flags}
-DDEBUG_LEVEL=0
-DSS_TIMER=4
-DSTM32_FLASH_SIZE=512
-DHSE_VALUE=12000000U
-DUSE_USB_COMPOSITE
-DVECT_TAB_OFFSET=0x2000
-DGENERIC_BOOTLOADER
extra_scripts = ${common_stm32f1.extra_scripts}
pre:buildroot/share/PlatformIO/scripts/STM32F1_create_variant.py
buildroot/share/PlatformIO/scripts/STM32F103RC_MEEB_3DP.py
lib_deps = ${common.lib_deps}
SoftwareSerialM
USBComposite for STM32F1@0.91
custom_marlin.NEOPIXEL_LED = Adafruit NeoPixel=https://github.com/ccccmagicboy/Adafruit_NeoPixel#meeb_3dp_use
debug_tool = stlink
upload_protocol = dfu
#
# FYSETC STM32F103RC
#
[env:STM32F103RC_fysetc]
platform = ${common_stm32f1.platform}
extends = common_STM32F103RC_maple
extra_scripts = ${common_stm32f1.extra_scripts}
buildroot/share/PlatformIO/scripts/STM32F103RC_fysetc.py
build_flags = ${common_stm32f1.build_flags} -DDEBUG_LEVEL=0
lib_ldf_mode = chain
debug_tool = stlink
upload_protocol = serial
#
# BigTree SKR Mini V1.1 / SKR mini E3 / SKR E3 DIP (STM32F103RCT6 ARM Cortex-M3)
#
# STM32F103RC_btt_maple ............. RCT6 with 256K
# STM32F103RC_btt_USB_maple ......... RCT6 with 256K (USB mass storage)
# STM32F103RC_btt_512K_maple ........ RCT6 with 512K
# STM32F103RC_btt_512K_USB_maple .... RCT6 with 512K (USB mass storage)
#
# WARNING! If you have an SKR Mini v1.1 or an SKR Mini E3 1.0 / 1.2 / 2.0 / DIP
# and experience a printer freeze, re-flash Marlin using the regular (non-512K)
# build option. 256K chips may be re-branded 512K chips, but this means the
# upper 256K is sketchy, and failure is very likely.
#
[env:STM32F103RC_btt_maple]
platform = ${common_stm32f1.platform}
extends = common_STM32F103RC_maple
board_build.address = 0x08007000
board_build.ldscript = STM32F103RC_SKR_MINI_256K.ld
extra_scripts = ${common_stm32f1.extra_scripts}
buildroot/share/PlatformIO/scripts/custom_board.py
build_flags = ${common_stm32f1.build_flags}
-DDEBUG_LEVEL=0 -DSS_TIMER=4
monitor_speed = 115200
[env:STM32F103RC_btt_USB_maple]
platform = ${common_stm32f1.platform}
extends = env:STM32F103RC_btt_maple
build_flags = ${env:STM32F103RC_btt_maple.build_flags} -DUSE_USB_COMPOSITE
lib_deps = ${env:STM32F103RC_btt_maple.lib_deps}
USBComposite for STM32F1@0.91
[env:STM32F103RC_btt_512K_maple]
platform = ${common_stm32f1.platform}
extends = env:STM32F103RC_btt_maple
board_build.ldscript = STM32F103RC_SKR_MINI_512K.ld
board_upload.maximum_size = 524288
build_flags = ${env:STM32F103RC_btt_maple.build_flags} -DSTM32_FLASH_SIZE=512
[env:STM32F103RC_btt_512K_USB_maple]
platform = ${common_stm32f1.platform}
extends = env:STM32F103RC_btt_512K_maple
build_flags = ${env:STM32F103RC_btt_512K_maple.build_flags} -DUSE_USB_COMPOSITE
lib_deps = ${env:STM32F103RC_btt_512K_maple.lib_deps}
USBComposite for STM32F1@0.91
#
# STM32F103RE with Unified STM32F1 HAL
#
[common_STM32F103RE]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103RE
monitor_speed = 115200
#
# Creality (STM32F103RET6)
#
[env:STM32F103RET6_creality_maple]
platform = ${common_stm32f1.platform}
extends = common_STM32F103RE
build_flags = ${common_stm32f1.build_flags} -DTEMP_TIMER_CHAN=4
board_build.address = 0x08007000
board_build.ldscript = creality.ld
extra_scripts = ${common_stm32f1.extra_scripts}
pre:buildroot/share/PlatformIO/scripts/random-bin.py
buildroot/share/PlatformIO/scripts/custom_board.py
debug_tool = jlink
upload_protocol = jlink
#
# STM32F103RE_btt ............. RET6
# STM32F103RE_btt_USB ......... RET6 (USB mass storage)
#
[env:STM32F103RE_btt]
platform = ${common_stm32f1.platform}
extends = common_STM32F103RE
board_build.address = 0x08007000
board_build.ldscript = STM32F103RE_SKR_E3_DIP.ld
extra_scripts = ${common_stm32f1.extra_scripts}
buildroot/share/PlatformIO/scripts/custom_board.py
build_flags = ${common_stm32f1.build_flags} -DDEBUG_LEVEL=0 -DSS_TIMER=4
debug_tool = stlink
upload_protocol = stlink
[env:STM32F103RE_btt_USB]
platform = ${common_stm32f1.platform}
extends = env:STM32F103RE_btt
build_flags = ${env:STM32F103RE_btt.build_flags} -DUSE_USB_COMPOSITE
lib_deps = ${common_stm32f1.lib_deps}
USBComposite for STM32F1@0.91
#
# Geeetech GTM32 (STM32F103VET6)
#
[env:STM32F103VE_GTM32]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103VE
build_flags = ${common_stm32f1.build_flags}
-ffunction-sections -fdata-sections -nostdlib -MMD
-DMCU_STM32F103VE -DARDUINO_GENERIC_STM32F103V -DARDUINO_ARCH_STM32F1 -DBOARD_generic_stm32f103v
-DDEBUG_LEVEL=DEBUG_NONE -DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG=1 -DVECT_TAB_ADDR=0x8000000
-DERROR_LED_PORT=GPIOE -DERROR_LED_PIN=6
upload_protocol = serial
#
# Longer 3D board in Alfawise U20 (STM32F103VET6)
#
[env:STM32F103VE_longer]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103VE
board_build.address = 0x08010000
board_build.ldscript = STM32F103VE_longer.ld
extra_scripts = ${common_stm32f1.extra_scripts}
buildroot/share/PlatformIO/scripts/custom_board.py
buildroot/share/PlatformIO/scripts/STM32F103VE_longer.py
build_flags = ${common_stm32f1.build_flags}
-DMCU_STM32F103VE -DSTM32F1xx -USERIAL_USB -DU20 -DTS_V12
build_unflags = ${common_stm32f1.build_unflags}
-DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG=1 -DERROR_LED_PORT=GPIOE -DERROR_LED_PIN=6
#
# MKS Robin Mini (STM32F103VET6)
#
[env:mks_robin_mini]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103VE
extra_scripts = ${common_stm32f1.extra_scripts}
buildroot/share/PlatformIO/scripts/mks_robin_mini.py
build_flags = ${common_stm32f1.build_flags}
-DMCU_STM32F103VE
#
# MKS Robin Nano (STM32F103VET6)
#
[env:mks_robin_nano35_maple]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103VE
extra_scripts = ${common_stm32f1.extra_scripts}
buildroot/share/PlatformIO/scripts/mks_robin_nano35.py
build_flags = ${common_stm32f1.build_flags}
-DMCU_STM32F103VE -DSS_TIMER=4
debug_tool = jlink
upload_protocol = jlink
#
# MKS Robin (STM32F103ZET6)
#
[env:mks_robin_maple]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103ZE
extra_scripts = ${common_stm32f1.extra_scripts}
buildroot/share/PlatformIO/scripts/mks_robin.py
build_flags = ${common_stm32f1.build_flags}
-DSS_TIMER=4 -DSTM32_XL_DENSITY
#
# MKS Robin Pro (STM32F103ZET6)
#
[env:mks_robin_pro]
platform = ${common_stm32f1.platform}
extends = env:mks_robin_maple
extra_scripts = ${common_stm32f1.extra_scripts}
buildroot/share/PlatformIO/scripts/mks_robin_pro.py
#
# TRIGORILLA PRO (STM32F103ZET6)
#
[env:trigorilla_pro]
platform = ${common_stm32f1.platform}
extends = env:mks_robin_maple
extra_scripts = ${common_stm32f1.extra_scripts}
#
# MKS Robin E3D (STM32F103RCT6) and
# MKS Robin E3 with TMC2209
#
[env:mks_robin_e3]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103RC
extra_scripts = ${common_stm32f1.extra_scripts}
buildroot/share/PlatformIO/scripts/mks_robin_e3.py
build_flags = ${common_stm32f1.build_flags}
-DDEBUG_LEVEL=0 -DSS_TIMER=4
#
# MKS Robin E3p (STM32F103VET6)
# - LVGL UI
#
[env:mks_robin_e3p]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103VE
extra_scripts = ${common_stm32f1.extra_scripts}
buildroot/share/PlatformIO/scripts/mks_robin_e3p.py
build_flags = ${common_stm32f1.build_flags}
-DMCU_STM32F103VE -DSS_TIMER=4
debug_tool = jlink
upload_protocol = jlink
#
# MKS Robin Lite/Lite2 (STM32F103RCT6)
#
[env:mks_robin_lite]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103RC
extra_scripts = ${common_stm32f1.extra_scripts}
buildroot/share/PlatformIO/scripts/mks_robin_lite.py
#
# MKS ROBIN LITE3 (STM32F103RCT6)
#
[env:mks_robin_lite3]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103RC
extra_scripts = ${common_stm32f1.extra_scripts}
buildroot/share/PlatformIO/scripts/mks_robin_lite3.py
#
# JGAurora A5S A1 (STM32F103ZET6)
#
[env:jgaurora_a5s_a1]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103ZE
board_build.address = 0x0800A000
board_build.ldscript = jgaurora_a5s_a1.ld
extra_scripts = ${common_stm32f1.extra_scripts}
buildroot/share/PlatformIO/scripts/custom_board.py
buildroot/share/PlatformIO/scripts/jgaurora_a5s_a1_with_bootloader.py
build_flags = ${common_stm32f1.build_flags}
-DSTM32F1xx -DSTM32_XL_DENSITY
#
# Malyan M200 (STM32F103CB)
#
[env:STM32F103CB_malyan]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = marlin_malyanM200
build_flags = ${common_stm32f1.build_flags}
-DMCU_STM32F103CB -D__STM32F1__=1 -std=c++1y -DSERIAL_USB -ffunction-sections -fdata-sections
-Wl,--gc-sections -DDEBUG_LEVEL=0 -D__MARLIN_FIRMWARE__
lib_ignore = ${common_stm32f1.lib_ignore}
SoftwareSerialM
#
# Chitu boards like Tronxy X5s (STM32F103ZET6)
#
[env:chitu_f103]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = marlin_CHITU_F103
extra_scripts = pre:buildroot/share/PlatformIO/scripts/common-dependencies.py
pre:buildroot/share/PlatformIO/scripts/STM32F1_create_variant.py
buildroot/share/PlatformIO/scripts/chitu_crypt.py
build_flags = ${common_stm32f1.build_flags}
-DSTM32F1xx -DSTM32_XL_DENSITY
build_unflags = ${common_stm32f1.build_unflags}
-DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG= -DERROR_LED_PORT=GPIOE -DERROR_LED_PIN=6
#
# Some Chitu V5 boards have a problem with GPIO init.
# Use this target if G28 or G29 are always failing.
#
[env:chitu_v5_gpio_init]
platform = ${common_stm32f1.platform}
extends = env:chitu_f103
build_flags = ${env:chitu_f103.build_flags} -DCHITU_V5_Z_MIN_BUGFIX

391
ini/stm32f1.ini

@ -5,7 +5,7 @@
#################################
#
# STM32F1 Architecture
# STM32F1 Architecture with unified STM32 HAL
#
# Naming Example: STM32F103RCT6
#
@ -32,71 +32,6 @@ build_flags = ${common.build_flags}
build_unflags = -std=gnu++11
src_filter = ${common.default_src_filter} +<src/HAL/STM32> +<src/HAL/shared/backtrace>
#
# HAL/STM32F1 Common Environment values
#
[common_stm32f1]
platform = ststm32@~12.1
board_build.core = maple
build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py
${common.build_flags}
-DARDUINO_ARCH_STM32
build_unflags = -std=gnu11 -std=gnu++11
src_filter = ${common.default_src_filter} +<src/HAL/STM32F1>
lib_ignore = SPI, FreeRTOS701, FreeRTOS821
lib_deps = ${common.lib_deps}
SoftwareSerialM
platform_packages = tool-stm32duino
extra_scripts = ${common.extra_scripts}
pre:buildroot/share/PlatformIO/scripts/fix_framework_weakness.py
#
# STM32F103RC
#
[env:STM32F103RC]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103RC
monitor_speed = 115200
#
# MEEB_3DP (STM32F103RCT6 with 512K)
#
[env:STM32F103RC_meeb]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = marlin_MEEB_3DP
build_flags = ${common_stm32f1.build_flags}
-DDEBUG_LEVEL=0
-DSS_TIMER=4
-DSTM32_FLASH_SIZE=512
-DHSE_VALUE=12000000U
-DUSE_USB_COMPOSITE
-DVECT_TAB_OFFSET=0x2000
-DGENERIC_BOOTLOADER
extra_scripts = ${common_stm32f1.extra_scripts}
pre:buildroot/share/PlatformIO/scripts/STM32F1_create_variant.py
buildroot/share/PlatformIO/scripts/STM32F103RC_MEEB_3DP.py
lib_deps = ${common.lib_deps}
SoftwareSerialM
USBComposite for STM32F1@0.91
custom_marlin.NEOPIXEL_LED = Adafruit NeoPixel=https://github.com/ccccmagicboy/Adafruit_NeoPixel#meeb_3dp_use
debug_tool = stlink
upload_protocol = dfu
#
# STM32F103RC_fysetc
#
[env:STM32F103RC_fysetc]
platform = ${common_stm32f1.platform}
extends = env:STM32F103RC
extra_scripts = ${common_stm32f1.extra_scripts}
buildroot/share/PlatformIO/scripts/STM32F103RC_fysetc.py
build_flags = ${common_stm32f1.build_flags} -DDEBUG_LEVEL=0
lib_ldf_mode = chain
debug_tool = stlink
upload_protocol = serial
#
# BigTree SKR Mini V1.1 / SKR mini E3 / SKR E3 DIP (STM32F103RCT6 ARM Cortex-M3)
#
@ -110,44 +45,7 @@ upload_protocol = serial
# build option. 256K chips may be re-branded 512K chips, but this means the
# upper 256K is sketchy, and failure is very likely.
#
[env:STM32F103RC_btt]
platform = ${common_stm32f1.platform}
extends = env:STM32F103RC
board_build.address = 0x08007000
board_build.ldscript = STM32F103RC_SKR_MINI_256K.ld
extra_scripts = ${common_stm32f1.extra_scripts}
buildroot/share/PlatformIO/scripts/custom_board.py
build_flags = ${common_stm32f1.build_flags}
-DDEBUG_LEVEL=0 -DSS_TIMER=4
monitor_speed = 115200
[env:STM32F103RC_btt_USB]
platform = ${common_stm32f1.platform}
extends = env:STM32F103RC_btt
build_flags = ${env:STM32F103RC_btt.build_flags} -DUSE_USB_COMPOSITE
lib_deps = ${env:STM32F103RC_btt.lib_deps}
USBComposite for STM32F1@0.91
[env:STM32F103RC_btt_512K]
platform = ${common_stm32f1.platform}
extends = env:STM32F103RC_btt
board_build.ldscript = STM32F103RC_SKR_MINI_512K.ld
board_upload.maximum_size=524288
build_flags = ${env:STM32F103RC_btt.build_flags} -DSTM32_FLASH_SIZE=512
[env:STM32F103RC_btt_512K_USB]
platform = ${common_stm32f1.platform}
extends = env:STM32F103RC_btt_512K
build_flags = ${env:STM32F103RC_btt_512K.build_flags} -DUSE_USB_COMPOSITE
lib_deps = ${env:STM32F103RC_btt_512K.lib_deps}
USBComposite for STM32F1@0.91
#
# STM32 HAL version of STM32F103RC_btt envs
#
[env:STM32F103RC_stm32]
[common_STM32F103RC]
platform = ${common_stm32.platform}
extends = common_stm32
board = genericSTM32F103RC
@ -159,21 +57,21 @@ extra_scripts = ${common.extra_scripts}
pre:buildroot/share/PlatformIO/scripts/generic_create_variant.py
buildroot/share/PlatformIO/scripts/stm32_bootloader.py
[env:STM32F103RC_btt_stm32]
[env:STM32F103RC_btt]
platform = ${common_stm32.platform}
extends = env:STM32F103RC_stm32
extends = common_STM32F103RC
build_flags = ${common_stm32.build_flags} -DDEBUG_LEVEL=0 -DTIMER_SERVO=TIM5
board_build.offset = 0x7000
board_build.encrypt = No
board_build.firmware = firmware.bin
board_upload.offset_address = 0x08007000
[env:STM32F103RC_btt_USB_stm32]
extends = env:STM32F103RC_btt_stm32
[env:STM32F103RC_btt_USB]
extends = env:STM32F103RC_btt
platform = ${common_stm32.platform}
platform_packages = framework-arduinoststm32@https://github.com/rhapsodyv/Arduino_Core_STM32/archive/usb-host-msc-cdc-msc-2.zip
build_unflags = ${common_stm32.build_unflags} -DUSBD_USE_CDC
build_flags = ${env:STM32F103RC_btt_stm32.build_flags} ${env:stm32_flash_drive.build_flags}
build_flags = ${env:STM32F103RC_btt.build_flags} ${env:stm32_flash_drive.build_flags}
-DUSBCON
-DUSE_USBHOST_HS
-DUSBD_IRQ_PRIO=5
@ -181,122 +79,23 @@ build_flags = ${env:STM32F103RC_btt_stm32.build_flags} ${env:stm32_flash_d
-DUSE_USB_HS_IN_FS
-DUSBD_USE_CDC_MSC
[env:STM32F103RC_btt_512K_stm32]
[env:STM32F103RC_btt_512K]
platform = ${common_stm32.platform}
extends = env:STM32F103RC_btt_stm32
extends = env:STM32F103RC_btt
board_upload.maximum_size = 524288
build_flags = ${env:STM32F103RC_btt_stm32.build_flags} -DLD_MAX_DATA_SIZE=524288 -DSTM32_FLASH_SIZE=512
build_flags = ${env:STM32F103RC_btt.build_flags} -DLD_MAX_DATA_SIZE=524288 -DSTM32_FLASH_SIZE=512
[env:STM32F103RC_btt_512K_USB_stm32]
[env:STM32F103RC_btt_512K_USB]
platform = ${common_stm32.platform}
extends = env:STM32F103RC_btt_USB_stm32
extends = env:STM32F103RC_btt_USB
board_upload.maximum_size = 524288
build_flags = ${env:STM32F103RC_btt_USB_stm32.build_flags} -DLD_MAX_DATA_SIZE=524288 -DSTM32_FLASH_SIZE=512
#
# STM32F103RE
#
[env:STM32F103RE]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103RE
monitor_speed = 115200
#
# STM32F103RE_btt ............. RET6
# STM32F103RE_btt_USB ......... RET6 (USB mass storage)
#
[env:STM32F103RE_btt]
platform = ${common_stm32f1.platform}
extends = env:STM32F103RE
board_build.address = 0x08007000
board_build.ldscript = STM32F103RE_SKR_E3_DIP.ld
extra_scripts = ${common_stm32f1.extra_scripts}
buildroot/share/PlatformIO/scripts/custom_board.py
build_flags = ${common_stm32f1.build_flags} -DDEBUG_LEVEL=0 -DSS_TIMER=4
debug_tool = stlink
upload_protocol = stlink
[env:STM32F103RE_btt_USB]
platform = ${common_stm32f1.platform}
extends = env:STM32F103RE_btt
build_flags = ${env:STM32F103RE_btt.build_flags} -DUSE_USB_COMPOSITE
lib_deps = ${common_stm32f1.lib_deps}
USBComposite for STM32F1@0.91
#
# Geeetech GTM32 (STM32F103VET6)
#
[env:STM32F103VE_GTM32]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103VE
build_flags = ${common_stm32f1.build_flags}
-ffunction-sections -fdata-sections -nostdlib -MMD
-DMCU_STM32F103VE -DARDUINO_GENERIC_STM32F103V -DARDUINO_ARCH_STM32F1 -DBOARD_generic_stm32f103v
-DDEBUG_LEVEL=DEBUG_NONE -DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG=1 -DVECT_TAB_ADDR=0x8000000
-DERROR_LED_PORT=GPIOE -DERROR_LED_PIN=6
upload_protocol = serial
#
# Longer 3D board in Alfawise U20 (STM32F103VET6)
#
[env:STM32F103VE_longer]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103VE
board_build.address = 0x08010000
board_build.ldscript = STM32F103VE_longer.ld
extra_scripts = ${common_stm32f1.extra_scripts}
buildroot/share/PlatformIO/scripts/custom_board.py
buildroot/share/PlatformIO/scripts/STM32F103VE_longer.py
build_flags = ${common_stm32f1.build_flags}
-DMCU_STM32F103VE -DSTM32F1xx -USERIAL_USB -DU20 -DTS_V12
build_unflags = ${common_stm32f1.build_unflags}
-DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG=1 -DERROR_LED_PORT=GPIOE -DERROR_LED_PIN=6
#
# MKS Robin Mini (STM32F103VET6)
#
[env:mks_robin_mini]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103VE
extra_scripts = ${common_stm32f1.extra_scripts}
buildroot/share/PlatformIO/scripts/mks_robin_mini.py
build_flags = ${common_stm32f1.build_flags}
-DMCU_STM32F103VE
#
# MKS Robin Nano (STM32F103VET6)
#
[env:mks_robin_nano35]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103VE
extra_scripts = ${common_stm32f1.extra_scripts}
buildroot/share/PlatformIO/scripts/mks_robin_nano35.py
build_flags = ${common_stm32f1.build_flags}
-DMCU_STM32F103VE -DSS_TIMER=4
debug_tool = jlink
upload_protocol = jlink
build_flags = ${env:STM32F103RC_btt_USB.build_flags} -DLD_MAX_DATA_SIZE=524288 -DSTM32_FLASH_SIZE=512
#
# MKS Robin (STM32F103ZET6)
#
[env:mks_robin]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103ZE
extra_scripts = ${common_stm32f1.extra_scripts}
buildroot/share/PlatformIO/scripts/mks_robin.py
build_flags = ${common_stm32f1.build_flags}
-DSS_TIMER=4 -DSTM32_XL_DENSITY
# MKS Robin (STM32F103ZET6)
# Uses HAL STM32 to support Marlin UI for TFT screen with optional touch panel
#
[env:mks_robin_stm32]
[env:mks_robin]
platform = ${common_stm32.platform}
extends = common_stm32
board = genericSTM32F103ZE
@ -316,154 +115,30 @@ extra_scripts = ${common.extra_scripts}
buildroot/share/PlatformIO/scripts/mks_encrypt.py
lib_deps =
#
# MKS Robin Pro (STM32F103ZET6)
#
[env:mks_robin_pro]
platform = ${common_stm32f1.platform}
extends = env:mks_robin
extra_scripts = ${common_stm32f1.extra_scripts}
buildroot/share/PlatformIO/scripts/mks_robin_pro.py
#
# TRIGORILLA PRO (STM32F103ZET6)
#
[env:trigorilla_pro]
platform = ${common_stm32f1.platform}
extends = env:mks_robin
extra_scripts = ${common_stm32f1.extra_scripts}
#
# MKS Robin E3D (STM32F103RCT6) and
# MKS Robin E3 with TMC2209
#
[env:mks_robin_e3]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103RC
extra_scripts = ${common_stm32f1.extra_scripts}
buildroot/share/PlatformIO/scripts/mks_robin_e3.py
build_flags = ${common_stm32f1.build_flags}
-DDEBUG_LEVEL=0 -DSS_TIMER=4
#
# MKS Robin E3p (STM32F103VET6)
# - LVGL UI
#
[env:mks_robin_e3p]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103VE
extra_scripts = ${common_stm32f1.extra_scripts}
buildroot/share/PlatformIO/scripts/mks_robin_e3p.py
build_flags = ${common_stm32f1.build_flags}
-DMCU_STM32F103VE -DSS_TIMER=4
debug_tool = jlink
upload_protocol = jlink
#
# MKS Robin Lite/Lite2 (STM32F103RCT6)
#
[env:mks_robin_lite]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103RC
extra_scripts = ${common_stm32f1.extra_scripts}
buildroot/share/PlatformIO/scripts/mks_robin_lite.py
#
# MKS ROBIN LITE3 (STM32F103RCT6)
#
[env:mks_robin_lite3]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103RC
extra_scripts = ${common_stm32f1.extra_scripts}
buildroot/share/PlatformIO/scripts/mks_robin_lite3.py
#
# FLY MINI (STM32F103RCT6)
#
[env:FLY_MINI]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103RC
board_build.address = 0x08005000
board_build.ldscript = fly_mini.ld
extra_scripts = ${common_stm32f1.extra_scripts}
buildroot/share/PlatformIO/scripts/custom_board.py
build_flags = ${common_stm32f1.build_flags}
-DDEBUG_LEVEL=0 -DSS_TIMER=4
#
# JGAurora A5S A1 (STM32F103ZET6)
#
[env:jgaurora_a5s_a1]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103ZE
board_build.address = 0x0800A000
board_build.ldscript = jgaurora_a5s_a1.ld
extra_scripts = ${common_stm32f1.extra_scripts}
buildroot/share/PlatformIO/scripts/custom_board.py
buildroot/share/PlatformIO/scripts/jgaurora_a5s_a1_with_bootloader.py
build_flags = ${common_stm32f1.build_flags}
-DSTM32F1xx -DSTM32_XL_DENSITY
#
# Malyan M200 (STM32F103CB)
#
[env:STM32F103CB_malyan]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = marlin_malyanM200
build_flags = ${common_stm32f1.build_flags}
-DMCU_STM32F103CB -D__STM32F1__=1 -std=c++1y -DSERIAL_USB -ffunction-sections -fdata-sections
-Wl,--gc-sections -DDEBUG_LEVEL=0 -D__MARLIN_FIRMWARE__
lib_ignore = ${common_stm32f1.lib_ignore}
SoftwareSerialM
#
# Chitu boards like Tronxy X5s (STM32F103ZET6)
#
[env:chitu_f103]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = marlin_CHITU_F103
extra_scripts = pre:buildroot/share/PlatformIO/scripts/common-dependencies.py
pre:buildroot/share/PlatformIO/scripts/STM32F1_create_variant.py
buildroot/share/PlatformIO/scripts/chitu_crypt.py
build_flags = ${common_stm32f1.build_flags}
-DSTM32F1xx -DSTM32_XL_DENSITY
build_unflags = ${common_stm32f1.build_unflags}
-DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG= -DERROR_LED_PORT=GPIOE -DERROR_LED_PIN=6
#
# Some Chitu V5 boards have a problem with GPIO init.
# Use this target if G28 or G29 are always failing.
#
[env:chitu_v5_gpio_init]
platform = ${common_stm32f1.platform}
extends = env:chitu_f103
build_flags = ${env:chitu_f103.build_flags} -DCHITU_V5_Z_MIN_BUGFIX
#
# Creality (STM32F103RET6)
#
[env:STM32F103RET6_creality]
platform = ${env:STM32F103RE.platform}
extends = env:STM32F103RE
build_flags = ${env:STM32F103RE.build_flags} -DTEMP_TIMER_CHAN=4
board_build.address = 0x08007000
board_build.ldscript = creality.ld
extra_scripts = ${env:STM32F103RE.extra_scripts}
platform = ${common_stm32.platform}
extends = common_stm32
build_flags = ${common_stm32.build_flags} -DMCU_STM32F103RE -DHAL_SD_MODULE_ENABLED -DSS_TIMER=4 -DENABLE_HWSERIAL3 -DTRANSFER_CLOCK_DIV=8
board = genericSTM32F103RE
monitor_speed = 115200
board_build.core = stm32
board_build.variant = MARLIN_F103Rx
board_build.offset = 0x7000
board_build.ldscript = ldscript.ld
board_upload.offset_address = 0x08007000
build_unflags = ${common_stm32.build_unflags} -DUSBCON -DUSBD_USE_CDC
extra_scripts = ${common.extra_scripts}
pre:buildroot/share/PlatformIO/scripts/generic_create_variant.py
pre:buildroot/share/PlatformIO/scripts/random-bin.py
buildroot/share/PlatformIO/scripts/custom_board.py
debug_tool = jlink
upload_protocol = jlink
buildroot/share/PlatformIO/scripts/stm32_bootloader.py
debug_tool = jlink
upload_protocol = jlink
#
# FLSUN QQS Pro (STM32F103VET6) using hal STM32
# FLSUN QQS Pro (STM32F103VET6)
# board Hispeedv1
#
[env:flsun_hispeedv1]
@ -485,9 +160,9 @@ extra_scripts = ${common.extra_scripts}
buildroot/share/PlatformIO/scripts/mks_encrypt.py
#
# MKS Robin Nano V1.2 and V2 using hal STM32
# MKS Robin Nano V1.2 and V2
#
[env:mks_robin_nano35_stm32]
[env:mks_robin_nano35]
platform = ${common_stm32.platform}
extends = common_stm32
build_flags = ${common_stm32.build_flags} -DMCU_STM32F103VE -DSS_TIMER=4 -DENABLE_HWSERIAL3

1
platformio.ini

@ -24,6 +24,7 @@ extra_configs =
ini/native.ini
ini/samd51.ini
ini/stm32f0.ini
ini/stm32f1-maple.ini
ini/stm32f1.ini
ini/stm32f4.ini
ini/stm32f7.ini

Loading…
Cancel
Save