/* | |
* This project contains an application demonstrating the use of the | |
* FreeRTOS.org mini real time scheduler on the Luminary Micro LM3S811 Eval | |
* board. See http://www.FreeRTOS.org for more information. | |
* | |
* main() simply sets up the hardware, creates all the demo application tasks, | |
* then starts the scheduler. http://www.freertos.org/a00102.html provides | |
* more information on the standard demo tasks. | |
* | |
* In addition to a subset of the standard demo application tasks, main.c also | |
* defines the following tasks: | |
* | |
* + A 'Print' task. The print task is the only task permitted to access the | |
* LCD - thus ensuring mutual exclusion and consistent access to the resource. | |
* Other tasks do not access the LCD directly, but instead send the text they | |
* wish to display to the print task. The print task spends most of its time | |
* blocked - only waking when a message is queued for display. | |
* | |
* + A 'Button handler' task. The eval board contains a user push button that | |
* is configured to generate interrupts. The interrupt handler uses a | |
* semaphore to wake the button handler task - demonstrating how the priority | |
* mechanism can be used to defer interrupt processing to the task level. The | |
* button handler task sends a message both to the LCD (via the print task) and | |
* the UART where it can be viewed using a dumb terminal (via the UART to USB | |
* converter on the eval board). NOTES: The dumb terminal must be closed in | |
* order to reflash the microcontroller. A very basic interrupt driven UART | |
* driver is used that does not use the FIFO. 19200 baud is used. | |
* | |
* + A 'check' task. The check task only executes every five seconds but has a | |
* high priority so is guaranteed to get processor time. Its function is to | |
* check that all the other tasks are still operational and that no errors have | |
* been detected at any time. If no errors have every been detected 'PASS' is | |
* written to the display (via the print task) - if an error has ever been | |
* detected the message is changed to 'FAIL'. The position of the message is | |
* changed for each write. | |
*/ |