From d3a84bc584875dc3e022f2d9fd8065207caef204 Mon Sep 17 00:00:00 2001
From: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com>
Date: Mon, 18 Oct 2021 00:51:01 -0700
Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=20BTT=20Octopus=20Pro=20V1.0=20(ST?=
 =?UTF-8?q?M32F446ZET6)=20(#22971)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Marlin/src/core/boards.h                      | 39 ++++++++++---------
 Marlin/src/pins/pins.h                        |  2 +
 .../pins/stm32f4/pins_BTT_OCTOPUS_PRO_V1_0.h  | 39 +++++++++++++++++++
 .../src/pins/stm32f4/pins_BTT_OCTOPUS_V1_0.h  |  9 +++++
 .../src/pins/stm32f4/pins_BTT_OCTOPUS_V1_1.h  |  9 +++++
 .../pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h | 11 +++---
 ini/stm32f4.ini                               |  4 +-
 7 files changed, 86 insertions(+), 27 deletions(-)
 create mode 100644 Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_PRO_V1_0.h

diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h
index dd08f6a1b49..86fe8788370 100644
--- a/Marlin/src/core/boards.h
+++ b/Marlin/src/core/boards.h
@@ -384,25 +384,26 @@
 #define BOARD_BTT_GTR_V1_0            4214  // BigTreeTech GTR v1.0 (STM32F407IGT)
 #define BOARD_BTT_OCTOPUS_V1_0        4215  // BigTreeTech Octopus v1.0 (STM32F446ZET6)
 #define BOARD_BTT_OCTOPUS_V1_1        4216  // BigTreeTech Octopus v1.1 (STM32F446ZET6)
-#define BOARD_LERDGE_K                4217  // Lerdge K (STM32F407ZG)
-#define BOARD_LERDGE_S                4218  // Lerdge S (STM32F407VE)
-#define BOARD_LERDGE_X                4219  // Lerdge X (STM32F407VE)
-#define BOARD_VAKE403D                4220  // VAkE 403D (STM32F446VET6)
-#define BOARD_FYSETC_S6               4221  // FYSETC S6 (STM32F446VET6)
-#define BOARD_FYSETC_S6_V2_0          4222  // FYSETC S6 v2.0 (STM32F446VET6)
-#define BOARD_FYSETC_SPIDER           4223  // FYSETC Spider (STM32F446VET6)
-#define BOARD_FLYF407ZG               4224  // FLYmaker FLYF407ZG (STM32F407ZG)
-#define BOARD_MKS_ROBIN2              4225  // MKS_ROBIN2 (STM32F407ZE)
-#define BOARD_MKS_ROBIN_PRO_V2        4226  // MKS Robin Pro V2 (STM32F407VE)
-#define BOARD_MKS_ROBIN_NANO_V3       4227  // MKS Robin Nano V3 (STM32F407VG)
-#define BOARD_MKS_MONSTER8            4228  // MKS Monster8 (STM32F407VGT6)
-#define BOARD_ANET_ET4                4229  // ANET ET4 V1.x (STM32F407VGT6)
-#define BOARD_ANET_ET4P               4230  // ANET ET4P V1.x (STM32F407VGT6)
-#define BOARD_FYSETC_CHEETAH_V20      4231  // FYSETC Cheetah V2.0
-#define BOARD_TH3D_EZBOARD_LITE_V2    4232  // TH3D EZBoard Lite v2.0
-#define BOARD_INDEX_REV03             4233  // Index PnP Controller REV03 (STM32F407VET6/VGT6)
-#define BOARD_MKS_ROBIN_NANO_V1_3_F4  4234  // MKS Robin Nano V1.3 and MKS Robin Nano-S V1.3 (STM32F407VET6)
-#define BOARD_MKS_EAGLE               4235  // MKS Eagle (STM32F407VET6)
+#define BOARD_BTT_OCTOPUS_PRO_V1_0    4217  // BigTreeTech Octopus Pro v1.0 (STM32F446ZET6/STM32F429ZGT6)
+#define BOARD_LERDGE_K                4218  // Lerdge K (STM32F407ZG)
+#define BOARD_LERDGE_S                4219  // Lerdge S (STM32F407VE)
+#define BOARD_LERDGE_X                4220  // Lerdge X (STM32F407VE)
+#define BOARD_VAKE403D                4221  // VAkE 403D (STM32F446VET6)
+#define BOARD_FYSETC_S6               4222  // FYSETC S6 (STM32F446VET6)
+#define BOARD_FYSETC_S6_V2_0          4223  // FYSETC S6 v2.0 (STM32F446VET6)
+#define BOARD_FYSETC_SPIDER           4224  // FYSETC Spider (STM32F446VET6)
+#define BOARD_FLYF407ZG               4225  // FLYmaker FLYF407ZG (STM32F407ZG)
+#define BOARD_MKS_ROBIN2              4226  // MKS_ROBIN2 (STM32F407ZE)
+#define BOARD_MKS_ROBIN_PRO_V2        4227  // MKS Robin Pro V2 (STM32F407VE)
+#define BOARD_MKS_ROBIN_NANO_V3       4228  // MKS Robin Nano V3 (STM32F407VG)
+#define BOARD_MKS_MONSTER8            4229  // MKS Monster8 (STM32F407VGT6)
+#define BOARD_ANET_ET4                4230  // ANET ET4 V1.x (STM32F407VGT6)
+#define BOARD_ANET_ET4P               4231  // ANET ET4P V1.x (STM32F407VGT6)
+#define BOARD_FYSETC_CHEETAH_V20      4232  // FYSETC Cheetah V2.0
+#define BOARD_TH3D_EZBOARD_LITE_V2    4233  // TH3D EZBoard Lite v2.0
+#define BOARD_INDEX_REV03             4234  // Index PnP Controller REV03 (STM32F407VET6/VGT6)
+#define BOARD_MKS_ROBIN_NANO_V1_3_F4  4235  // MKS Robin Nano V1.3 and MKS Robin Nano-S V1.3 (STM32F407VET6)
+#define BOARD_MKS_EAGLE               4236  // MKS Eagle (STM32F407VET6)
 
 //
 // ARM Cortex M7
diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h
index 111038d875c..6e5a2e51eb3 100644
--- a/Marlin/src/pins/pins.h
+++ b/Marlin/src/pins/pins.h
@@ -615,6 +615,8 @@
   #include "stm32f4/pins_BTT_OCTOPUS_V1_0.h"    // STM32F4                                env:BIGTREE_OCTOPUS_V1 env:BIGTREE_OCTOPUS_V1_USB
 #elif MB(BTT_OCTOPUS_V1_1)
   #include "stm32f4/pins_BTT_OCTOPUS_V1_1.h"    // STM32F4                                env:BIGTREE_OCTOPUS_V1 env:BIGTREE_OCTOPUS_V1_USB
+#elif MB(BTT_OCTOPUS_PRO_V1_0)
+  #include "stm32f4/pins_BTT_OCTOPUS_PRO_V1_0.h" // STM32F4                               env:BIGTREE_OCTOPUS_V1 env:BIGTREE_OCTOPUS_V1_USB
 #elif MB(LERDGE_K)
   #include "stm32f4/pins_LERDGE_K.h"            // STM32F4                                env:LERDGEK env:LERDGEK_usb_flash_drive
 #elif MB(LERDGE_S)
diff --git a/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_PRO_V1_0.h b/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_PRO_V1_0.h
new file mode 100644
index 00000000000..a93ed68201b
--- /dev/null
+++ b/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_PRO_V1_0.h
@@ -0,0 +1,39 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2021 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/>.
+ *
+ */
+#pragma once
+
+#define BOARD_INFO_NAME "BTT OCTOPUS PRO V1.0"
+
+//
+// Temperature Sensors
+//
+#if TEMP_SENSOR_0 == -5
+  #define TEMP_0_CS_PIN                     PF8   // Max31865 CS
+  #define TEMP_0_SCK_PIN                    PA5
+  #define TEMP_0_MISO_PIN                   PA6
+  #define TEMP_0_MOSI_PIN                   PA7
+  #define SOFTWARE_SPI                            // Max31865 and LCD SD share a set of SPIs, Set SD to softwareSPI for Max31865
+#else
+  #define TEMP_0_PIN                        PF4   // TH0
+#endif
+
+#include "pins_BTT_OCTOPUS_V1_common.h"
diff --git a/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_0.h b/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_0.h
index e51e0a24bb0..c2f02d0d8ef 100644
--- a/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_0.h
+++ b/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_0.h
@@ -23,4 +23,13 @@
 
 #define BOARD_INFO_NAME "BTT OCTOPUS V1.0"
 
+//
+// Temperature Sensors
+//
+#if TEMP_SENSOR_0 == 20
+  #define TEMP_0_PIN                        PF8   // PT100 Connector
+#else
+  #define TEMP_0_PIN                        PF4   // TH0
+#endif
+
 #include "pins_BTT_OCTOPUS_V1_common.h"
diff --git a/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_1.h b/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_1.h
index 93240c16b8f..daa0e8fbfde 100644
--- a/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_1.h
+++ b/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_1.h
@@ -23,4 +23,13 @@
 
 #define BOARD_INFO_NAME "BTT OCTOPUS V1.1"
 
+//
+// Temperature Sensors
+//
+#if TEMP_SENSOR_0 == 20
+  #define TEMP_0_PIN                        PF8   // PT100 Connector
+#else
+  #define TEMP_0_PIN                        PF4   // TH0
+#endif
+
 #include "pins_BTT_OCTOPUS_V1_common.h"
diff --git a/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h b/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h
index 7ab8012d88c..655e65da47a 100644
--- a/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h
+++ b/Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h
@@ -61,7 +61,11 @@
 // Z Probe (when not Z_MIN_PIN)
 //
 #ifndef Z_MIN_PROBE_PIN
-  #define Z_MIN_PROBE_PIN                   PB7
+  #if ENABLED(BLTOUCH)
+    #define Z_MIN_PROBE_PIN                 PB7
+  #else
+    #define Z_MIN_PROBE_PIN                 PC5   // Probe (Proximity switch) port
+  #endif
 #endif
 
 //
@@ -235,11 +239,6 @@
 // Temperature Sensors
 //
 #define TEMP_BED_PIN                        PF3   // TB
-#if TEMP_SENSOR_0 == 20
-  #define TEMP_0_PIN                        PF8   // PT100 Connector
-#else
-  #define TEMP_0_PIN                        PF4   // TH0
-#endif
 #define TEMP_1_PIN                          PF5   // TH1
 #define TEMP_2_PIN                          PF6   // TH2
 #define TEMP_3_PIN                          PF7   // TH3
diff --git a/ini/stm32f4.ini b/ini/stm32f4.ini
index 4544bf56a04..f4968a55e4a 100644
--- a/ini/stm32f4.ini
+++ b/ini/stm32f4.ini
@@ -231,7 +231,7 @@ build_flags       = ${env:BIGTREE_SKR_2.build_flags} -DUSBD_USE_CDC_MSC
 build_unflags     = ${env:BIGTREE_SKR_2.build_unflags} -DUSBD_USE_CDC
 
 #
-# BigTreeTech Octopus V1.0/1.1 (STM32F446ZET6 ARM Cortex-M4)
+# BigTreeTech Octopus V1.0/1.1 / Octopus Pro V1.0 (STM32F446ZET6 ARM Cortex-M4)
 #
 [env:BIGTREE_OCTOPUS_V1]
 platform           = ${common_stm32.platform}
@@ -242,7 +242,7 @@ build_flags        = ${stm32_variant.build_flags}
                      -DSTM32F446_5VX -DUSE_USB_HS_IN_FS
 
 #
-# BigTreeTech Octopus V1.0/1.1 (STM32F446ZET6 ARM Cortex-M4) with USB Flash Drive Support
+# BigTreeTech Octopus V1.0/1.1 / Octopus Pro V1.0 (STM32F446ZET6 ARM Cortex-M4) with USB Flash Drive Support
 #
 [env:BIGTREE_OCTOPUS_V1_USB]
 platform          = ${common_stm32.platform}