diff --git a/Marlin/Marlin.h b/Marlin/Marlin.h
index 3aa0aff67f1b44d2e41fd476728e5e457e8d97ee..9f289f208b550b650a2a79a01ff0b7323113fd84 100644
--- a/Marlin/Marlin.h
+++ b/Marlin/Marlin.h
@@ -215,7 +215,6 @@ void manage_inactivity(bool ignore_stepper_queue = false);
 /**
  * The axis order in all axis related arrays is X, Y, Z, E
  */
-#define NUM_AXIS 4
 #define _AXIS(AXIS) AXIS ##_AXIS
 
 void enable_all_steppers();
diff --git a/Marlin/MarlinSerial.cpp b/Marlin/MarlinSerial.cpp
index 304b3be07935e7983a15a74f9f9ca0d9d6e6d9e0..9ef900265b681bfc9f8a202edcd54096141a712e 100644
--- a/Marlin/MarlinSerial.cpp
+++ b/Marlin/MarlinSerial.cpp
@@ -29,10 +29,12 @@
   Modified 14 February 2016 by Andreas Hardtung (added tx buffer)
 */
 
-#include "Marlin.h"
 #include "MarlinSerial.h"
+
 #include "stepper.h"
 
+#include "Marlin.h"
+
 #ifndef USBCON
 // this next line disables the entire HardwareSerial.cpp,
 // this is so I can support Attiny series and any other chip without a UART
diff --git a/Marlin/MarlinSerial.h b/Marlin/MarlinSerial.h
index a5e2ee71dbf49762cada02ef9670b7543e32d92f..e7617522846f392489671d12ba79121c5f42fec3 100644
--- a/Marlin/MarlinSerial.h
+++ b/Marlin/MarlinSerial.h
@@ -31,13 +31,8 @@
 
 #ifndef MarlinSerial_h
 #define MarlinSerial_h
-#include "Marlin.h"
-
-#ifndef CRITICAL_SECTION_START
-  #define CRITICAL_SECTION_START  unsigned char _sreg = SREG; cli();
-  #define CRITICAL_SECTION_END    SREG = _sreg;
-#endif
 
+#include "MarlinConfig.h"
 
 #ifndef SERIAL_PORT
   #define SERIAL_PORT 0
diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index ccffdf7bbd8aa7bed30bb56df568acd8ad86eab1..84493cf9253829399174c8a0d15467361897addf 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -61,6 +61,7 @@
 #include "math.h"
 #include "nozzle.h"
 #include "duration_t.h"
+#include "types.h"
 
 #if ENABLED(USE_WATCHDOG)
   #include "watchdog.h"
diff --git a/Marlin/buzzer.h b/Marlin/buzzer.h
index 4548acfaa3bd551b8a8e37ae42ae7d8b18764a19..199d64e419fcc2f23f6532509c4fef42b91b203a 100644
--- a/Marlin/buzzer.h
+++ b/Marlin/buzzer.h
@@ -23,6 +23,7 @@
 #ifndef __BUZZER_H__
 #define __BUZZER_H__
 
+#include "types.h"
 #include "fastio.h"
 #include "circularqueue.h"
 #include "temperature.h"
