diff --git a/Marlin/src/HAL/HAL_STM32F4/HAL.h b/Marlin/src/HAL/HAL_STM32F4/HAL.h
index 20d9e05999bc581623af9d5688b3c573e57d895c..b0abf819952335e83fafdd4e61bc75acab6ea1b5 100644
--- a/Marlin/src/HAL/HAL_STM32F4/HAL.h
+++ b/Marlin/src/HAL/HAL_STM32F4/HAL.h
@@ -110,6 +110,7 @@
   #define NUM_SERIAL 1
 #endif
 
+#undef _BV
 #define _BV(b) (1 << (b))
 
 /**
diff --git a/Marlin/src/HAL/HAL_STM32F4/fastio_STM32F4.h b/Marlin/src/HAL/HAL_STM32F4/fastio_STM32F4.h
index e185344dc2e7fe016d10cbd62d708019acce80c3..d102e64f751a5d8fb6ceb195e3dde12de60a1f52 100644
--- a/Marlin/src/HAL/HAL_STM32F4/fastio_STM32F4.h
+++ b/Marlin/src/HAL/HAL_STM32F4/fastio_STM32F4.h
@@ -29,6 +29,7 @@
 #ifndef _FASTIO_STM32F4_H
 #define _FASTIO_STM32F4_H
 
+#undef _BV
 #define _BV(b) (1 << (b))
 
 #define USEABLE_HARDWARE_PWM(p) true
diff --git a/Marlin/src/core/enum.h b/Marlin/src/core/enum.h
index d9a3cd18c2e706f7e72efaff328b9f01aac20070..bf30f7b628fada098aeffff50d47d9e3555137db 100644
--- a/Marlin/src/core/enum.h
+++ b/Marlin/src/core/enum.h
@@ -69,20 +69,4 @@ typedef enum {
   TEMPUNIT_F
 } TempUnit;
 
-/**
- * SD Card
- */
-enum LsAction : char { LS_SerialPrint, LS_Count, LS_GetFilename };
-
-/**
- * Ultra LCD
- */
-enum LCDViewAction : char {
-  LCDVIEW_NONE,
-  LCDVIEW_REDRAW_NOW,
-  LCDVIEW_CALL_REDRAW_NEXT,
-  LCDVIEW_CLEAR_CALL_REDRAW,
-  LCDVIEW_CALL_NO_REDRAW
-};
-
 #endif // __ENUM_H__
diff --git a/Marlin/src/core/macros.h b/Marlin/src/core/macros.h
index 520c10fc78d7bacb5f5e3ab53132c44f9a00624c..df21b0519f17f4e9024ed1d15d7539545f9a2c63 100644
--- a/Marlin/src/core/macros.h
+++ b/Marlin/src/core/macros.h
@@ -57,7 +57,7 @@
 #define NANOSECONDS_PER_CYCLE (1000000000.0 / F_CPU)
 
 // Remove compiler warning on an unused variable
-#define UNUSED(x) (void) (x)
+#define UNUSED(x) ((void)(x))
 
 // Macros to make a string from a macro
 #define STRINGIFY_(M) #M
diff --git a/Marlin/src/core/minmax.h b/Marlin/src/core/minmax.h
index 126a738b95e263ecb4994e8681b389a862150317..e45544ff69fd1253f65c9a29611aa54467cf7053 100644
--- a/Marlin/src/core/minmax.h
+++ b/Marlin/src/core/minmax.h
@@ -20,26 +20,29 @@
  *
  */
 
-#pragma once
-
 #undef MIN
 #undef MAX
 
 #ifdef __cplusplus
 
