]> git.sur5r.net Git - freertos/blobdiff - FreeRTOS/Demo/CORTEX_STM32F100_Atollic/Simple_Demo_Source/main.c
Change version numbers ready for V8.0.0 release candidate 1 tag.
[freertos] / FreeRTOS / Demo / CORTEX_STM32F100_Atollic / Simple_Demo_Source / main.c
index e5c7b46f13481452914f9020c9397f29c8f97de7..aa03b12c694962cefe848fc8975e3e7998aa4a30 100644 (file)
@@ -1,5 +1,6 @@
 /*\r
-    FreeRTOS V7.5.2 - Copyright (C) 2013 Real Time Engineers Ltd.\r
+    FreeRTOS V8.0.0:rc1 - Copyright (C) 2014 Real Time Engineers Ltd.\r
+    All rights reserved\r
 \r
     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
 \r
 \r
 /*\r
 This simple demo project runs on the STM32 Discovery board, which is\r
-populated with an STM32F100RB Cortex-M3 microcontroller.  The discovery board \r
+populated with an STM32F100RB Cortex-M3 microcontroller.  The discovery board\r
 makes an ideal low cost evaluation platform, but the 8K of RAM provided on the\r
-STM32F100RB does not allow the simple application to demonstrate all of all the \r
-FreeRTOS kernel features.  Therefore, this simple demo only actively \r
-demonstrates task, queue, timer and interrupt functionality.  In addition, the \r
-demo is configured to include malloc failure, idle and stack overflow hook \r
+STM32F100RB does not allow the simple application to demonstrate all of all the\r
+FreeRTOS kernel features.  Therefore, this simple demo only actively\r
+demonstrates task, queue, timer and interrupt functionality.  In addition, the\r
+demo is configured to include malloc failure, idle and stack overflow hook\r
 functions.\r
 \r
 The idle hook function:\r
 The idle hook function queries the amount of FreeRTOS heap space that is\r
-remaining (see vApplicationIdleHook() defined in this file).  The demo \r
-application is configured to use 7K of the available 8K of RAM as the FreeRTOS \r
-heap.  Memory is only allocated from this heap during initialisation, and this \r
-demo only actually uses 1.6K bytes of the configured 7K available - leaving 5.4K \r
+remaining (see vApplicationIdleHook() defined in this file).  The demo\r
+application is configured to use 7K of the available 8K of RAM as the FreeRTOS\r
+heap.  Memory is only allocated from this heap during initialisation, and this\r
+demo only actually uses 1.6K bytes of the configured 7K available - leaving 5.4K\r
 bytes of heap space unallocated.\r
 \r
 The main() Function:\r
@@ -85,31 +86,31 @@ main() creates one software timer, one queue, and two tasks.  It then starts the
 scheduler.\r
 \r
 The Queue Send Task:\r
-The queue send task is implemented by the prvQueueSendTask() function in this \r
-file.  prvQueueSendTask() sits in a loop that causes it to repeatedly block for \r
-200 milliseconds, before sending the value 100 to the queue that was created \r
+The queue send task is implemented by the prvQueueSendTask() function in this\r
+file.  prvQueueSendTask() sits in a loop that causes it to repeatedly block for\r
+200 milliseconds, before sending the value 100 to the queue that was created\r
 within main().  Once the value is sent, the task loops back around to block for\r
 another 200 milliseconds.\r
 \r
 The Queue Receive Task:\r
 The queue receive task is implemented by the prvQueueReceiveTask() function\r
-in this file.  prvQueueReceiveTask() sits in a loop where it repeatedly blocks \r
-on attempts to read data from the queue that was created within main().  When \r
-data is received, the task checks the value of the data, and if the value equals \r
-the expected 100, toggles the green LED.  The 'block time' parameter passed to \r
-the queue receive function specifies that the task should be held in the Blocked \r
-state indefinitely to wait for data to be available on the queue.  The queue \r
-receive task will only leave the Blocked state when the queue send task writes \r
-to the queue.  As the queue send task writes to the queue every 200 \r
-milliseconds, the queue receive task leaves the Blocked state every 200 \r
+in this file.  prvQueueReceiveTask() sits in a loop where it repeatedly blocks\r
+on attempts to read data from the queue that was created within main().  When\r
+data is received, the task checks the value of the data, and if the value equals\r
+the expected 100, toggles the green LED.  The 'block time' parameter passed to\r
+the queue receive function specifies that the task should be held in the Blocked\r
+state indefinitely to wait for data to be available on the queue.  The queue\r
+receive task will only leave the Blocked state when the queue send task writes\r
+to the queue.  As the queue send task writes to the queue every 200\r
+milliseconds, the queue receive task leaves the Blocked state every 200\r
 milliseconds, and therefore toggles the green LED every 200 milliseconds.\r
 \r
 The LED Software Timer and the Button Interrupt:\r
 The user button B1 is configured to generate an interrupt each time it is\r
-pressed.  The interrupt service routine switches the red LED on, and resets the \r
+pressed.  The interrupt service routine switches the red LED on, and resets the\r
 LED software timer.  The LED timer has a 5000 millisecond (5 second) period, and\r
-uses a callback function that is defined to just turn the red LED off.  \r
-Therefore, pressing the user button will turn the red LED on, and the LED will \r
+uses a callback function that is defined to just turn the red LED off.\r
+Therefore, pressing the user button will turn the red LED on, and the LED will\r
 remain on until a full five seconds pass without the button being pressed.\r
 */\r
 \r
