From d86f25ab63b447e2b2121002261c2603d3da9041 Mon Sep 17 00:00:00 2001
From: Scott Lahteine <github@thinkyhead.com>
Date: Mon, 25 Jun 2018 12:14:59 -0400
Subject: [PATCH] Fix Serial ISR priority for LPC1768

Co-Authored-By: p3p <p3p@p3psoft.co.uk>
---
 Marlin/src/HAL/HAL_LPC1768/HardwareSerial.cpp | 21 +++++++++++++++----
 1 file changed, 17 insertions(+), 4 deletions(-)

diff --git a/Marlin/src/HAL/HAL_LPC1768/HardwareSerial.cpp b/Marlin/src/HAL/HAL_LPC1768/HardwareSerial.cpp
index db1171be33..152b045d55 100644
--- a/Marlin/src/HAL/HAL_LPC1768/HardwareSerial.cpp
+++ b/Marlin/src/HAL/HAL_LPC1768/HardwareSerial.cpp
@@ -109,10 +109,23 @@ void HardwareSerial::begin(uint32_t baudrate) {
   UART_IntConfig(UARTx, UART_INTCFG_RBR, ENABLE);
   UART_IntConfig(UARTx, UART_INTCFG_RLS, ENABLE);
 
-  if (UARTx == LPC_UART0) NVIC_EnableIRQ(UART0_IRQn);
-  else if ((LPC_UART1_TypeDef *) UARTx == LPC_UART1) NVIC_EnableIRQ(UART1_IRQn);
-  else if (UARTx == LPC_UART2) NVIC_EnableIRQ(UART2_IRQn);
-  else if (UARTx == LPC_UART3) NVIC_EnableIRQ(UART3_IRQn);
+  // Set proper priority and enable interrupts
+  if (UARTx == LPC_UART0) {
+    NVIC_SetPriority(UART0_IRQn, NVIC_EncodePriority(0, 3, 0));
+    NVIC_EnableIRQ(UART0_IRQn);
+  }
+  else if ((LPC_UART1_TypeDef *) UARTx == LPC_UART1) {
+    NVIC_SetPriority(UART1_IRQn, NVIC_EncodePriority(0, 3, 0));
+   NVIC_EnableIRQ(UART1_IRQn);
+  }
+  else if (UARTx == LPC_UART2) {
+    NVIC_SetPriority(UART2_IRQn, NVIC_EncodePriority(0, 3, 0));
+    NVIC_EnableIRQ(UART2_IRQn);
+  }
+  else if (UARTx == LPC_UART3) {
+    NVIC_SetPriority(UART3_IRQn, NVIC_EncodePriority(0, 3, 0));
+    NVIC_EnableIRQ(UART3_IRQn);
+  }
 
   RxQueueWritePos = RxQueueReadPos = 0;
   #if TX_BUFFER_SIZE > 0