diff --git a/Marlin/Marlin.h b/Marlin/Marlin.h
index 2159fb01924280a6bfe4145a537cc1436bb9e7cb..5c698834b7adf2885ea790f1fe7fa996f6ef782e 100644
--- a/Marlin/Marlin.h
+++ b/Marlin/Marlin.h
@@ -286,7 +286,7 @@ extern float sw_endstop_min[3]; // axis[n].sw_endstop_min
 extern float sw_endstop_max[3]; // axis[n].sw_endstop_max
 extern bool axis_known_position[3]; // axis[n].is_known
 extern bool axis_homed[3]; // axis[n].is_homed
-extern bool wait_for_heatup;
+extern volatile bool wait_for_heatup;
 
 // GCode support for external objects
 bool code_seen(char);
diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index 3d8ba8443230ee3a97ff62f6b16a45cc5d617470..fffff449bc5fae1ed022fbe5ecf142c3dd13a209 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -332,7 +332,7 @@ uint8_t active_extruder = 0;
 // Relative Mode. Enable with G91, disable with G90.
 static bool relative_mode = false;
 
-bool wait_for_heatup = true;
+volatile bool wait_for_heatup = true;
 
 const char errormagic[] PROGMEM = "Error:";
 const char echomagic[] PROGMEM = "echo:";
diff --git a/Marlin/ultralcd.h b/Marlin/ultralcd.h
index cc0a10fd3be3f10e2ba67ae4eee7c8e46ffe39c4..40b09606ae272c8d516417e8314aef275d732392 100644
--- a/Marlin/ultralcd.h
+++ b/Marlin/ultralcd.h
@@ -95,8 +95,6 @@
   extern int absPreheatHPBTemp;
   extern int absPreheatFanSpeed;
 
-  extern bool wait_for_heatup;
-
   #if ENABLED(FILAMENT_LCD_DISPLAY)
     extern millis_t previous_lcd_status_ms;
   #endif