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