-  extern "C++" {
+  #ifndef _MINMAX_H_
+  #define _MINMAX_H_
+
+    extern "C++" {
+
+      // C++11 solution that is standards compliant. Return type is deduced automatically
+      template <class L, class R> static inline constexpr auto MIN(const L lhs, const R rhs) -> decltype(lhs + rhs) {
+        return lhs < rhs ? lhs : rhs;
+      }
+      template <class L, class R> static inline constexpr auto MAX(const L lhs, const R rhs) -> decltype(lhs + rhs) {
+        return lhs > rhs ? lhs : rhs;
+      }
+      template<class T, class ... Ts> static inline constexpr const T MIN(T V, Ts... Vs) { return MIN(V, MIN(Vs...)); }
+      template<class T, class ... Ts> static inline constexpr const T MAX(T V, Ts... Vs) { return MAX(V, MAX(Vs...)); }
 
-    // C++11 solution that is standards compliant. Return type is deduced automatically
-    template <class L, class R> static inline constexpr auto MIN(const L lhs, const R rhs) -> decltype(lhs + rhs) {
-      return lhs < rhs ? lhs : rhs;
-    }
-    template <class L, class R> static inline constexpr auto MAX(const L lhs, const R rhs) -> decltype(lhs + rhs) {
-      return lhs > rhs ? lhs : rhs;
     }
-    template<class T, class ... Ts> static inline constexpr const T MIN(T V, Ts... Vs) { return MIN(V, MIN(Vs...)); }
-    template<class T, class ... Ts> static inline constexpr const T MAX(T V, Ts... Vs) { return MAX(V, MAX(Vs...)); }
 
-  }
+  #endif
 
 #else
 
diff --git a/Marlin/src/inc/MarlinConfig.h b/Marlin/src/inc/MarlinConfig.h
index 539726e4056e4fb476f10b712e88b8fd1ceebf2a..a6d48a18e5c0d7b2c075887ec6f46f002af79855 100644
--- a/Marlin/src/inc/MarlinConfig.h
+++ b/Marlin/src/inc/MarlinConfig.h
@@ -43,5 +43,6 @@
 #include "../core/language.h"
 #include "../core/utility.h"
 #include "../core/serial.h"
+#include "../core/minmax.h"
 
 #endif // _MARLIN_CONFIG_H_
diff --git a/Marlin/src/lcd/ultralcd.cpp b/Marlin/src/lcd/ultralcd.cpp
index 97632e8cd4b91ac713e0101b3018c23f776b470c..c6409ad07c6a9e2790d2170bf05f87c67b0e0928 100644
--- a/Marlin/src/lcd/ultralcd.cpp
+++ b/Marlin/src/lcd/ultralcd.cpp
@@ -117,10 +117,9 @@ uint8_t lcd_status_update_delay = 1, // First update one loop delayed
 // The main status screen
 void lcd_status_screen();
 
-millis_t next_lcd_update_ms;
-
-uint8_t lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW; // Set when the LCD needs to draw, decrements after every draw. Set to 2 in LCD routines so the LCD gets at least 1 full redraw (first redraw is partial)
+LCDViewAction lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW;
 uint16_t max_display_update_time = 0;
+millis_t next_lcd_update_ms;
 
 #if ENABLED(ULTIPANEL)
 
diff --git a/Marlin/src/lcd/ultralcd.h b/Marlin/src/lcd/ultralcd.h
index 05376cd2ce670c0a8a62e035976de7f58d6c575a..0468dcdfddd8d66e04e63a507ad16e834eced5c7 100644
--- a/Marlin/src/lcd/ultralcd.h
+++ b/Marlin/src/lcd/ultralcd.h
@@ -57,7 +57,15 @@
   void lcd_kill_screen();
   void kill_screen(PGM_P lcd_msg);
 
-  extern uint8_t lcdDrawUpdate;
+  enum LCDViewAction : uint8_t {
+    LCDVIEW_NONE,
+    LCDVIEW_REDRAW_NOW,
+    LCDVIEW_CALL_REDRAW_NEXT,
+    LCDVIEW_CLEAR_CALL_REDRAW,
+    LCDVIEW_CALL_NO_REDRAW
+  };
+
+  extern LCDViewAction lcdDrawUpdate;
   inline void lcd_refresh() { lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW; }
 
   #if HAS_BUZZER
diff --git a/Marlin/src/sd/cardreader.h b/Marlin/src/sd/cardreader.h
index 8e29bd9a6f1ec6b29e7297735bf026e87f3a64e4..1e2f685fcf06de5c1a871df552663de7c8d4e86a 100644
--- a/Marlin/src/sd/cardreader.h
+++ b/Marlin/src/sd/cardreader.h
@@ -33,6 +33,8 @@
 
 #include "SdFile.h"
 
+enum LsAction : uint8_t { LS_SerialPrint, LS_Count, LS_GetFilename };
+
 class CardReader {
 public:
   CardReader();
diff --git a/frameworks/CMSIS/LPC1768/include/lpc_types.h b/frameworks/CMSIS/LPC1768/include/lpc_types.h
index 022b88feebf399cc67915d0f82f41bd5faaf74bc..516e0114f74fe5d626467dcc761890b6b0002301 100644
--- a/frameworks/CMSIS/LPC1768/include/lpc_types.h
+++ b/frameworks/CMSIS/LPC1768/include/lpc_types.h
@@ -145,8 +145,6 @@ typedef int32_t(*PFI)();
 /* External data/function define */
 #define EXTERN extern
 
-#include "../../../../src/core/minmax.h"
-
 /**
  * @}
  */