diff options
author | inmarket <andrewh@inmarket.com.au> | 2014-07-09 18:47:59 +1000 |
---|---|---|
committer | inmarket <andrewh@inmarket.com.au> | 2014-07-09 18:47:59 +1000 |
commit | 6dea259ea2dd0afc4b610961e211d77460cfd0c6 (patch) | |
tree | 225a157a5ac0c7cf8d4e1b451b47075a57e3110b /boards/base/RaspberryPi/example-FreeRTOS/main.c | |
parent | ab9ce99647965d0d3e9ea65ea92ad694c8b8ee1b (diff) | |
download | uGFX-6dea259ea2dd0afc4b610961e211d77460cfd0c6.tar.gz uGFX-6dea259ea2dd0afc4b610961e211d77460cfd0c6.tar.bz2 uGFX-6dea259ea2dd0afc4b610961e211d77460cfd0c6.zip |
Example added for FreeRTOS on Raspberry Pi
Diffstat (limited to 'boards/base/RaspberryPi/example-FreeRTOS/main.c')
-rw-r--r-- | boards/base/RaspberryPi/example-FreeRTOS/main.c | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/boards/base/RaspberryPi/example-FreeRTOS/main.c b/boards/base/RaspberryPi/example-FreeRTOS/main.c new file mode 100644 index 00000000..3a64a7bb --- /dev/null +++ b/boards/base/RaspberryPi/example-FreeRTOS/main.c @@ -0,0 +1,82 @@ +#include <FreeRTOS.h> +#include <task.h> + +#include "Drivers/interrupts.h" + +#include "gfx.h" + +static void displayTask(void *pvParameters) { + coord_t width, height; + // Get the screen size + width = gdispGetWidth(); + height = gdispGetHeight(); + + // Code Here + gdispDrawBox(10, 10, width/2, height/2, Yellow); + gdispFillArea(width/2, height/2, width/2-10, height/2-10, Blue); + gdispDrawLine(5, 30, width-50, height-40, Red); + + while(1) + { + vTaskDelay(1000); + } + + return; +} + +/** + * This is the systems main entry, some call it a boot thread. + * + * -- Absolutely nothing wrong with this being called main(), just it doesn't have + * -- the same prototype as you'd see in a linux program. + **/ +int main(void) { + + DisableInterrupts(); + InitInterruptController(); + + // Initialize and clear the display + gfxInit(); + + xTaskCreate(displayTask, + (portCHAR *)"Display Task", + 128, + NULL, + 0, + NULL); + + vTaskStartScheduler(); + + /* + * We should never get here, but just in case something goes wrong, + * we'll place the CPU into a safe loop. + */ + while(1) { + ; + } + + return 0; +} + +void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ) +{ + ( void ) pcTaskName; + ( void ) pxTask; + + /* Run time task stack overflow checking is performed if + configCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2. This hook function is + called if a task stack overflow is detected. Note the system/interrupt + stack is not checked. */ + taskDISABLE_INTERRUPTS(); + for( ;; ); +} +/*-----------------------------------------------------------*/ + +void vApplicationTickHook( void ) +{ + /* This function will be called by each tick interrupt if + configUSE_TICK_HOOK is set to 1 in FreeRTOSConfig.h. User code can be + added here, but the tick hook is called from an interrupt context, so + code must not attempt to block, and only the interrupt safe FreeRTOS API + functions can be used (those that end in FromISR()). */ +} |