]> git.sur5r.net Git - freertos/commitdiff
RL78/IAR port - Allow the end user to define their own tick interrupt configuration...
authorrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Mon, 25 Mar 2013 17:00:13 +0000 (17:00 +0000)
committerrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Mon, 25 Mar 2013 17:00:13 +0000 (17:00 +0000)
git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@1849 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

FreeRTOS/Source/portable/IAR/RL78/port.c

index b10aa52c70903ffffef16750fc7bc0916bd1cc8c..bb39445d1a3f502c31c0f3c6d3ec7fac2d6fb1d4 100644 (file)
@@ -111,9 +111,17 @@ volatile unsigned short usCriticalNesting = portINITIAL_CRITICAL_NESTING;
 /*-----------------------------------------------------------*/\r
 \r
 /*\r
- * Sets up the periodic ISR used for the RTOS tick.\r
+ * Sets up the periodic ISR used for the RTOS tick using the interval timer.\r
+ * The application writer can define configSETUP_TIMER_INTERRUPT() (in\r
+ * FreeRTOSConfig.h) such that their own tick interrupt configuration is used\r
+ * in place of prvSetupTimerInterrupt().\r
  */\r
 static void prvSetupTimerInterrupt( void );\r
+#ifndef configSETUP_TIMER_INTERRUPT\r
+       /* The user has not provided their own tick interrupt configuration so use\r
+    the definition in this file (which uses the interval timer). */\r
+       #define configSETUP_TIMER_INTERRUPT() prvSetupTimerInterrupt()\r
+#endif /* configSETUP_TIMER_INTERRUPT */\r
 \r
 /*\r
  * Defined in portasm.s87, this function starts the scheduler by loading the\r
@@ -200,7 +208,7 @@ unsigned long *pulLocal;
        first starts. */\r
        *pxTopOfStack = ( portSTACK_TYPE ) portNO_CRITICAL_SECTION_NESTING;\r
 \r
-       /* Return a pointer to the top of the stack that has beene generated so it\r
+       /* Return a pointer to the top of the stack that has been generated so it\r
        can     be stored in the task control block for the task. */\r
        return pxTopOfStack;\r
 }\r
@@ -210,20 +218,25 @@ portBASE_TYPE xPortStartScheduler( void )
 {\r
        /* Setup the hardware to generate the tick.  Interrupts are disabled when\r
        this function is called. */\r
-       prvSetupTimerInterrupt();\r
+       configSETUP_TIMER_INTERRUPT();\r
 \r
        /* Restore the context of the first task that is going to run. */\r
        vPortStartFirstTask();\r
 \r
-       /* Execution should not reach here as the tasks are now running! */\r
+       /* Execution should not reach here as the tasks are now running!\r
+       prvSetupTimerInterrupt() is called here to prevent the compiler outputting\r
+       a warning about a statically declared function not being referenced in the\r
+       case that the application writer has provided their own tick interrupt\r
+       configuration routine (and defined configSETUP_TIMER_INTERRUPT() such that\r
+       their own routine will be called in place of prvSetupTimerInterrupt()). */\r
+       prvSetupTimerInterrupt();\r
        return pdTRUE;\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
 void vPortEndScheduler( void )\r
 {\r
-       /* It is unlikely that the RL78/G13 port will get stopped.  If required simply\r
-       disable the tick interrupt here. */\r
+       /* It is unlikely that the RL78 port will get stopped. */\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r