diff --git a/FreeRTOS/Demo/CORTEX_MPU_Simulator_Keil_GCC/FreeRTOSConfig.h b/FreeRTOS/Demo/CORTEX_MPU_Simulator_Keil_GCC/FreeRTOSConfig.h
index e8b0434..8521099 100644
--- a/FreeRTOS/Demo/CORTEX_MPU_Simulator_Keil_GCC/FreeRTOSConfig.h
+++ b/FreeRTOS/Demo/CORTEX_MPU_Simulator_Keil_GCC/FreeRTOSConfig.h
@@ -105,7 +105,7 @@
 #define INCLUDE_vTaskDelayUntil				1
 #define INCLUDE_vTaskDelay					1
 #define INCLUDE_eTaskGetState				1
-#define INCLUDE_xTimerPendFunctionCall		0
+#define INCLUDE_xTimerPendFunctionCall		1
 #define INCLUDE_xSemaphoreGetMutexHolder	1
 #define INCLUDE_xTaskGetHandle				1
 #define INCLUDE_xTaskGetCurrentTaskHandle	1
diff --git a/FreeRTOS/Demo/CORTEX_MPU_Simulator_Keil_GCC/GCC_Specific/RTOSDemo.uvoptx b/FreeRTOS/Demo/CORTEX_MPU_Simulator_Keil_GCC/GCC_Specific/RTOSDemo.uvoptx
index 365eb69..85705cf 100644
--- a/FreeRTOS/Demo/CORTEX_MPU_Simulator_Keil_GCC/GCC_Specific/RTOSDemo.uvoptx
+++ b/FreeRTOS/Demo/CORTEX_MPU_Simulator_Keil_GCC/GCC_Specific/RTOSDemo.uvoptx
@@ -118,7 +118,7 @@
         <SetRegEntry>
           <Number>0</Number>
           <Key>DLGDARM</Key>
-          <Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=1215,201,1680,501,0)</Name>
+          <Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=1071,201,1536,501,0)</Name>
         </SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
@@ -146,7 +146,24 @@
           <Name>-UV1115SAE -O2983 -S0 -C0 -P00 -N00("ARM CoreSight JTAG-DP") -D00(4BA00477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO11  -FN1 -FC1000 -FD20000000 -FF0NEW_DEVICE -FL080000 -FS00 -FP0($$Device:ARMCM4_FP$Device\ARM\Flash\NEW_DEVICE.FLM)</Name>
         </SetRegEntry>
       </TargetDriverDllRegistry>
-      <Breakpoint/>
+      <Breakpoint>
+        <Bp>
+          <Number>0</Number>
+          <Type>0</Type>
+          <LineNumber>614</LineNumber>
+          <EnabledFlag>1</EnabledFlag>
+          <Address>23132</Address>
+          <ByteObject>0</ByteObject>
+          <HtxType>0</HtxType>
+          <ManyObjects>0</ManyObjects>
+          <SizeOfObject>0</SizeOfObject>
+          <BreakByAccess>0</BreakByAccess>
+          <BreakIfRCount>1</BreakIfRCount>
+          <Filename>C:\Users\ribarry\Dev\FreeRTOS\WorkingCopy\FreeRTOS\Source\stream_buffer.c</Filename>
+          <ExecCommand></ExecCommand>
+          <Expression>\\RTOSDemo\../../../Source/stream_buffer.c\614</Expression>
+        </Bp>
+      </Breakpoint>
       <WatchWindow1>
         <Ww>
           <count>0</count>
@@ -173,7 +190,7 @@
       <DebugFlag>
         <trace>0</trace>
         <periodic>1</periodic>
-        <aLwin>1</aLwin>
+        <aLwin>0</aLwin>
         <aCover>0</aCover>
         <aSer1>0</aSer1>
         <aSer2>0</aSer2>
@@ -190,7 +207,7 @@
         <aLa>0</aLa>
         <aPa1>0</aPa1>
         <AscS4>0</AscS4>
-        <aSer4>0</aSer4>
+        <aSer4>1</aSer4>
         <StkLoc>0</StkLoc>
         <TrcWin>0</TrcWin>
         <newCpu>0</newCpu>
diff --git a/FreeRTOS/Demo/CORTEX_MPU_Simulator_Keil_GCC/main.c b/FreeRTOS/Demo/CORTEX_MPU_Simulator_Keil_GCC/main.c
index 1ccddbb..82b51a1 100644
--- a/FreeRTOS/Demo/CORTEX_MPU_Simulator_Keil_GCC/main.c
+++ b/FreeRTOS/Demo/CORTEX_MPU_Simulator_Keil_GCC/main.c
@@ -158,6 +158,7 @@
 static void prvExerciseSemaphoreAPI( void );
 static void prvExerciseTaskNotificationAPI( void );
 static void prvExerciseStreamBufferAPI( void );
+static void prvExerciseTimerAPI( void );
 
 /*
  * Just configures any clocks and IO necessary.
@@ -196,6 +197,13 @@
  */
 static void prvTimerCallback( TimerHandle_t xExpiredTimer );
 
+/*
+ * The callback function and a function that is pended used when exercising the
+ * timer API.
+ */
+static void prvPendedFunctionCall( void *pvParameter1, uint32_t ulParameter2 );
+static void prvTestTimerCallback( TimerHandle_t xTimer );
+
 /*-----------------------------------------------------------*/
 
 /* The handle of the queue used to communicate between tasks and between tasks
@@ -763,6 +771,7 @@
 	prvExerciseSemaphoreAPI();
 	prvExerciseTaskNotificationAPI();
 	prvExerciseStreamBufferAPI();
+	prvExerciseTimerAPI();
 
 	/* For code coverage test purposes it is deleted by the Idle task. */
 	configASSERT( uxTaskGetStackHighWaterMark( NULL ) > 0 );
@@ -771,6 +780,72 @@
 }
 /*-----------------------------------------------------------*/
 