@@ -127,7 +128,9 @@ class Buzzer {
 
         if (this->state.tone.frequency > 0) {
           #if ENABLED(SPEAKER)
+            CRITICAL_SECTION_START;
             ::tone(BEEPER_PIN, this->state.tone.frequency, this->state.tone.duration);
+            CRITICAL_SECTION_END;
           #else
             this->on();
           #endif
diff --git a/Marlin/cardreader.cpp b/Marlin/cardreader.cpp
index dd6ff9f53d6dcf2c2c2c5ef799412a3af9fb9a7b..2cc1b2ad6a92a79eff914edcd642624a4e64e1fe 100644
--- a/Marlin/cardreader.cpp
+++ b/Marlin/cardreader.cpp
@@ -20,13 +20,15 @@
  *
  */
 
-#include "Marlin.h"
 #include "cardreader.h"
+
 #include "ultralcd.h"
 #include "stepper.h"
 #include "temperature.h"
 #include "language.h"
 
+#include "Marlin.h"
+
 #if ENABLED(SDSUPPORT)
 
 CardReader::CardReader() {
diff --git a/Marlin/cardreader.h b/Marlin/cardreader.h
index 31b82386c0bfb2de04f16b09af4fb0d6a3a64536..8c22e581c8e33476e802b1342e520fc028363e0b 100644
--- a/Marlin/cardreader.h
+++ b/Marlin/cardreader.h
@@ -23,11 +23,15 @@
 #ifndef CARDREADER_H
 #define CARDREADER_H
 
+#include "MarlinConfig.h"
+
 #if ENABLED(SDSUPPORT)
 
 #define MAX_DIR_DEPTH 10          // Maximum folder depth
 
 #include "SdFile.h"
+
+#include "types.h"
 #include "enum.h"
 
 class CardReader {
diff --git a/Marlin/macros.h b/Marlin/macros.h
index c228ac3ed097df3017e0a448921d04c8ec9a0359..5eec73e3430442209f82727bb5847e49b08024c7 100644
--- a/Marlin/macros.h
+++ b/Marlin/macros.h
@@ -23,6 +23,8 @@
 #ifndef MACROS_H
 #define MACROS_H
 
+#define NUM_AXIS 4
+
 #define FORCE_INLINE __attribute__((always_inline)) inline
 
 // Bracket code that shouldn't be interrupted
diff --git a/Marlin/planner.cpp b/Marlin/planner.cpp
index f738d56c4010995d88d1e943ccf2b6f77ae081ba..4e4d4a18932f66a474f723f87786cb9f7ff08d09 100644
--- a/Marlin/planner.cpp
+++ b/Marlin/planner.cpp
@@ -58,13 +58,14 @@
  *
  */
 
-#include "Marlin.h"
 #include "planner.h"
 #include "stepper.h"
 #include "temperature.h"
 #include "ultralcd.h"
 #include "language.h"
 
+#include "Marlin.h"
+
 #if ENABLED(MESH_BED_LEVELING)
   #include "mesh_bed_leveling.h"
 #endif
diff --git a/Marlin/planner.h b/Marlin/planner.h
index eac1ae5c64b0dac39d6d665df5840d3c0612ee17..740553668a9c416da3d8f5bcd3976e899883df31 100644
--- a/Marlin/planner.h
+++ b/Marlin/planner.h
@@ -32,7 +32,8 @@
 #ifndef PLANNER_H
 #define PLANNER_H
 
-#include "Marlin.h"
+#include "types.h"
+#include "MarlinConfig.h"
 
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
   #include "vector_3.h"
diff --git a/Marlin/stepper.h b/Marlin/stepper.h
index 3ecf93a71eb137d3aee4222ef5be4c7c0da823b2..1dd1531e4a67941e598d6e6f8999743ec9ff3684 100644
--- a/Marlin/stepper.h
+++ b/Marlin/stepper.h
@@ -47,6 +47,7 @@
 #include "speed_lookuptable.h"
 #include "stepper_indirection.h"
 #include "language.h"
+#include "types.h"
 
 class Stepper;
 extern Stepper stepper;
diff --git a/Marlin/temperature.h b/Marlin/temperature.h
index 9a1de04ca514118f126b22c29fc0c3aa976eee5f..ffb47a59fe35c0378a5713547eae45142d5d3cc9 100644
--- a/Marlin/temperature.h
+++ b/Marlin/temperature.h
@@ -27,10 +27,11 @@
 #ifndef TEMPERATURE_H
 #define TEMPERATURE_H
 
-#include "Marlin.h"
 #include "planner.h"
 #include "thermistortables.h"
 
+#include "MarlinConfig.h"
+
 #if ENABLED(PID_EXTRUSION_SCALING)
   #include "stepper.h"
 #endif