Cleaning up LPC51U68 projects:
- user playable settings are all in FreeRTOSConfig.h.
- removed reference to IntQueue.h in main_full.c
- readme.txt wording. 
diff --git a/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/.project b/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/.project
index 226716e..e99970c 100644
--- a/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/.project
+++ b/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/.project
@@ -38,7 +38,7 @@
 		<link>

 			<name>Demo_tasks/IntQueue.c</name>

 			<type>1</type>

-			<locationURI>PARENT-1-PROJECT_LOC/Common/Minimal/IntQueue.c</locationURI>

+			<location>C:/Users/yuhzheng/Documents/freertos-code/FreeRTOS/Demo/Common/Minimal/IntQueue.c</location>

 		</link>

 		<link>

 			<name>Demo_tasks/blocktim.c</name>

diff --git a/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/CORTEX_M0+_LPC51U68_Keil.uvoptx b/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/CORTEX_M0+_LPC51U68_Keil.uvoptx
index aa150c6..15f146c 100644
--- a/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/CORTEX_M0+_LPC51U68_Keil.uvoptx
+++ b/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/CORTEX_M0+_LPC51U68_Keil.uvoptx
@@ -162,7 +162,7 @@
       <DebugFlag>
         <trace>0</trace>
         <periodic>1</periodic>
-        <aLwin>1</aLwin>
+        <aLwin>0</aLwin>
         <aCover>0</aCover>
         <aSer1>0</aSer1>
         <aSer2>0</aSer2>
@@ -210,7 +210,7 @@
 
   <Group>
     <GroupName>Application_Code</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -854,7 +854,7 @@
 
   <Group>
     <GroupName>startup</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
diff --git a/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/IAR_specific/LPC51U68_256.FLM b/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/IAR_specific/LPC51U68_256.FLM
deleted file mode 100644
index 517f0be..0000000
--- a/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/IAR_specific/LPC51U68_256.FLM
+++ /dev/null
Binary files differ
diff --git a/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/Keil_specific/LPC51U68_256.FLM b/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/Keil_specific/LPC51U68_256.FLM
deleted file mode 100644
index 517f0be..0000000
--- a/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/Keil_specific/LPC51U68_256.FLM
+++ /dev/null
Binary files differ
diff --git a/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/Keil_specific/compiler_attributes.h b/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/Keil_specific/compiler_attributes.h
index 5167987..3a03039 100644
--- a/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/Keil_specific/compiler_attributes.h
+++ b/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/Keil_specific/compiler_attributes.h
@@ -29,4 +29,9 @@
 todo: 

 this is commented out intentionally, as it doesn't seem to work. 

 Clean up is needed*/

-#define COMPILER_ATTRIBUTE_PLACE_IN_2ND_MEMORY_BANK			//__attribute__((section("m_data_start")))

+

+/* Attribute to place the second FreeRTOS heap in another memory bank, if present. 

+   This is defined as empty, as the linker file (LPC51U68_flash.scf) provided only

+   one bank as heap. Could still have two FreeRTOS heap regions, as long as they fit.  

+*/

+#define COMPILER_ATTRIBUTE_PLACE_IN_2ND_MEMORY_BANK

diff --git a/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/app/FreeRTOSConfig.h b/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/app/FreeRTOSConfig.h
index e2551e7..f4402ed 100644
--- a/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/app/FreeRTOSConfig.h
+++ b/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/app/FreeRTOSConfig.h
@@ -41,6 +41,22 @@
  * See http://www.freertos.org/a00110.html

  *----------------------------------------------------------*/

 

+/* Demo related settings. */

+

+/* Set mainCREATE_SIMPLE_BLINKY_DEMO_ONLY to

+ * 0 -- to run the more comprehensive test and demo application,

+ * 1 -- to run the simple blinky demo.

+ */

+#define mainCREATE_SIMPLE_BLINKY_DEMO_ONLY	1

+

+/* When mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 0,

+ * set mainNO_TASK_NO_CHECK to

+ * 0 -- to include all predefined test tasks and checks,

+ * 1 -- to exclude all predefined test tasks and checks.

+ * When set to 1 (with few tasks in system), user could observe

+ * fewer tick interrupts thus reduce overall MCU power consumption. */

+#define mainNO_TASK_NO_CHECK				0

+

 /* Prevent C code being included by the IAR assembler. */

 #ifndef __IASMARM__

   #include <stdint.h>

@@ -52,8 +68,8 @@
 #define configUSE_TICK_HOOK				1

 #define configCPU_CLOCK_HZ				( SystemCoreClock )

 #define configTICK_RATE_HZ				( ( TickType_t ) 1000 )

-#define configMAX_PRIORITIES			( 5 )

