From 853696a99184420cfac4390d50b699c2250cf644 Mon Sep 17 00:00:00 2001 From: Richard Barry Date: Sun, 16 Feb 2014 22:03:39 +0000 Subject: [PATCH] Add event groups demo to SAM4E demo. --- .../RTOSDemo.atsuo | Bin 102400 -> 99328 bytes .../RTOSDemo.cproj | 8 ++++++++ .../src/config/FreeRTOSConfig.h | 2 ++ .../src/main_full.c | 14 ++++++++++++-- 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/RTOSDemo.atsuo b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/RTOSDemo.atsuo index 864edf72d853a115a559f324f30b9004bc0ab91d..85c113a8bbf7c93dd6054823eee3eb9bf851cd97 100644 GIT binary patch delta 4214 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 src\FreeRTOS+\FreeRTOS+FAT SL\PSP\Target\RTC\psp_rtc.c + + compile + src\FreeRTOS\event_groups.c + compile src\Common Demo Tasks\blocktim.c @@ -569,6 +573,10 @@ compile src\Common Demo Tasks\dynamic.c + + compile + src\Common Demo Tasks\EventGroupsDemo.c + compile src\Common Demo Tasks\flash_timer.c diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/FreeRTOSConfig.h b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/FreeRTOSConfig.h index 335cfb070..758c37cb1 100644 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/FreeRTOSConfig.h +++ b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/config/FreeRTOSConfig.h @@ -143,6 +143,8 @@ to exclude the API function. */ #define INCLUDE_vTaskSuspend 1 #define INCLUDE_vTaskDelayUntil 1 #define INCLUDE_vTaskDelay 1 +#define INCLUDE_eTaskGetState 1 +#define INCLUDE_xTimerPendFunctionCall 1 /* Cortex-M specific definitions. */ #ifdef __NVIC_PRIO_BITS diff --git a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/main_full.c b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/main_full.c index cf39d8fef..1f4840c00 100644 --- a/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/main_full.c +++ b/FreeRTOS/Demo/CORTEX_M4_ATSAM4E_Atmel_Studio/src/main_full.c @@ -135,6 +135,7 @@ #include "QueueOverwrite.h" #include "QueueSet.h" #include "recmutex.h" +#include "EventGroupsDemo.h" /* The period after which the check timer will expire, in ms, provided no errors have been reported by any of the standard demo tasks. ms are converted to the @@ -178,10 +179,11 @@ http://www.FreeRTOS.org/udp */ #define mainCONNECTED_IP_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) #define mainDISCONNECTED_IP_TASK_PRIORITY ( tskIDLE_PRIORITY ) -/* UDP command server task parameters. */ +/* UDP command server and echo task parameters. */ #define mainUDP_CLI_TASK_PRIORITY ( tskIDLE_PRIORITY ) #define mainUDP_CLI_PORT_NUMBER ( 5001UL ) #define mainUDP_CLI_TASK_STACK_SIZE ( configMINIMAL_STACK_SIZE * 2U ) +#define mainECHO_CLIENT_STACK_SIZE ( configMINIMAL_STACK_SIZE + 30 ) /* Set to 1 to include the UDP echo client tasks in the build. The echo clients require the IP address of the echo server to be defined using the @@ -293,6 +295,7 @@ TimerHandle_t xTimer = NULL; 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. */ @@ -365,6 +368,10 @@ unsigned long ulErrorOccurred = pdFALSE; { ulErrorOccurred |= ( 0x01UL << 12UL ); } + else if( xAreEventGroupTasksStillRunning() != pdTRUE ) + { + ulErrorOccurred |= ( 0x01UL << 13UL ); + } if( ulErrorOccurred != pdFALSE ) { @@ -422,7 +429,7 @@ char cIPAddress[ 20 ]; address of the echo server to be defined using the configECHO_SERVER_ADDR0 to configECHO_SERVER_ADDR3 constants in FreeRTOSConfig.h. */ - vStartEchoClientTasks( configMINIMAL_STACK_SIZE, tskIDLE_PRIORITY ); + vStartEchoClientTasks( mainECHO_CLIENT_STACK_SIZE, tskIDLE_PRIORITY ); } #endif } @@ -487,6 +494,9 @@ void vFullDemoTickHook( void ) /* Call the periodic queue set ISR test function. */ vQueueSetAccessQueueSetFromISR(); + + /* Call the event group ISR tests. */ + vPeriodicEventGroupsProcessing(); } /*-----------------------------------------------------------*/