mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-06-16 09:19:05 -04:00
Add the queue set test to the SAM4S-EK Atmel Studio code.
This commit is contained in:
parent
232a5b3433
commit
d328ae3bfc
|
@ -51,6 +51,7 @@ IF EXIST src\asf\thirdparty\FreeRTOS Goto END
|
||||||
copy %COMMON_SOURCE%\recmutex.c src\Common-Demo-Source
|
copy %COMMON_SOURCE%\recmutex.c src\Common-Demo-Source
|
||||||
copy %COMMON_SOURCE%\countsem.c src\Common-Demo-Source
|
copy %COMMON_SOURCE%\countsem.c src\Common-Demo-Source
|
||||||
copy %COMMON_SOURCE%\integer.c src\Common-Demo-Source
|
copy %COMMON_SOURCE%\integer.c src\Common-Demo-Source
|
||||||
|
copy %COMMON_SOURCE%\QueueSet.c src\Common-Demo-Source
|
||||||
|
|
||||||
REM Copy the common demo file headers.
|
REM Copy the common demo file headers.
|
||||||
copy %COMMON_INCLUDE%\*.h src\Common-Demo-Source\include
|
copy %COMMON_INCLUDE%\*.h src\Common-Demo-Source\include
|
||||||
|
|
Binary file not shown.
|
@ -7,7 +7,7 @@
|
||||||
<Name>$(MSBuildProjectName)</Name>
|
<Name>$(MSBuildProjectName)</Name>
|
||||||
<AssemblyName>$(MSBuildProjectName)</AssemblyName>
|
<AssemblyName>$(MSBuildProjectName)</AssemblyName>
|
||||||
<RootNamespace>$(MSBuildProjectName)</RootNamespace>
|
<RootNamespace>$(MSBuildProjectName)</RootNamespace>
|
||||||
<AsfVersion>3.1.3</AsfVersion>
|
<AsfVersion>2.11.1</AsfVersion>
|
||||||
<AsfFrameworkConfig>
|
<AsfFrameworkConfig>
|
||||||
<framework-data>
|
<framework-data>
|
||||||
<options>
|
<options>
|
||||||
|
@ -154,19 +154,19 @@
|
||||||
<avrtoolinterface>JTAG</avrtoolinterface>
|
<avrtoolinterface>JTAG</avrtoolinterface>
|
||||||
<avrtool>com.atmel.avrdbg.tool.samice</avrtool>
|
<avrtool>com.atmel.avrdbg.tool.samice</avrtool>
|
||||||
<com_atmel_avrdbg_tool_samice>
|
<com_atmel_avrdbg_tool_samice>
|
||||||
<ToolType xmlns="">com.atmel.avrdbg.tool.samice</ToolType>
|
<ToolType>com.atmel.avrdbg.tool.samice</ToolType>
|
||||||
<ToolName xmlns="">SAM-ICE</ToolName>
|
<ToolName>J-Link</ToolName>
|
||||||
<ToolNumber xmlns="">000158000789</ToolNumber>
|
<ToolNumber>000158008149</ToolNumber>
|
||||||
<KeepTimersRunning xmlns="">true</KeepTimersRunning>
|
<KeepTimersRunning>true</KeepTimersRunning>
|
||||||
<OverrideVtor xmlns="">false</OverrideVtor>
|
<OverrideVtor>false</OverrideVtor>
|
||||||
<OverrideVtorValue xmlns="">
|
<OverrideVtorValue>
|
||||||
</OverrideVtorValue>
|
</OverrideVtorValue>
|
||||||
<Channel xmlns="">
|
<Channel>
|
||||||
<host>127.0.0.1</host>
|
<host>127.0.0.1</host>
|
||||||
<port>3166</port>
|
<port>1637</port>
|
||||||
<ssl>False</ssl>
|
<ssl>False</ssl>
|
||||||
</Channel>
|
</Channel>
|
||||||
<ToolOptions xmlns="">
|
<ToolOptions>
|
||||||
<InterfaceName>JTAG</InterfaceName>
|
<InterfaceName>JTAG</InterfaceName>
|
||||||
<InterfaceProperties>
|
<InterfaceProperties>
|
||||||
<JtagDbgClock>4000000</JtagDbgClock>
|
<JtagDbgClock>4000000</JtagDbgClock>
|
||||||
|
@ -425,6 +425,9 @@
|
||||||
<Compile Include="src\Common-Demo-Source\include\demo_serial.h">
|
<Compile Include="src\Common-Demo-Source\include\demo_serial.h">
|
||||||
<SubType>compile</SubType>
|
<SubType>compile</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="src\Common-Demo-Source\QueueSet.c">
|
||||||
|
<SubType>compile</SubType>
|
||||||
|
</Compile>
|
||||||
<Compile Include="src\serial.c">
|
<Compile Include="src\serial.c">
|
||||||
<SubType>compile</SubType>
|
<SubType>compile</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.3.0 - Copyright (C) 2012 Real Time Engineers Ltd.
|
FreeRTOS V7.3.0 - Copyright (C) 2012 Real Time Engineers Ltd.
|
||||||
|
|
||||||
FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME. PLEASE VISIT
|
FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME. PLEASE VISIT
|
||||||
http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
@ -42,7 +42,7 @@
|
||||||
FreeRTOS WEB site.
|
FreeRTOS WEB site.
|
||||||
|
|
||||||
1 tab == 4 spaces!
|
1 tab == 4 spaces!
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
* Having a problem? Start by reading the FAQ "My application does *
|
* Having a problem? Start by reading the FAQ "My application does *
|
||||||
|
@ -52,17 +52,17 @@
|
||||||
* *
|
* *
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
|
||||||
|
|
||||||
http://www.FreeRTOS.org - Documentation, training, latest versions, license
|
http://www.FreeRTOS.org - Documentation, training, latest versions, license
|
||||||
and contact details.
|
and contact details.
|
||||||
|
|
||||||
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||||
including FreeRTOS+Trace - an indispensable productivity tool.
|
including FreeRTOS+Trace - an indispensable productivity tool.
|
||||||
|
|
||||||
Real Time Engineers ltd license FreeRTOS to High Integrity Systems, who sell
|
Real Time Engineers ltd license FreeRTOS to High Integrity Systems, who sell
|
||||||
the code with commercial support, indemnification, and middleware, under
|
the code with commercial support, indemnification, and middleware, under
|
||||||
the OpenRTOS brand: http://www.OpenRTOS.com. High Integrity Systems also
|
the OpenRTOS brand: http://www.OpenRTOS.com. High Integrity Systems also
|
||||||
provide a safety engineered and independently SIL3 certified version under
|
provide a safety engineered and independently SIL3 certified version under
|
||||||
the SafeRTOS brand: http://www.SafeRTOS.com.
|
the SafeRTOS brand: http://www.SafeRTOS.com.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -70,12 +70,12 @@
|
||||||
#ifndef FREERTOS_CONFIG_H
|
#ifndef FREERTOS_CONFIG_H
|
||||||
#define FREERTOS_CONFIG_H
|
#define FREERTOS_CONFIG_H
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The following #error directive is to remind users that a batch file must be
|
* The following #error directive is to remind users that a batch file must be
|
||||||
* executed prior to this project being built. Once it has been executed
|
* executed prior to this project being built. Once it has been executed
|
||||||
* remove the #error line below.
|
* remove the #error line below.
|
||||||
*/
|
*/
|
||||||
#error Ensure CreateProjectDirectoryStructure.bat has been executed before building. See comment immediately above.
|
//#error Ensure CreateProjectDirectoryStructure.bat has been executed before building. See comment immediately above.
|
||||||
|
|
||||||
/*-----------------------------------------------------------
|
/*-----------------------------------------------------------
|
||||||
* Application specific definitions.
|
* Application specific definitions.
|
||||||
|
@ -94,7 +94,7 @@ extern uint32_t SystemCoreClock;
|
||||||
|
|
||||||
#define configUSE_PREEMPTION 1
|
#define configUSE_PREEMPTION 1
|
||||||
#define configUSE_IDLE_HOOK 0
|
#define configUSE_IDLE_HOOK 0
|
||||||
#define configUSE_TICK_HOOK 0
|
#define configUSE_TICK_HOOK 1
|
||||||
#define configCPU_CLOCK_HZ ( SystemCoreClock )
|
#define configCPU_CLOCK_HZ ( SystemCoreClock )
|
||||||
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
|
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
|
||||||
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )
|
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )
|
||||||
|
@ -111,6 +111,7 @@ extern uint32_t SystemCoreClock;
|
||||||
#define configUSE_MALLOC_FAILED_HOOK 1
|
#define configUSE_MALLOC_FAILED_HOOK 1
|
||||||
#define configUSE_APPLICATION_TASK_TAG 0
|
#define configUSE_APPLICATION_TASK_TAG 0
|
||||||
#define configUSE_COUNTING_SEMAPHORES 1
|
#define configUSE_COUNTING_SEMAPHORES 1
|
||||||
|
#define configUSE_QUEUE_SETS 1
|
||||||
#define configGENERATE_RUN_TIME_STATS 0
|
#define configGENERATE_RUN_TIME_STATS 0
|
||||||
|
|
||||||
/* Co-routine definitions. */
|
/* Co-routine definitions. */
|
||||||
|
@ -157,11 +158,11 @@ to all Cortex-M ports, and do not rely on any particular library functions. */
|
||||||
/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!!
|
/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!!
|
||||||
See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */
|
See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */
|
||||||
#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
|
#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
|
||||||
|
|
||||||
/* Normal assert() semantics without relying on the provision of an assert.h
|
/* Normal assert() semantics without relying on the provision of an assert.h
|
||||||
header file. */
|
header file. */
|
||||||
#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); }
|
#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); }
|
||||||
|
|
||||||
/* Definitions that map the FreeRTOS port interrupt handlers to their CMSIS
|
/* Definitions that map the FreeRTOS port interrupt handlers to their CMSIS
|
||||||
standard names. */
|
standard names. */
|
||||||
#define vPortSVCHandler SVC_Handler
|
#define vPortSVCHandler SVC_Handler
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.3.0 - Copyright (C) 2012 Real Time Engineers Ltd.
|
FreeRTOS V7.3.0 - Copyright (C) 2012 Real Time Engineers Ltd.
|
||||||
|
|
||||||
FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME. PLEASE VISIT
|
FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME. PLEASE VISIT
|
||||||
http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
@ -42,7 +42,7 @@
|
||||||
FreeRTOS WEB site.
|
FreeRTOS WEB site.
|
||||||
|
|
||||||
1 tab == 4 spaces!
|
1 tab == 4 spaces!
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
* Having a problem? Start by reading the FAQ "My application does *
|
* Having a problem? Start by reading the FAQ "My application does *
|
||||||
|
@ -52,17 +52,17 @@
|
||||||
* *
|
* *
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
|
||||||
|
|
||||||
http://www.FreeRTOS.org - Documentation, training, latest versions, license
|
http://www.FreeRTOS.org - Documentation, training, latest versions, license
|
||||||
and contact details.
|
and contact details.
|
||||||
|
|
||||||
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||||
including FreeRTOS+Trace - an indispensable productivity tool.
|
including FreeRTOS+Trace - an indispensable productivity tool.
|
||||||
|
|
||||||
Real Time Engineers ltd license FreeRTOS to High Integrity Systems, who sell
|
Real Time Engineers ltd license FreeRTOS to High Integrity Systems, who sell
|
||||||
the code with commercial support, indemnification, and middleware, under
|
the code with commercial support, indemnification, and middleware, under
|
||||||
the OpenRTOS brand: http://www.OpenRTOS.com. High Integrity Systems also
|
the OpenRTOS brand: http://www.OpenRTOS.com. High Integrity Systems also
|
||||||
provide a safety engineered and independently SIL3 certified version under
|
provide a safety engineered and independently SIL3 certified version under
|
||||||
the SafeRTOS brand: http://www.SafeRTOS.com.
|
the SafeRTOS brand: http://www.SafeRTOS.com.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -104,9 +104,9 @@ or 0 to run the more comprehensive test and demo application. */
|
||||||
*/
|
*/
|
||||||
static void prvSetupHardware( void );
|
static void prvSetupHardware( void );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* main_blinky() is used when mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 1.
|
* main_blinky() is used when mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 1.
|
||||||
* main_full() is used when mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 0.
|
* main_full() is used when mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 0.
|
||||||
*/
|
*/
|
||||||
extern void main_blinky( void );
|
extern void main_blinky( void );
|
||||||
extern void main_full( void );
|
extern void main_full( void );
|
||||||
|
@ -146,11 +146,11 @@ extern void SystemCoreClockUpdate( void );
|
||||||
|
|
||||||
/* Ensure all priority bits are assigned as preemption priority bits. */
|
/* Ensure all priority bits are assigned as preemption priority bits. */
|
||||||
NVIC_SetPriorityGrouping( 0 );
|
NVIC_SetPriorityGrouping( 0 );
|
||||||
|
|
||||||
/* Atmel library function to setup for the evaluation kit being used. */
|
/* Atmel library function to setup for the evaluation kit being used. */
|
||||||
board_init();
|
board_init();
|
||||||
|
|
||||||
/* Perform any configuration necessary to use the ParTest LED output
|
/* Perform any configuration necessary to use the ParTest LED output
|
||||||
functions. */
|
functions. */
|
||||||
vParTestInitialise();
|
vParTestInitialise();
|
||||||
}
|
}
|
||||||
|
@ -200,13 +200,3 @@ void vApplicationStackOverflowHook( xTaskHandle pxTask, signed char *pcTaskName
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
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()). */
|
|
||||||
}
|
|
||||||
/*-----------------------------------------------------------*/
|
|
||||||
|
|
||||||
|
|
|
@ -240,3 +240,13 @@ unsigned long ulReceivedValue;
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
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()). */
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
FreeRTOS V7.3.0 - Copyright (C) 2012 Real Time Engineers Ltd.
|
FreeRTOS V7.3.0 - Copyright (C) 2012 Real Time Engineers Ltd.
|
||||||
|
|
||||||
FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME. PLEASE VISIT
|
FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME. PLEASE VISIT
|
||||||
http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
@ -42,7 +42,7 @@
|
||||||
FreeRTOS WEB site.
|
FreeRTOS WEB site.
|
||||||
|
|
||||||
1 tab == 4 spaces!
|
1 tab == 4 spaces!
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
* Having a problem? Start by reading the FAQ "My application does *
|
* Having a problem? Start by reading the FAQ "My application does *
|
||||||
|
@ -52,17 +52,17 @@
|
||||||
* *
|
* *
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
|
||||||
|
|
||||||
http://www.FreeRTOS.org - Documentation, training, latest versions, license
|
http://www.FreeRTOS.org - Documentation, training, latest versions, license
|
||||||
and contact details.
|
and contact details.
|
||||||
|
|
||||||
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
|
||||||
including FreeRTOS+Trace - an indispensable productivity tool.
|
including FreeRTOS+Trace - an indispensable productivity tool.
|
||||||
|
|
||||||
Real Time Engineers ltd license FreeRTOS to High Integrity Systems, who sell
|
Real Time Engineers ltd license FreeRTOS to High Integrity Systems, who sell
|
||||||
the code with commercial support, indemnification, and middleware, under
|
the code with commercial support, indemnification, and middleware, under
|
||||||
the OpenRTOS brand: http://www.OpenRTOS.com. High Integrity Systems also
|
the OpenRTOS brand: http://www.OpenRTOS.com. High Integrity Systems also
|
||||||
provide a safety engineered and independently SIL3 certified version under
|
provide a safety engineered and independently SIL3 certified version under
|
||||||
the SafeRTOS brand: http://www.SafeRTOS.com.
|
the SafeRTOS brand: http://www.SafeRTOS.com.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -79,8 +79,8 @@
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*
|
*
|
||||||
* main_full() creates all the demo application tasks and a software timer, then
|
* main_full() creates all the demo application tasks and a software timer, then
|
||||||
* starts the scheduler. The web documentation provides more details of the
|
* starts the scheduler. The web documentation provides more details of the
|
||||||
* standard demo application tasks, which provide no particular functionality,
|
* standard demo application tasks, which provide no particular functionality,
|
||||||
* but do provide a good example of how to use the FreeRTOS API.
|
* but do provide a good example of how to use the FreeRTOS API.
|
||||||
*
|
*
|
||||||
* In addition to the standard demo tasks, the following tasks and tests are
|
* In addition to the standard demo tasks, the following tasks and tests are
|
||||||
|
@ -88,18 +88,18 @@
|
||||||
*
|
*
|
||||||
* "Check" timer - The check software timer period is initially set to three
|
* "Check" timer - The check software timer period is initially set to three
|
||||||
* seconds. The callback function associated with the check software timer
|
* seconds. The callback function associated with the check software timer
|
||||||
* checks that all the standard demo tasks are not only still executing, but
|
* checks that all the standard demo tasks are not only still executing, but
|
||||||
* are executing without reporting any errors. If the check software timer
|
* are executing without reporting any errors. If the check software timer
|
||||||
* discovers that a task has either stalled, or reported an error, then it
|
* discovers that a task has either stalled, or reported an error, then it
|
||||||
* changes its own execution period from the initial three seconds, to just
|
* changes its own execution period from the initial three seconds, to just
|
||||||
* 200ms. The check software timer callback function also toggles the green
|
* 200ms. The check software timer callback function also toggles the green
|
||||||
* LED each time it is called. This provides a visual indication of the system
|
* LED each time it is called. This provides a visual indication of the system
|
||||||
* status: If the green LED toggles every three seconds, then no issues have
|
* status: If the green LED toggles every three seconds, then no issues have
|
||||||
* been discovered. If the green LED toggles every 200ms, then an issue has
|
* been discovered. If the green LED toggles every 200ms, then an issue has
|
||||||
* been discovered with at least one task.
|
* been discovered with at least one task.
|
||||||
*
|
*
|
||||||
* See the documentation page for this demo on the FreeRTOS.org web site for
|
* See the documentation page for this demo on the FreeRTOS.org web site for
|
||||||
* full information, including hardware setup requirements.
|
* full information, including hardware setup requirements.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Standard includes. */
|
/* Standard includes. */
|
||||||
|
@ -125,7 +125,7 @@
|
||||||
#include "flash_timer.h"
|
#include "flash_timer.h"
|
||||||
#include "partest.h"
|
#include "partest.h"
|
||||||
#include "comtest2.h"
|
#include "comtest2.h"
|
||||||
|
#include "QueueSet.h"
|
||||||
|
|
||||||
/* Atmel library includes. */
|
/* Atmel library includes. */
|
||||||
#include "asf.h"
|
#include "asf.h"
|
||||||
|
@ -194,7 +194,8 @@ xTimerHandle xCheckTimer = NULL;
|
||||||
vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );
|
vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );
|
||||||
vStartLEDFlashTimers( mainNUMBER_OF_FLASH_TIMERS_LEDS );
|
vStartLEDFlashTimers( mainNUMBER_OF_FLASH_TIMERS_LEDS );
|
||||||
vAltStartComTestTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED );
|
vAltStartComTestTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED );
|
||||||
|
vStartQueueSetTasks();
|
||||||
|
|
||||||
/* Create the software timer that performs the 'check' functionality,
|
/* Create the software timer that performs the 'check' functionality,
|
||||||
as described at the top of this file. */
|
as described at the top of this file. */
|
||||||
xCheckTimer = xTimerCreate( ( const signed char * ) "CheckTimer",/* A text name, purely to help debugging. */
|
xCheckTimer = xTimerCreate( ( const signed char * ) "CheckTimer",/* A text name, purely to help debugging. */
|
||||||
|
@ -202,27 +203,27 @@ xTimerHandle xCheckTimer = NULL;
|
||||||
pdTRUE, /* This is an auto-reload timer, so xAutoReload is set to pdTRUE. */
|
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. */
|
( 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. */
|
prvCheckTimerCallback /* The callback function that inspects the status of all the other tasks. */
|
||||||
);
|
);
|
||||||
|
|
||||||
if( xCheckTimer != NULL )
|
if( xCheckTimer != NULL )
|
||||||
{
|
{
|
||||||
xTimerStart( xCheckTimer, mainDONT_BLOCK );
|
xTimerStart( xCheckTimer, mainDONT_BLOCK );
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The set of tasks created by the following function call have to be
|
/* The set of tasks created by the following function call have to be
|
||||||
created last as they keep account of the number of tasks they expect to see
|
created last as they keep account of the number of tasks they expect to see
|
||||||
running. */
|
running. */
|
||||||
vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY );
|
vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY );
|
||||||
|
|
||||||
/* Start the scheduler. */
|
/* Start the scheduler. */
|
||||||
vTaskStartScheduler();
|
vTaskStartScheduler();
|
||||||
|
|
||||||
/* If all is well, the scheduler will now be running, and the following line
|
/* 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
|
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
|
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
|
to be created. See the memory management section on the FreeRTOS web site
|
||||||
for more details. */
|
for more details. */
|
||||||
for( ;; );
|
for( ;; );
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -278,17 +279,22 @@ unsigned long ulErrorFound = pdFALSE;
|
||||||
{
|
{
|
||||||
ulErrorFound = pdTRUE;
|
ulErrorFound = pdTRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( xAreComTestTasksStillRunning() != pdTRUE )
|
if( xAreComTestTasksStillRunning() != pdTRUE )
|
||||||
{
|
{
|
||||||
ulErrorFound = pdTRUE;
|
ulErrorFound = pdTRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( xAreQueueSetTasksStillRunning() != pdPASS )
|
||||||
|
{
|
||||||
|
ulErrorFound = pdTRUE;
|
||||||
|
}
|
||||||
|
|
||||||
/* Toggle the check LED to give an indication of the system status. If
|
/* Toggle the check LED to give an indication of the system status. If
|
||||||
the LED toggles every mainCHECK_TIMER_PERIOD_MS milliseconds then
|
the LED toggles every mainCHECK_TIMER_PERIOD_MS milliseconds then
|
||||||
everything is ok. A faster toggle indicates an error. */
|
everything is ok. A faster toggle indicates an error. */
|
||||||
vParTestToggleLED( mainCHECK_LED );
|
vParTestToggleLED( mainCHECK_LED );
|
||||||
|
|
||||||
/* Have any errors been latch in ulErrorFound? If so, shorten the
|
/* Have any errors been latch in ulErrorFound? If so, shorten the
|
||||||
period of the check timer to mainERROR_CHECK_TIMER_PERIOD_MS milliseconds.
|
period of the check timer to mainERROR_CHECK_TIMER_PERIOD_MS milliseconds.
|
||||||
This will result in an increase in the rate at which mainCHECK_LED
|
This will result in an increase in the rate at which mainCHECK_LED
|
||||||
|
@ -298,7 +304,7 @@ unsigned long ulErrorFound = pdFALSE;
|
||||||
if( lChangedTimerPeriodAlready == pdFALSE )
|
if( lChangedTimerPeriodAlready == pdFALSE )
|
||||||
{
|
{
|
||||||
lChangedTimerPeriodAlready = pdTRUE;
|
lChangedTimerPeriodAlready = pdTRUE;
|
||||||
|
|
||||||
/* This call to xTimerChangePeriod() uses a zero block time.
|
/* This call to xTimerChangePeriod() uses a zero block time.
|
||||||
Functions called from inside of a timer callback function must
|
Functions called from inside of a timer callback function must
|
||||||
*never* attempt to block. */
|
*never* attempt to block. */
|
||||||
|
@ -308,3 +314,15 @@ unsigned long ulErrorFound = pdFALSE;
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
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()). In this case the tick
|
||||||
|
hook is used as part of the queue set test. */
|
||||||
|
vQueueSetWriteToQueueFromISR();
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue