diff --git a/Marlin/src/HAL/HAL_STM32F1/HAL.cpp b/Marlin/src/HAL/HAL_STM32F1/HAL.cpp
index ce9eb92b14..cd5c5553c4 100644
--- a/Marlin/src/HAL/HAL_STM32F1/HAL.cpp
+++ b/Marlin/src/HAL/HAL_STM32F1/HAL.cpp
@@ -104,6 +104,12 @@ uint8_t adc_pins[] = {
   #if HAS_TEMP_ADC_0
     TEMP_0_PIN,
   #endif
+  #if HAS_HEATED_BED
+    TEMP_BED_PIN,
+  #endif
+  #if HAS_HEATED_CHAMBER
+    TEMP_CHAMBER_PIN,
+  #endif
   #if HAS_TEMP_ADC_1
     TEMP_1_PIN,
   #endif
@@ -116,8 +122,8 @@ uint8_t adc_pins[] = {
   #if HAS_TEMP_ADC_4
     TEMP_4_PIN,
   #endif
-  #if HAS_HEATED_BED
-    TEMP_BED_PIN,
+  #if HAS_TEMP_ADC_5
+    TEMP_5_PIN,
   #endif
   #if ENABLED(FILAMENT_WIDTH_SENSOR)
     FILWIDTH_PIN,
@@ -128,6 +134,12 @@ enum TEMP_PINS : char {
   #if HAS_TEMP_ADC_0
     TEMP_0,
   #endif
+  #if HAS_HEATED_BED
+    TEMP_BED,
+  #endif
+  #if HAS_HEATED_CHAMBER
+    TEMP_CHAMBER,
+  #endif
   #if HAS_TEMP_ADC_1
     TEMP_1,
   #endif
@@ -140,8 +152,8 @@ enum TEMP_PINS : char {
   #if HAS_TEMP_ADC_4
     TEMP_4,
   #endif
-  #if HAS_HEATED_BED
-    TEMP_BED,
+  #if HAS_TEMP_ADC_5
+    TEMP_5,
   #endif
   #if ENABLED(FILAMENT_WIDTH_SENSOR)
     FILWIDTH,
@@ -268,6 +280,12 @@ void HAL_adc_start_conversion(const uint8_t adc_pin) {
     #if HAS_TEMP_ADC_0
       case TEMP_0_PIN: pin_index = TEMP_0; break;
     #endif
+    #if HAS_HEATED_BED
+      case TEMP_BED_PIN: pin_index = TEMP_BED; break;
+    #endif
+    #if HAS_HEATED_CHAMBER
+      case TEMP_CHAMBER_PIN: pin_index = TEMP_CHAMBER; break;
+    #endif
     #if HAS_TEMP_ADC_1
       case TEMP_1_PIN: pin_index = TEMP_1; break;
     #endif
@@ -280,8 +298,8 @@ void HAL_adc_start_conversion(const uint8_t adc_pin) {
     #if HAS_TEMP_ADC_4
       case TEMP_4_PIN: pin_index = TEMP_4; break;
     #endif
-    #if HAS_HEATED_BED
-      case TEMP_BED_PIN: pin_index = TEMP_BED; break;
+    #if HAS_TEMP_ADC_5
+      case TEMP_5_PIN: pin_index = TEMP_5; break;
     #endif
     #if ENABLED(FILAMENT_WIDTH_SENSOR)
       case FILWIDTH_PIN: pin_index = FILWIDTH; break;
diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h
index f7dd0446c2..1b383e23f3 100644
--- a/Marlin/src/inc/Conditionals_post.h
+++ b/Marlin/src/inc/Conditionals_post.h
@@ -914,6 +914,7 @@
 #define HAS_TEMP_ADC_2 HAS_ADC_TEST(2)
 #define HAS_TEMP_ADC_3 HAS_ADC_TEST(3)
 #define HAS_TEMP_ADC_4 HAS_ADC_TEST(4)
+#define HAS_TEMP_ADC_5 HAS_ADC_TEST(5)
 #define HAS_TEMP_ADC_BED HAS_ADC_TEST(BED)
 #define HAS_TEMP_ADC_CHAMBER HAS_ADC_TEST(CHAMBER)
 
@@ -927,6 +928,7 @@
 #define HAS_HEATER_2 (PIN_EXISTS(HEATER_2))
 #define HAS_HEATER_3 (PIN_EXISTS(HEATER_3))
 #define HAS_HEATER_4 (PIN_EXISTS(HEATER_4))
+#define HAS_HEATER_5 (PIN_EXISTS(HEATER_5))
 #define HAS_HEATER_BED (PIN_EXISTS(HEATER_BED))
 
 // Shorthand for common combinations
@@ -1106,6 +1108,10 @@
   #define HEATER_4_INVERTING false
 #endif
 
+#if HAS_HEATER_5 && !defined(HEATER_5_INVERTING)
+  #define HEATER_5_INVERTING false
+#endif
+
 /**
  * Helper Macros for heaters and extruder fan
  */
diff --git a/Marlin/src/lcd/menu/menu_info.cpp b/Marlin/src/lcd/menu/menu_info.cpp
index f5a84b093b..eb58b3a56b 100644
--- a/Marlin/src/lcd/menu/menu_info.cpp
+++ b/Marlin/src/lcd/menu/menu_info.cpp
@@ -143,6 +143,15 @@ void menu_info_thermistors() {
     STATIC_ITEM(MSG_INFO_MAX_TEMP ": " STRINGIFY(HEATER_4_MAXTEMP), false);
   #endif
 
+  #if TEMP_SENSOR_5 != 0
+    #undef THERMISTOR_ID
+    #define THERMISTOR_ID TEMP_SENSOR_5
+    #include "../thermistornames.h"
+    STATIC_ITEM("T5: " THERMISTOR_NAME, false, true);
+    STATIC_ITEM(MSG_INFO_MIN_TEMP ": " STRINGIFY(HEATER_5_MINTEMP), false);
+    STATIC_ITEM(MSG_INFO_MAX_TEMP ": " STRINGIFY(HEATER_5_MAXTEMP), false);
+  #endif
+
   #if HAS_HEATED_BED
     #undef THERMISTOR_ID
     #define THERMISTOR_ID TEMP_SENSOR_BED
diff --git a/Marlin/src/lcd/menu/menu_temperature.cpp b/Marlin/src/lcd/menu/menu_temperature.cpp
index 79ad3f0d61..40e16405eb 100644
--- a/Marlin/src/lcd/menu/menu_temperature.cpp
+++ b/Marlin/src/lcd/menu/menu_temperature.cpp
@@ -422,7 +422,7 @@ void menu_temperature() {
     //
     // Preheat for Material 1 and 2
     //
-    #if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 || TEMP_SENSOR_4 != 0 || HAS_HEATED_BED
+    #if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 || TEMP_SENSOR_4 != 0 || TEMP_SENSOR_5 != 0 || HAS_HEATED_BED
       MENU_ITEM(submenu, MSG_PREHEAT_1, menu_preheat_m1);
       MENU_ITEM(submenu, MSG_PREHEAT_2, menu_preheat_m2);
     #else
diff --git a/Marlin/src/module/thermistor/thermistors.h b/Marlin/src/module/thermistor/thermistors.h
index 7f9357233b..b56052e9b8 100644
--- a/Marlin/src/module/thermistor/thermistors.h
+++ b/Marlin/src/module/thermistor/thermistors.h
@@ -191,6 +191,16 @@
   #define HEATER_4_TEMPTABLE_LEN 0
 #endif
 
+#if THERMISTORHEATER_5
+  #define HEATER_5_TEMPTABLE TT_NAME(THERMISTORHEATER_5)
+  #define HEATER_5_TEMPTABLE_LEN COUNT(HEATER_5_TEMPTABLE)
+#elif defined(HEATER_5_USES_THERMISTOR)
+  #error "No heater 5 thermistor table specified"
+#else
+  #define HEATER_5_TEMPTABLE NULL
+  #define HEATER_5_TEMPTABLE_LEN 0
+#endif
+
 #ifdef THERMISTORBED
   #define BEDTEMPTABLE TT_NAME(THERMISTORBED)
   #define BEDTEMPTABLE_LEN COUNT(BEDTEMPTABLE)
diff --git a/Marlin/src/pins/pinsDebug_list.h b/Marlin/src/pins/pinsDebug_list.h
index 07c58c7069..533a945447 100644
--- a/Marlin/src/pins/pinsDebug_list.h
+++ b/Marlin/src/pins/pinsDebug_list.h
@@ -77,6 +77,9 @@
 #if PIN_EXISTS(TEMP_4) && TEMP_4_PIN < NUM_ANALOG_INPUTS
   REPORT_NAME_ANALOG(__LINE__, TEMP_4_PIN)
 #endif
+#if PIN_EXISTS(TEMP_5) && TEMP_5_PIN < NUM_ANALOG_INPUTS
+  REPORT_NAME_ANALOG(__LINE__, TEMP_5_PIN)
+#endif
 #if PIN_EXISTS(TEMP_BED) && TEMP_BED_PIN < NUM_ANALOG_INPUTS
   REPORT_NAME_ANALOG(__LINE__, TEMP_BED_PIN)
 #endif