#include #include #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()). */ }