+static void prvPendedFunctionCall( void *pvParameter1, uint32_t ulParameter2 )
+{
+uint32_t *pulCounter = ( uint32_t * ) pvParameter1;
+	
+	/* Increment the paramater to show the pended function has executed. */
+	( *pulCounter )++;
+}
+/*-----------------------------------------------------------*/
+
+static void prvTestTimerCallback( TimerHandle_t xTimer )
+{
+uint32_t ulTimerID;
+	
+	/* Increment the timer's ID to show the callback has executed. */
+	ulTimerID = ( uint32_t ) pvTimerGetTimerID( xTimer );
+	ulTimerID++;
+	vTimerSetTimerID( xTimer, ( void * ) ulTimerID );
+}
+/*-----------------------------------------------------------*/
+
+static void prvExerciseTimerAPI( void )
+{
+TimerHandle_t xTimer;
+const char * const pcTimerName = "TestTimer";
+const TickType_t x10ms = pdMS_TO_TICKS( 3 );
+uint32_t ulValueForTesting = 0;
+	
+	xTimer = xTimerCreate( 	pcTimerName, 
+							x10ms,
+							pdFALSE, /* Created as a one shot timer. */
+							0,
+							prvTestTimerCallback );
+	configASSERT( xTimer );	
+	configASSERT( xTimerIsTimerActive( xTimer ) == pdFALSE );
+	configASSERT( xTimerGetTimerDaemonTaskHandle() != NULL );
+	configASSERT( strcmp( pcTimerName, pcTimerGetName( xTimer ) ) == 0 );
+	configASSERT( xTimerGetPeriod( xTimer ) == x10ms );
+	configASSERT( xTimerGetExpiryTime( xTimer ) == 0 ); /* The timer has been created only. */
+	
+	/* Pend a function then wait for it to execute.  All it does is increment
+	its parameter. */
+	xTimerPendFunctionCall( prvPendedFunctionCall, &ulValueForTesting, 0, 0 );
+	vTaskDelay( x10ms );
+	configASSERT( ulValueForTesting == 1 );
+	
+	/* Timer was created as a one shot timer.  Its callback just increments the
+	timer's ID - so set the ID to 0, let the timer run for a number of timeout
+	periods, then check the timer has only executed once. */
+	vTimerSetTimerID( xTimer, ( void * ) 0 );
+	xTimerStart( xTimer, 0 );
+	vTaskDelay( 3UL * x10ms );
+	configASSERT( ( ( uint32_t ) ( pvTimerGetTimerID( xTimer ) ) ) == 1UL );
+	
+	/* Now change the timer to be an autoreload timer and check it executes
+	the expected number of times. */
+	vTimerSetReloadMode( xTimer, pdTRUE );
+	xTimerStart( xTimer, 0 );
+	vTaskDelay( 3UL * x10ms );
+	configASSERT( ( uint32_t ) ( pvTimerGetTimerID( xTimer ) ) > 3UL );
+	configASSERT( xTimerStop( xTimer, 0 ) != pdFAIL );
+	
+	/* Clean up at the end. */
+	xTimerDelete( xTimer, portMAX_DELAY );
+}
+/*-----------------------------------------------------------*/
+
 static void prvExerciseStreamBufferAPI( void )
 {
 uint8_t ucBuffer[ 10 ];
@@ -799,19 +874,6 @@
 										  0 );
 		configASSERT( xReturned == sizeof( xRead ) );
 		configASSERT( xRead == x );
-
-		xStreamBufferSendFromISR( xStreamBuffer,
-								 ( void * ) &x,
-								 sizeof( x ),
-								 NULL );
-		configASSERT( xReturned == sizeof( x ) );
-
-		xReturned = xStreamBufferReceiveFromISR( xStreamBuffer,
-												 ( void * ) &xRead,
-												 sizeof( xRead ),
-												 NULL );
-		configASSERT( xReturned == sizeof( xRead ) );
-		configASSERT( xRead == x );
 		configASSERT( xStreamBufferIsFull( xStreamBuffer ) == pdFALSE );
 		configASSERT( xStreamBufferIsEmpty( xStreamBuffer ) == pdTRUE );
 		configASSERT( xStreamBufferSpacesAvailable( xStreamBuffer ) == sizeof( ucBuffer ) );
@@ -865,8 +927,12 @@
 	test purposes. */
 	if( xTaskToDelete != NULL )
 	{
-		vTaskDelete( xTaskToDelete );
-		xTaskToDelete = NULL;
+		if( eTaskGetState( xTaskToDelete ) == eSuspended )
+		{
+			/* The task has finished its tests and can be deleted. */
+			vTaskDelete( xTaskToDelete );
+			xTaskToDelete = NULL;
+		}
 	}
 
 	( void ) ulReadData;
