int main( void ) { const uint32_t ulLongTime_ms = 250UL; /* Create a mutex that is used to guard against the console being accessed by more than one task simultaniously. */ xConsoleMutex = xSemaphoreCreateMutex(); /* Initialise the network interface. Tasks that use the network are created in the network event hook when the network is connected and ready for use. The address values passed in here are used if ipconfigUSE_DHCP is set to 0, or if ipconfigUSE_DHCP is set to 1 but a DHCP server cannot be contacted. */ FreeRTOS_IPInit( ucIPAddress, ucNetMask, ucGatewayAddress, ucDNSServerAddress, ucMACAddress ); /* Register commands with the FreeRTOS+CLI command interpreter. */ vRegisterCLICommands(); /* Start the RTOS scheduler. */ vTaskStartScheduler(); /* If all is well, the scheduler will now be running, and the following line will never be reached. If the following line does execute, then there was insufficient FreeRTOS heap memory available for the idle and/or timer tasks to be created. See the memory management section on the FreeRTOS web site for more details (this is standard text that is not not really applicable to the Win32 simulator port). */ for( ;; ) { Sleep( ulLongTime_ms ); } }
int main() { /* STM32F4xx HAL library initialization: - Configure the Flash prefetch, Flash preread and Buffer caches - Systick timer is configured by default as source of time base, but user can eventually implement his proper time base source (a general purpose timer for example or other time source), keeping in mind that Time base duration should be kept 1ms since PPP_TIMEOUT_VALUEs are defined and handled in milliseconds basis. - Low Level Initialization */ HAL_Init(); /* Configure the system clock to 168 MHz */ SystemClock_Config(); HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); FreeRTOS_IPInit( ucIPAddress, ucNetMask, ucGatewayAddress, ucDNSServerAddress, ucMACAddress ); xTaskCreate(prvInit, "Init", 1000, NULL, 3, NULL); vTaskStartScheduler(); return 0; }
int main( void ) { /* Prepare the trace recorder library. */ #if configINCLUDE_TRACE_RELATED_CLI_COMMANDS == 1 vTraceInitTraceData(); #endif /* The examples assume that all priority bits are assigned as preemption priority bits. */ NVIC_SetPriorityGrouping( 0UL ); /* Start the timer that just toggles an LED to show the demo is running. */ vLEDsInitialise(); /* Start the tasks that implements the command console on the UART, as described above. */ vCDCCommandConsoleStart( mainCDC_COMMAND_CONSOLE_STACK_SIZE, mainCDC_COMMAND_CONSOLE_TASK_PRIORITY ); /* Register CLI commands. */ vRegisterCLICommands(); /* Initialise the network interface. Tasks that use the network are created in the network event hook when the network is connected and ready for use. The address values passed in here are used if ipconfigUSE_DHCP is set to 0, or if ipconfigUSE_DHCP is set to 1 but a DHCP server cannot be contacted. */ FreeRTOS_IPInit( ucIPAddress, ucNetMask, ucGatewayAddress, ucDNSServerAddress, ucMACAddress ); /* If the trace recorder code is included... */ #if configINCLUDE_TRACE_RELATED_CLI_COMMANDS == 1 { extern xQueueHandle xNetworkEventQueue; /* Name the queue for viewing in FreeRTOS+Trace. */ vTraceSetQueueName( xNetworkEventQueue, "IPStackEvent" ); } #endif /* configINCLUDE_TRACE_RELATED_CLI_COMMANDS == 1 */ /* Start the FreeRTOS scheduler. */ vTaskStartScheduler(); /* The following line should never execute. If it does, it means there was insufficient FreeRTOS heap memory available to create the Idle and/or timer tasks. See the memory management section on the http://www.FreeRTOS.org web site for more information. */ for( ;; ); }
int main_full( void ) { /* Usage instructions on http://www.FreeRTOS.org/Atmel_SAM4E_RTOS_Demo.html */ /* Initialise the LCD and output a bitmap. The IP address will also be displayed on the LCD when it has been obtained. */ vInitialiseLCD(); /* If the file system is only going to be accessed from one task then F_FS_THREAD_AWARE can be set to 0 and the set of example files are created before the RTOS scheduler is started. If the file system is going to be access from more than one task then F_FS_THREAD_AWARE must be set to 1 and the set of sample files are created from the idle task hook function vApplicationIdleHook(). */ #if( F_FS_THREAD_AWARE == 0 ) { /* Initialise the drive and file system, then create a few example files. The files can be viewed and accessed via the CLI. View the documentation page for this demo (link at the top of this file) for more information. */ vCreateAndVerifySampleFiles(); } #endif /* Register example generic, file system related and UDP related CLI commands respectively. Type 'help' into the command console to view a list of registered commands. */ vRegisterSampleCLICommands(); vRegisterFileSystemCLICommands(); vRegisterUDPCLICommands(); /* Initialise the network interface. Tasks that use the network are created in the network event hook when the network is connected and ready for use. The address values passed in here are used if ipconfigUSE_DHCP is set to 0, or if ipconfigUSE_DHCP is set to 1 but a DHCP server cannot be contacted. The IP address actually used is displayed on the LCD (after DHCP has completed if DHCP is used). */ FreeRTOS_IPInit( ucIPAddress, ucNetMask, ucGatewayAddress, ucDNSServerAddress, ucMACAddress ); /* Create all the other standard demo tasks. */ vCreateBlockTimeTasks(); vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); vStartQueuePeekTasks(); vStartCountingSemaphoreTasks(); vStartDynamicPriorityTasks(); vStartQueueOverwriteTask( mainQUEUE_OVERWRITE_TASK_PRIORITY ); vStartQueueSetTasks(); vStartRecursiveMutexTasks(); vStartEventGroupTasks(); vStartTaskNotifyTask(); vStartInterruptSemaphoreTasks(); vStartTimerDemoTask( mainTIMER_TEST_PERIOD ); vStartInterruptQueueTasks(); /* Create the register check tasks, as described at the top of this file */ xTaskCreate( prvRegTest1Task, "Reg1", configMINIMAL_STACK_SIZE, ( void * ) NULL, tskIDLE_PRIORITY, NULL ); xTaskCreate( prvRegTest2Task, "Reg2", configMINIMAL_STACK_SIZE, ( void * ) NULL, tskIDLE_PRIORITY, NULL ); /* Start the scheduler itself. */ vTaskStartScheduler(); /* If all is well, the scheduler will now be running, and the following line will never be reached. If the following line does execute, then there was insufficient FreeRTOS heap memory available for the idle and/or timer tasks to be created. See the memory management section on the FreeRTOS web site for more details. */ for( ;; ); }
int main_full( void ) { TimerHandle_t xTimer = NULL; /* Usage instructions on http://www.FreeRTOS.org/Atmel_SAM4E_RTOS_Demo.html */ /* Initialise the LCD and output a bitmap. The IP address will also be displayed on the LCD when it has been obtained. */ vInitialiseLCD(); /* If the file system is only going to be accessed from one task then F_FS_THREAD_AWARE can be set to 0 and the set of example files are created before the RTOS scheduler is started. If the file system is going to be access from more than one task then F_FS_THREAD_AWARE must be set to 1 and the set of sample files are created from the idle task hook function vApplicationIdleHook(). */ #if( F_FS_THREAD_AWARE == 0 ) { /* Initialise the drive and file system, then create a few example files. The files can be viewed and accessed via the CLI. View the documentation page for this demo (link at the top of this file) for more information. */ vCreateAndVerifySampleFiles(); } #endif /* Register example generic, file system related and UDP related CLI commands respectively. Type 'help' into the command console to view a list of registered commands. */ vRegisterSampleCLICommands(); vRegisterFileSystemCLICommands(); vRegisterUDPCLICommands(); /* Initialise the network interface. Tasks that use the network are created in the network event hook when the network is connected and ready for use. The address values passed in here are used if ipconfigUSE_DHCP is set to 0, or if ipconfigUSE_DHCP is set to 1 but a DHCP server cannot be contacted. The IP address actually used is displayed on the LCD (after DHCP has completed if DHCP is used). */ FreeRTOS_IPInit( ucIPAddress, ucNetMask, ucGatewayAddress, ucDNSServerAddress, ucMACAddress ); /* Create all the other standard demo tasks. */ vStartLEDFlashTimers( mainNUM_FLASH_TIMER_LEDS ); vCreateBlockTimeTasks(); vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY ); vStartQueuePeekTasks(); vStartCountingSemaphoreTasks(); vStartDynamicPriorityTasks(); vStartQueueOverwriteTask( mainQUEUE_OVERWRITE_TASK_PRIORITY ); vStartQueueSetTasks(); vStartRecursiveMutexTasks(); vStartEventGroupTasks(); /* Create the software timer that performs the 'check' functionality, as described at the top of this file. */ xTimer = xTimerCreate( "CheckTimer", /* A text name, purely to help debugging. */ ( mainCHECK_TIMER_PERIOD_MS ), /* The timer period, in this case 3000ms (3s). */ pdTRUE, /* This is an auto-reload timer, so xAutoReload is set to pdTRUE. */ ( void * ) 0, /* The ID is not used, so can be set to anything. */ prvCheckTimerCallback ); /* The callback function that inspects the status of all the other tasks. */ if( xTimer != NULL ) { xTimerStart( xTimer, mainDONT_BLOCK ); } /* Start the scheduler itself. */ vTaskStartScheduler(); /* If all is well, the scheduler will now be running, and the following line will never be reached. If the following line does execute, then there was insufficient FreeRTOS heap memory available for the idle and/or timer tasks to be created. See the memory management section on the FreeRTOS web site for more details. */ for( ;; ); }
int main( void ) { BaseType_t res = pdPASS; rtc_t rtc; TickType_t xTimeNow; /* Seed the random number generator. */ xTimeNow = 0;//xTaskGetTickCount(); prvSRand( 0); #if configUSE_TRACE_FACILITY == 1 vTraceInitTraceData(); vTraceSetISRProperties(TIID_EthRx, "i_EthRx", IPRI_EthRx); vTraceSetISRProperties(TIID_EthTx, "i_EthTx", IPRI_EthTx); vTraceSetISRProperties(TIID_EthSys, "i_EthSys", IPRI_EthSys); vTraceSetISRProperties(TIID_Tmr0, "i_Tmr0", IPRI_Tmr0); vTraceSetISRProperties(TIID_Tmr1, "i_Tmr1", IPRI_Tmr1); vTraceSetISRProperties(TIID_Tmr2, "i_Tmr2", IPRI_Tmr2); vTraceSetISRProperties(TIID_rtc, "i_rtc", IPRI_rtc); vTraceSetISRProperties(TIID_uart0, "i_uart0", IPRI_uart0); vTraceSetISRProperties(TIID_uart1, "i_uart1", IPRI_uart1); vTraceSetISRProperties(TIID_button0, "i_swb0", IPRI_button0); vTraceSetISRProperties(TIID_button1, "i_swb1", IPRI_button1); vTraceSetISRProperties(TIID_button2, "i_swb2", IPRI_button2); // uiTraceStart(); // vTraceStop() #endif #if INCLUDE_CONSOLE == 1 || INCLUDE_MODEM == 1 // Include serial port 0 or serial port 1 initSerial(); #endif #if INCLUDE_RTC == 1 // Include Realtime Clock initRTC(); #endif #if INCLUDE_BUTTONS == 1 initButtons(); #endif #if INCLUDE_NETWORK /* Initialise the RTOS's TCP/IP stack. The tasks that use the network are created in the vApplicationIPNetworkEventHook() hook function below. The hook function is called when the network connects. */ res = FreeRTOS_IPInit( ucIPAddress, ucNetMask, ucGatewayAddress, ucDNSServerAddress, ucMACAddress ); //vRegisterSampleCLICommands(); vRegisterTCPCLICommands(); vRegisterMonitorCLICommands(); // Commandline interface (Telnet port 5010) vStartTCPCommandInterpreterTask( 2048, 5010, tskIDLE_PRIORITY + 1); #endif #ifdef INCLUDE_MONITOR // Demo Sysinfo // Connect putty 115200,8,1,n (ansi terminal) to get the status informations res = xTaskCreate( sysinfo, "SysInfo", configMINIMAL_STACK_SIZE*2, (void *)portMAX_DELAY, PRIO_SYSINFO, NULL); #endif #if INCLUDE_LED5x7 == 1 initLED5x7(); res = xTaskCreate( TaskLED, "TaskLED", configMINIMAL_STACK_SIZE, (void *)portMAX_DELAY, PRIO_LED, NULL); #endif #ifdef CPM22 memset(cpmmem,0,sizeof(cpmmem)); res = xTaskCreate( prvTCPCpmIOTask, "CPMIO", configMINIMAL_STACK_SIZE*2, (void*)cpmmem, PRIO_CPMIO, NULL); #endif vTaskStartScheduler(); return res; }