-#define configMAX_TASK_NAME_LEN			( 5 )

+#define configMAX_PRIORITIES			5

+#define configMAX_TASK_NAME_LEN			8

 #define configUSE_TRACE_FACILITY		1

 #define configUSE_16_BIT_TICKS			0

 #define configIDLE_SHOULD_YIELD			1

@@ -80,7 +96,7 @@
 

 /* Software timer definitions. */

 #define configUSE_TIMERS				1

-#define configTIMER_TASK_PRIORITY		( 2 )

+#define configTIMER_TASK_PRIORITY		2

 #define configTIMER_QUEUE_LENGTH		2

 #define configTIMER_TASK_STACK_DEPTH	( configMINIMAL_STACK_SIZE )

 

diff --git a/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/app/main.c b/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/app/main.c
index 07dd94b..820ebfd 100644
--- a/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/app/main.c
+++ b/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/app/main.c
@@ -48,12 +48,6 @@
 

 #include "compiler_attributes.h"

 

-/* Set mainCREATE_SIMPLE_BLINKY_DEMO_ONLY to

- * 0 -- to run the more comprehensive test and demo application,

- * 1 -- to run the simple blinky demo.

- */

-#define mainCREATE_SIMPLE_BLINKY_DEMO_ONLY	0

-

 /*-----------------------------------------------------------*/

 typedef enum LED_STATE {

 	LED_RED_BLINK_ON = 1,

diff --git a/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/app/main_full.c b/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/app/main_full.c
index 286d1be..2f6b882 100644
--- a/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/app/main_full.c
+++ b/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/app/main_full.c
@@ -83,8 +83,6 @@
 #include "blocktim.h"

 #include "countsem.h"

 #include "recmutex.h"

-#include "IntQueue.h"

-

 

 /* The period after which the check timer will expire provided no errors have

 been reported by any of the standard demo tasks.  ms are converted to the

@@ -99,12 +97,6 @@
 /* A block time of zero simply means "don't block". */

 #define mainDONT_BLOCK						( 0UL )

 

-/* Set mainNO_TASK_NO_CHECK to

- * 0 -- to include all predefined test tasks and checks,

- * 1 -- to exclude all predefined test tasks and checks.

- * When set to 1 (with few tasks in system), user could observe how tickless

- * idle could minimize tick interrupt. */

-#define mainNO_TASK_NO_CHECK				( 1 )

 /*-----------------------------------------------------------*/

 

 /*

@@ -155,7 +147,6 @@
 #if ( mainNO_TASK_NO_CHECK == 0 )

 	/* Create the standard demo tasks, including the interrupt nesting test

 	tasks. */

-	vStartInterruptQueueTasks();

 	vCreateBlockTimeTasks();

 	vStartCountingSemaphoreTasks();

 	vStartRecursiveMutexTasks();

@@ -222,11 +213,6 @@
 	

 	/* Check all the demo and test tasks to ensure that they are all still

 	running, and that none have detected an error. */

-	if( xAreIntQueueTasksStillRunning() != pdPASS )

-	{

-		ulErrorFound |= ( 0x01UL << 0UL );

-	}

-

 	if( xAreBlockTimeTestTasksStillRunning() != pdPASS )

 	{

 		ulErrorFound |= ( 0x01UL << 1UL );

diff --git a/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/readme.txt b/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/readme.txt
index fb06ed3..7c2280d 100644
--- a/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/readme.txt
+++ b/FreeRTOS/Demo/CORTEX_M0+_LPC51U68_GCC_IAR_KEIL/readme.txt
@@ -1,6 +1,9 @@
-This directory contains projects for GCC/IAR/Keil compilers. The targeted MCU is NXP LPC51U68, which is CM0+. 
+This directory contains three projects for LPCXpresso board for LPC51U68. 
 
-todo:
-- clean up IAR compiler warnings. (Though the warnings are in vendor's driver code, see if we can clean it up. )
-- finalize Keil linker script.(Two heap blocks shall be placed in intended RAM banks. Currently, both goes to a same RAM bank.)
-- GCC project folder directory name is not consistent with the other two. 
+MCUXpresso IDE (GCC compiler) -- .cproject and .project. 
+IAR for ARM IDE (IAR compiler) -- CORTEX_M0+_LPC51U68_IAR.*
+Keil uVision (ARM Keil compiler) -- CORTEX_M0+_LPC51U68_Keil.*
+
+Known facts:
+- IAR compiler shows Pa082 warning with SDK provided system_LPC51U68.c and fsl_usart.c. Since the warnings are legitimate, they are not ignored. 
+  Refer to https://www.iar.com/support/tech-notes/compiler/warningpa082-undefined-behavior-the-order-of-volatile-accesses-is-undefined-in-this-statement/