/* Start all the demo application tasks, then start the scheduler. */ void main(void) { /* Initialise the hardware ready for the demo. */ prvSetupHardware(); /* Start the standard demo application tasks. */ vStartLEDFlashTasks( mainLED_TASK_PRIORITY ); vStartIntegerMathTasks( tskIDLE_PRIORITY ); vAltStartComTestTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED - 1 ); vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); vStartBlockingQueueTasks ( mainQUEUE_BLOCK_PRIORITY ); vStartDynamicPriorityTasks(); vStartMathTasks( tskIDLE_PRIORITY ); vStartGenericQueueTasks( mainGENERIC_QUEUE_PRIORITY ); vStartQueuePeekTasks(); vCreateBlockTimeTasks(); vStartFlashCoRoutines( mainNUM_FLASH_CO_ROUTINES ); /* Start the 'Check' task which is defined in this file. */ xTaskCreate( prvErrorChecks, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL ); /* Start the 'Register Test' tasks as described at the top of this file. */ xTaskCreate( vFirstRegisterTestTask, "Reg1", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL ); xTaskCreate( vSecondRegisterTestTask, "Reg2", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL ); /* Start the task that write trace information to the UART. */ vUtilityStartTraceTask( mainUTILITY_TASK_PRIORITY ); /* If we are going to service the watchdog from within a task, then create the task here. */ #if WATCHDOG == WTC_IN_TASK vStartWatchdogTask( mainWATCHDOG_TASK_PRIORITY ); #endif /* The suicide tasks must be started last as they record the number of other tasks that exist within the system. The value is then used to ensure at run time the number of tasks that exists is within expected bounds. */ vCreateSuicidalTasks( mainDEATH_PRIORITY ); /* Now start the scheduler. Following this call the created tasks should be executing. */ vTaskStartScheduler( ); /* vTaskStartScheduler() will only return if an error occurs while the idle task is being created. */ for( ;; ); }
void main( void ) { InitIrqLevels(); /* Initialize interrupts */ __set_il( 7 ); /* Allow all levels */ prvSetupHardware(); #if WATCHDOG == WTC_IN_TASK vStartWatchdogTask( WTC_TASK_PRIORITY ); #endif /* Start the standard demo application tasks. */ vStartLEDFlashTasks( mainLED_TASK_PRIORITY ); vStartIntegerMathTasks( tskIDLE_PRIORITY ); vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); vStartBlockingQueueTasks( mainQUEUE_BLOCK_PRIORITY ); vStartDynamicPriorityTasks(); vStartFlashCoRoutines( mainNUM_FLASH_CO_ROUTINES ); vStartGenericQueueTasks( mainGENERIC_QUEUE_PRIORITY ); vCreateBlockTimeTasks(); /* The definition INCLUDE_TraceListTasks is set within FreeRTOSConfig.h. */ #if INCLUDE_TraceListTasks == 1 vUtilityStartTraceTask( TASK_UTILITY_PRIORITY ); #else vAltStartComTestTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED - 1 ); #endif /* Start the 'Check' task which is defined in this file. */ xTaskCreate( vErrorChecks, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL ); /* The suicide tasks must be started last as they record the number of other tasks that exist within the system. The value is then used to ensure at run time the number of tasks that exists is within expected bounds. */ vCreateSuicidalTasks( mainDEATH_PRIORITY ); /* Now start the scheduler. Following this call the created tasks should be executing. */ vTaskStartScheduler( ); /* vTaskStartScheduler() will only return if an error occurs while the idle task is being created. */ for( ;; ); }
/*--------------------------------------------------------------------------- * main() *---------------------------------------------------------------------------*/ void main( void ) { InitIrqLevels(); /* Initialize interrupts */ __set_il( 7 ); /* Allow all levels */ prvSetupHardware(); #if WATCHDOG == WTC_IN_TASK vStartWatchdogTask( WTC_TASK_PRIORITY ); #endif /* Start the standard demo application tasks. */ #if ( INCLUDE_StartLEDFlashTasks == 1 ) vStartLEDFlashTasks( mainLED_TASK_PRIORITY ); #endif #if ( INCLUDE_StartIntegerMathTasks == 1 ) vStartIntegerMathTasks( tskIDLE_PRIORITY ); #endif #if ( INCLUDE_AltStartComTestTasks == 1 ) vAltStartComTestTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED - 1 ); #endif #if ( INCLUDE_StartPolledQueueTasks == 1 ) vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); #endif #if ( INCLUDE_StartSemaphoreTasks == 1 ) vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); #endif #if ( INCLUDE_StartBlockingQueueTasks == 1 ) vStartBlockingQueueTasks( mainQUEUE_BLOCK_PRIORITY ); #endif #if ( INCLUDE_StartDynamicPriorityTasks == 1 ) vStartDynamicPriorityTasks(); #endif #if ( INCLUDE_StartMathTasks == 1 ) vStartMathTasks( tskIDLE_PRIORITY ); #endif #if ( INCLUDE_StartFlashCoRoutines == 1 ) vStartFlashCoRoutines( ledNUMBER_OF_LEDS ); #endif #if ( INCLUDE_StartHookCoRoutines == 1 ) vStartHookCoRoutines(); #endif #if ( INCLUDE_StartGenericQueueTasks == 1 ) vStartGenericQueueTasks( mainGENERIC_QUEUE_PRIORITY ); #endif #if ( INCLUDE_StartQueuePeekTasks == 1 ) vStartQueuePeekTasks(); #endif #if ( INCLUDE_CreateBlockTimeTasks == 1 ) vCreateBlockTimeTasks(); #endif #if ( INCLUDE_CreateSuicidalTasks == 1 ) vCreateSuicidalTasks( mainDEATH_PRIORITY ); #endif #if ( INCLUDE_TraceListTasks == 1 ) vTraceListTasks( TASK_UTILITY_PRIORITY ); #endif /* Start the 'Check' task which is defined in this file. */ xTaskCreate( vErrorChecks, (signed portCHAR *) "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL ); vTaskStartScheduler(); /* Should not reach here */ while( 1 ) { __asm( " NOP " ); /* // */ } }