diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index dca5727d4ebf75d63038167e68e71323683cf214..1b3550d48cf34e5796ecf76e7e9bb9e10dd2499d 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -782,7 +782,7 @@ void setup_killpin() {
 #if ENABLED(FILAMENT_RUNOUT_SENSOR)
 
   void setup_filrunoutpin() {
-    pinMode(FIL_RUNOUT_PIN, INPUT);
+    SET_INPUT(FIL_RUNOUT_PIN);
     #if ENABLED(ENDSTOPPULLUP_FIL_RUNOUT)
       WRITE(FIL_RUNOUT_PIN, HIGH);
     #endif
@@ -860,10 +860,9 @@ void servo_init() {
  */
 #if HAS_STEPPER_RESET
   void disableStepperDrivers() {
-    pinMode(STEPPER_RESET_PIN, OUTPUT);
-    digitalWrite(STEPPER_RESET_PIN, LOW);  // drive it down to hold in reset motor driver chips
+    OUT_WRITE(STEPPER_RESET_PIN, LOW);  // drive it down to hold in reset motor driver chips
   }
-  void enableStepperDrivers() { pinMode(STEPPER_RESET_PIN, INPUT); }  // set to input, which allows it to be pulled high by pullups
+  void enableStepperDrivers() { SET_INPUT(STEPPER_RESET_PIN); }  // set to input, which allows it to be pulled high by pullups
 #endif
 
 #if ENABLED(EXPERIMENTAL_I2CBUS) && I2C_SLAVE_ADDRESS > 0
@@ -9194,8 +9193,7 @@ void setup() {
   #endif
 
   #if ENABLED(Z_PROBE_SLED) && PIN_EXISTS(SLED)
-    pinMode(SLED_PIN, OUTPUT);
-    digitalWrite(SLED_PIN, LOW); // turn it off
+    OUT_WRITE(SLED_PIN, LOW); // turn it off
   #endif // Z_PROBE_SLED
 
   setup_homepin();
diff --git a/Marlin/Sd2Card.cpp b/Marlin/Sd2Card.cpp
index 190e4ad1ff53b88ea2bb336bb0c18cbd0136756d..900c73b53d9d7c445c5f351d57c497c050fff0c6 100644
--- a/Marlin/Sd2Card.cpp
+++ b/Marlin/Sd2Card.cpp
@@ -302,16 +302,16 @@ bool Sd2Card::init(uint8_t sckRateID, uint8_t chipSelectPin) {
   // set pin modes
   pinMode(chipSelectPin_, OUTPUT);
   chipSelectHigh();
-  pinMode(SPI_MISO_PIN, INPUT);
-  pinMode(SPI_MOSI_PIN, OUTPUT);
-  pinMode(SPI_SCK_PIN, OUTPUT);
+  SET_INPUT(SPI_MISO_PIN);
+  SET_OUTPUT(SPI_MOSI_PIN);
+  SET_OUTPUT(SPI_SCK_PIN);
 
   #if DISABLED(SOFTWARE_SPI)
     // SS must be in output mode even it is not chip select
-    pinMode(SS_PIN, OUTPUT);
+    SET_OUTPUT(SS_PIN);
     // set SS high - may be chip select for another SPI device
     #if SET_SPI_SS_HIGH
-      digitalWrite(SS_PIN, HIGH);
+      WRITE(SS_PIN, HIGH);
     #endif  // SET_SPI_SS_HIGH
     // set SCK rate for initialization commands
     spiRate_ = SPI_SD_INIT_RATE;
diff --git a/Marlin/stepper.cpp b/Marlin/stepper.cpp
index 00595e11057902c331c5a2b596bd3485b6e0ea66..f0c4f27fe9eb7d7e4c476f15cf91bfdeb1b1714c 100644
--- a/Marlin/stepper.cpp
+++ b/Marlin/stepper.cpp
@@ -1155,10 +1155,10 @@ void Stepper::report_positions() {
 
   // From Arduino DigitalPotControl example
   void Stepper::digitalPotWrite(int address, int value) {
-    digitalWrite(DIGIPOTSS_PIN, LOW); // take the SS pin low to select the chip
+    WRITE(DIGIPOTSS_PIN, LOW); // take the SS pin low to select the chip
     SPI.transfer(address); //  send in the address and value via SPI:
     SPI.transfer(value);
-    digitalWrite(DIGIPOTSS_PIN, HIGH); // take the SS pin high to de-select the chip:
+    WRITE(DIGIPOTSS_PIN, HIGH); // take the SS pin high to de-select the chip:
     //delay(10);
   }
 
@@ -1275,21 +1275,21 @@ void Stepper::microstep_mode(uint8_t driver, uint8_t stepping_mode) {
 void Stepper::microstep_readings() {
   SERIAL_PROTOCOLLNPGM("MS1,MS2 Pins");
   SERIAL_PROTOCOLPGM("X: ");
-  SERIAL_PROTOCOL(digitalRead(X_MS1_PIN));
-  SERIAL_PROTOCOLLN(digitalRead(X_MS2_PIN));
+  SERIAL_PROTOCOL(READ(X_MS1_PIN));
+  SERIAL_PROTOCOLLN(READ(X_MS2_PIN));
   SERIAL_PROTOCOLPGM("Y: ");
-  SERIAL_PROTOCOL(digitalRead(Y_MS1_PIN));
-  SERIAL_PROTOCOLLN(digitalRead(Y_MS2_PIN));
+  SERIAL_PROTOCOL(READ(Y_MS1_PIN));
+  SERIAL_PROTOCOLLN(READ(Y_MS2_PIN));
   SERIAL_PROTOCOLPGM("Z: ");
-  SERIAL_PROTOCOL(digitalRead(Z_MS1_PIN));
-  SERIAL_PROTOCOLLN(digitalRead(Z_MS2_PIN));
+  SERIAL_PROTOCOL(READ(Z_MS1_PIN));
+  SERIAL_PROTOCOLLN(READ(Z_MS2_PIN));
   SERIAL_PROTOCOLPGM("E0: ");
-  SERIAL_PROTOCOL(digitalRead(E0_MS1_PIN));
-  SERIAL_PROTOCOLLN(digitalRead(E0_MS2_PIN));
+  SERIAL_PROTOCOL(READ(E0_MS1_PIN));
+  SERIAL_PROTOCOLLN(READ(E0_MS2_PIN));
   #if HAS_MICROSTEPS_E1
     SERIAL_PROTOCOLPGM("E1: ");
-    SERIAL_PROTOCOL(digitalRead(E1_MS1_PIN));
-    SERIAL_PROTOCOLLN(digitalRead(E1_MS2_PIN));
+    SERIAL_PROTOCOL(READ(E1_MS1_PIN));
+    SERIAL_PROTOCOLLN(READ(E1_MS2_PIN));
   #endif
 }
 
diff --git a/Marlin/stepper_dac.cpp b/Marlin/stepper_dac.cpp
index 6c71b89f640b4e6cdc75736ac9f4c5d55078e62f..25cd7e6ee9b69bf85d5410f6ef627c606965ae3b 100644
--- a/Marlin/stepper_dac.cpp
+++ b/Marlin/stepper_dac.cpp
@@ -52,8 +52,7 @@
 
   int dac_init() {
     #if PIN_EXISTS(DAC_DISABLE)
-      pinMode(DAC_DISABLE_PIN, OUTPUT);
-      digitalWrite(DAC_DISABLE_PIN, LOW);  // set pin low to enable DAC
+      OUT_WRITE(DAC_DISABLE_PIN, LOW);  // set pin low to enable DAC
     #endif
 
     mcp4728_init();
diff --git a/Marlin/ultralcd_impl_DOGM.h b/Marlin/ultralcd_impl_DOGM.h
index d7bf595fa71ab9bcd8531a9c66815808530a8bcf..73ed9db905cef97e5f97d8f6d3567ce23d353740 100644
--- a/Marlin/ultralcd_impl_DOGM.h
+++ b/Marlin/ultralcd_impl_DOGM.h
@@ -221,13 +221,11 @@ void lcd_printPGM(const char* str) {
 static void lcd_implementation_init() {
 
   #if PIN_EXISTS(LCD_BACKLIGHT) // Enable LCD backlight
-    pinMode(LCD_BACKLIGHT_PIN, OUTPUT);
-    digitalWrite(LCD_BACKLIGHT_PIN, HIGH);
+    OUT_WRITE(LCD_BACKLIGHT_PIN, HIGH);
   #endif
 
   #if PIN_EXISTS(LCD_RESET)
-    pinMode(LCD_RESET_PIN, OUTPUT);
-    digitalWrite(LCD_RESET_PIN, HIGH);
+    OUT_WRITE(LCD_RESET_PIN, HIGH);
   #endif
 
   #if DISABLED(MINIPANEL) // setContrast not working for Mini Panel