<link>\r
<name>Demo_tasks/IntQueue.c</name>\r
<type>1</type>\r
- <locationURI>PARENT-1-PROJECT_LOC/Common/Minimal/IntQueue.c</locationURI>\r
+ <location>C:/Users/yuhzheng/Documents/freertos-code/FreeRTOS/Demo/Common/Minimal/IntQueue.c</location>\r
</link>\r
<link>\r
<name>Demo_tasks/blocktim.c</name>\r
<DebugFlag>
<trace>0</trace>
<periodic>1</periodic>
- <aLwin>1</aLwin>
+ <aLwin>0</aLwin>
<aCover>0</aCover>
<aSer1>0</aSer1>
<aSer2>0</aSer2>
<Group>
<GroupName>Application_Code</GroupName>
- <tvExp>0</tvExp>
+ <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<Group>
<GroupName>startup</GroupName>
- <tvExp>0</tvExp>
+ <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
todo: \r
this is commented out intentionally, as it doesn't seem to work. \r
Clean up is needed*/\r
-#define COMPILER_ATTRIBUTE_PLACE_IN_2ND_MEMORY_BANK //__attribute__((section("m_data_start")))\r
+\r
+/* Attribute to place the second FreeRTOS heap in another memory bank, if present. \r
+ This is defined as empty, as the linker file (LPC51U68_flash.scf) provided only\r
+ one bank as heap. Could still have two FreeRTOS heap regions, as long as they fit. \r
+*/\r
+#define COMPILER_ATTRIBUTE_PLACE_IN_2ND_MEMORY_BANK\r
* See http://www.freertos.org/a00110.html\r
*----------------------------------------------------------*/\r
\r
+/* Demo related settings. */\r
+\r
+/* Set mainCREATE_SIMPLE_BLINKY_DEMO_ONLY to\r
+ * 0 -- to run the more comprehensive test and demo application,\r
+ * 1 -- to run the simple blinky demo.\r
+ */\r
+#define mainCREATE_SIMPLE_BLINKY_DEMO_ONLY 1\r
+\r
+/* When mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 0,\r
+ * set mainNO_TASK_NO_CHECK to\r
+ * 0 -- to include all predefined test tasks and checks,\r
+ * 1 -- to exclude all predefined test tasks and checks.\r
+ * When set to 1 (with few tasks in system), user could observe\r
+ * fewer tick interrupts thus reduce overall MCU power consumption. */\r
+#define mainNO_TASK_NO_CHECK 0\r
+\r
/* Prevent C code being included by the IAR assembler. */\r
#ifndef __IASMARM__\r
#include <stdint.h>\r
#define configUSE_TICK_HOOK 1\r
#define configCPU_CLOCK_HZ ( SystemCoreClock )\r
#define configTICK_RATE_HZ ( ( TickType_t ) 1000 )\r
-#define configMAX_PRIORITIES ( 5 )\r
-#define configMAX_TASK_NAME_LEN ( 5 )\r
+#define configMAX_PRIORITIES 5\r
+#define configMAX_TASK_NAME_LEN 8\r
#define configUSE_TRACE_FACILITY 1\r
#define configUSE_16_BIT_TICKS 0\r
#define configIDLE_SHOULD_YIELD 1\r
\r
/* Software timer definitions. */\r
#define configUSE_TIMERS 1\r
-#define configTIMER_TASK_PRIORITY ( 2 )\r
+#define configTIMER_TASK_PRIORITY 2\r
#define configTIMER_QUEUE_LENGTH 2\r
#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE )\r
\r
\r
#include "compiler_attributes.h"\r
\r
-/* Set mainCREATE_SIMPLE_BLINKY_DEMO_ONLY to\r
- * 0 -- to run the more comprehensive test and demo application,\r
- * 1 -- to run the simple blinky demo.\r
- */\r
-#define mainCREATE_SIMPLE_BLINKY_DEMO_ONLY 0\r
-\r
/*-----------------------------------------------------------*/\r
typedef enum LED_STATE {\r
LED_RED_BLINK_ON = 1,\r
#include "blocktim.h"\r
#include "countsem.h"\r
#include "recmutex.h"\r
-#include "IntQueue.h"\r
-\r
\r
/* The period after which the check timer will expire provided no errors have\r
been reported by any of the standard demo tasks. ms are converted to the\r
/* A block time of zero simply means "don't block". */\r
#define mainDONT_BLOCK ( 0UL )\r
\r
-/* Set mainNO_TASK_NO_CHECK to\r
- * 0 -- to include all predefined test tasks and checks,\r
- * 1 -- to exclude all predefined test tasks and checks.\r
- * When set to 1 (with few tasks in system), user could observe how tickless\r
- * idle could minimize tick interrupt. */\r
-#define mainNO_TASK_NO_CHECK ( 1 )\r
/*-----------------------------------------------------------*/\r
\r
/*\r
#if ( mainNO_TASK_NO_CHECK == 0 )\r
/* Create the standard demo tasks, including the interrupt nesting test\r
tasks. */\r
- vStartInterruptQueueTasks();\r
vCreateBlockTimeTasks();\r
vStartCountingSemaphoreTasks();\r
vStartRecursiveMutexTasks();\r
\r
/* Check all the demo and test tasks to ensure that they are all still\r
running, and that none have detected an error. */\r
- if( xAreIntQueueTasksStillRunning() != pdPASS )\r
- {\r
- ulErrorFound |= ( 0x01UL << 0UL );\r
- }\r
-\r
if( xAreBlockTimeTestTasksStillRunning() != pdPASS )\r
{\r
ulErrorFound |= ( 0x01UL << 1UL );\r
-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/