@@ -151,7 +152,7 @@ static void prvQueueReceiveTask( void *pvParameters );
 static void prvQueueSendTask( void *pvParameters );\r
 \r
 /*\r
- * The LED timer callback function.  This does nothing but switch the red LED \r
+ * The LED timer callback function.  This does nothing but switch the red LED\r
  * off.\r
  */\r
 static void vLEDTimerCallback( xTimerHandle xTimer );\r
@@ -162,7 +163,7 @@ static void vLEDTimerCallback( xTimerHandle xTimer );
 static xQueueHandle xQueue = NULL;\r
 \r
 /* The LED software timer.  This uses vLEDTimerCallback() as its callback\r
- * function. \r
+ * function.\r
  */\r
 static xTimerHandle xLEDTimer = NULL;\r
 \r
@@ -180,17 +181,17 @@ int main(void)
        {\r
                /* Start the two tasks as described in the comments at the top of this\r
                file. */\r
-               xTaskCreate( prvQueueReceiveTask, ( signed char * ) "Rx", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_RECEIVE_TASK_PRIORITY, NULL );\r
-               xTaskCreate( prvQueueSendTask, ( signed char * ) "TX", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_SEND_TASK_PRIORITY, NULL );\r
+               xTaskCreate( prvQueueReceiveTask, "Rx", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_RECEIVE_TASK_PRIORITY, NULL );\r
+               xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_SEND_TASK_PRIORITY, NULL );\r
 \r
-               /* Create the software timer that is responsible for turning off the LED \r
-               if the button is not pushed within 5000ms, as described at the top of \r
+               /* Create the software timer that is responsible for turning off the LED\r
+               if the button is not pushed within 5000ms, as described at the top of\r
                this file. */\r
-               xLEDTimer = xTimerCreate(       ( const signed char * ) "LEDTimer", /* A text name, purely to help debugging. */\r
-                                                                       ( 5000 / portTICK_RATE_MS ),            /* The timer period, in this case 5000ms (5s). */\r
-                                                                       pdFALSE,                                                        /* This is a one shot timer, so xAutoReload is set to pdFALSE. */\r
-                                                                       ( void * ) 0,                                           /* The ID is not used, so can be set to anything. */\r
-                                                                       vLEDTimerCallback                                       /* The callback function that switches the LED off. */\r
+               xLEDTimer = xTimerCreate(       "LEDTimer",                             /* A text name, purely to help debugging. */\r
+                                                                       ( 5000 / portTICK_RATE_MS ),/* The timer period, in this case 5000ms (5s). */\r
+                                                                       pdFALSE,                                        /* This is a one shot timer, so xAutoReload is set to pdFALSE. */\r
+                                                                       ( void * ) 0,                           /* The ID is not used, so can be set to anything. */\r
+                                                                       vLEDTimerCallback                       /* The callback function that switches the LED off. */\r
                                                                );\r
 \r
                /* Start the tasks and timer running. */\r
@@ -285,8 +286,8 @@ unsigned long ulReceivedValue;
                if( ulReceivedValue == 100UL )\r
                {\r
                        /* NOTE - accessing the LED port should use a critical section\r
-                       because it is accessed from multiple tasks, and the button interrupt \r
-                       - in this trivial case, for simplicity, the critical section is \r
+                       because it is accessed from multiple tasks, and the button interrupt\r
+                       - in this trivial case, for simplicity, the critical section is\r
                        omitted. */\r
                        STM32vldiscovery_LEDToggle( LED3 );\r
                }\r
@@ -304,7 +305,7 @@ static void prvSetupHardware( void )
        STM32vldiscovery_LEDInit( LED3 );\r
        STM32vldiscovery_LEDInit( LED4 );\r
        STM32vldiscovery_PBInit( BUTTON_USER, BUTTON_MODE_EXTI );\r
-       \r
+\r
        /* Start with the LEDs off. */\r
        STM32vldiscovery_LEDOff( LED3 );\r
        STM32vldiscovery_LEDOff( LED4 );\r
@@ -315,14 +316,14 @@ void vApplicationMallocFailedHook( void )
 {\r
        /* Called if a call to pvPortMalloc() fails because there is insufficient\r
        free memory available in the FreeRTOS heap.  pvPortMalloc() is called\r
-       internally by FreeRTOS API functions that create tasks, queues, software \r
+       internally by FreeRTOS API functions that create tasks, queues, software\r
        timers, and semaphores.  The size of the FreeRTOS heap is set by the\r
        configTOTAL_HEAP_SIZE configuration constant in FreeRTOSConfig.h. */\r
        for( ;; );\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
-void vApplicationStackOverflowHook( xTaskHandle pxTask, signed char *pcTaskName )\r
+void vApplicationStackOverflowHook( xTaskHandle pxTask, char *pcTaskName )\r
 {\r
        ( void ) pcTaskName;\r
        ( void ) pxTask;\r
@@ -339,7 +340,7 @@ void vApplicationIdleHook( void )
 volatile size_t xFreeStackSpace;\r
 \r
        /* This function is called on each cycle of the idle task.  In this case it\r
-       does nothing useful, other than report the amout of FreeRTOS heap that \r
+       does nothing useful, other than report the amout of FreeRTOS heap that\r
        remains unallocated. */\r
        xFreeStackSpace = xPortGetFreeHeapSize();\r
 \r