Update the demo directory to use the version 8 type naming conventions.
parent
c6d8892b0d
commit
5a2a8fc319
@ -1,343 +1,343 @@
|
|||||||
/*
|
/*
|
||||||
FreeRTOS V8.0.0:rc2 - Copyright (C) 2014 Real Time Engineers Ltd.
|
FreeRTOS V8.0.0:rc2 - Copyright (C) 2014 Real Time Engineers Ltd.
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
* *
|
* *
|
||||||
* FreeRTOS provides completely free yet professionally developed, *
|
* FreeRTOS provides completely free yet professionally developed, *
|
||||||
* robust, strictly quality controlled, supported, and cross *
|
* robust, strictly quality controlled, supported, and cross *
|
||||||
* platform software that has become a de facto standard. *
|
* platform software that has become a de facto standard. *
|
||||||
* *
|
* *
|
||||||
* Help yourself get started quickly and support the FreeRTOS *
|
* Help yourself get started quickly and support the FreeRTOS *
|
||||||
* project by purchasing a FreeRTOS tutorial book, reference *
|
* project by purchasing a FreeRTOS tutorial book, reference *
|
||||||
* manual, or both from: http://www.FreeRTOS.org/Documentation *
|
* manual, or both from: http://www.FreeRTOS.org/Documentation *
|
||||||
* *
|
* *
|
||||||
* Thank you! *
|
* Thank you! *
|
||||||
* *
|
* *
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
|
||||||
This file is part of the FreeRTOS distribution.
|
This file is part of the FreeRTOS distribution.
|
||||||
|
|
||||||
FreeRTOS is free software; you can redistribute it and/or modify it under
|
FreeRTOS is free software; you can redistribute it and/or modify it under
|
||||||
the terms of the GNU General Public License (version 2) as published by the
|
the terms of the GNU General Public License (version 2) as published by the
|
||||||
Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception.
|
Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception.
|
||||||
|
|
||||||
>>! NOTE: The modification to the GPL is included to allow you to distribute
|
>>! NOTE: The modification to the GPL is included to allow you to distribute
|
||||||
>>! a combined work that includes FreeRTOS without being obliged to provide
|
>>! a combined work that includes FreeRTOS without being obliged to provide
|
||||||
>>! the source code for proprietary components outside of the FreeRTOS
|
>>! the source code for proprietary components outside of the FreeRTOS
|
||||||
>>! kernel.
|
>>! kernel.
|
||||||
|
|
||||||
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
|
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
FOR A PARTICULAR PURPOSE. Full license text is available from the following
|
FOR A PARTICULAR PURPOSE. Full license text is available from the following
|
||||||
link: http://www.freertos.org/a00114.html
|
link: http://www.freertos.org/a00114.html
|
||||||
|
|
||||||
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 *
|
||||||
* not run, what could be wrong?" *
|
* not run, what could be wrong?" *
|
||||||
* *
|
* *
|
||||||
* http://www.FreeRTOS.org/FAQHelp.html *
|
* http://www.FreeRTOS.org/FAQHelp.html *
|
||||||
* *
|
* *
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
|
||||||
http://www.FreeRTOS.org - Documentation, books, training, latest versions,
|
http://www.FreeRTOS.org - Documentation, books, training, latest versions,
|
||||||
license and Real Time Engineers Ltd. contact details.
|
license and Real Time Engineers Ltd. 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, a DOS
|
including FreeRTOS+Trace - an indispensable productivity tool, a DOS
|
||||||
compatible FAT file system, and our tiny thread aware UDP/IP stack.
|
compatible FAT file system, and our tiny thread aware UDP/IP stack.
|
||||||
|
|
||||||
http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
|
http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
|
||||||
Integrity Systems to sell under the OpenRTOS brand. Low cost OpenRTOS
|
Integrity Systems to sell under the OpenRTOS brand. Low cost OpenRTOS
|
||||||
licenses offer ticketed support, indemnification and middleware.
|
licenses offer ticketed support, indemnification and middleware.
|
||||||
|
|
||||||
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
|
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
|
||||||
engineered and independently SIL3 certified version for use in safety and
|
engineered and independently SIL3 certified version for use in safety and
|
||||||
mission critical applications that require provable dependability.
|
mission critical applications that require provable dependability.
|
||||||
|
|
||||||
1 tab == 4 spaces!
|
1 tab == 4 spaces!
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* This project provides two demo applications. A simple blinky style project,
|
* This project provides two demo applications. A simple blinky style project,
|
||||||
* and a more comprehensive test and demo application. The
|
* and a more comprehensive test and demo application. The
|
||||||
* mainCREATE_SIMPLE_BLINKY_DEMO_ONLY setting (defined in this file) is used to
|
* mainCREATE_SIMPLE_BLINKY_DEMO_ONLY setting (defined in this file) is used to
|
||||||
* select between the two. The simply blinky demo is implemented and described
|
* select between the two. The simply blinky demo is implemented and described
|
||||||
* in main_blinky.c. The more comprehensive test and demo application is
|
* in main_blinky.c. The more comprehensive test and demo application is
|
||||||
* implemented and described in main_full.c.
|
* implemented and described in main_full.c.
|
||||||
*
|
*
|
||||||
* This file implements the code that is not demo specific, including the
|
* This file implements the code that is not demo specific, including the
|
||||||
* hardware setup and FreeRTOS hook functions.
|
* hardware setup and FreeRTOS hook functions.
|
||||||
*
|
*
|
||||||
* !!! IMPORTANT NOTE !!!
|
* !!! IMPORTANT NOTE !!!
|
||||||
* The GCC libraries that ship with the Xilinx SDK make use of the floating
|
* The GCC libraries that ship with the Xilinx SDK make use of the floating
|
||||||
* point registers. To avoid this causing corruption it is necessary to avoid
|
* point registers. To avoid this causing corruption it is necessary to avoid
|
||||||
* their use. For this reason main.c contains very basic C implementations of
|
* their use. For this reason main.c contains very basic C implementations of
|
||||||
* the standard C library functions memset(), memcpy() and memcmp(), which are
|
* the standard C library functions memset(), memcpy() and memcmp(), which are
|
||||||
* are used by FreeRTOS itself. Defining these functions in the project
|
* are used by FreeRTOS itself. Defining these functions in the project
|
||||||
* prevents the linker pulling them in from the library. Any other standard C
|
* prevents the linker pulling them in from the library. Any other standard C
|
||||||
* library functions that are used by the application must likewise be defined
|
* library functions that are used by the application must likewise be defined
|
||||||
* in C.
|
* in C.
|
||||||
*
|
*
|
||||||
* ENSURE TO READ THE DOCUMENTATION PAGE FOR THIS PORT AND DEMO APPLICATION ON
|
* ENSURE TO READ THE DOCUMENTATION PAGE FOR THIS PORT AND DEMO APPLICATION ON
|
||||||
* THE http://www.FreeRTOS.org WEB SITE FOR FULL INFORMATION ON USING THIS DEMO
|
* THE http://www.FreeRTOS.org WEB SITE FOR FULL INFORMATION ON USING THIS DEMO
|
||||||
* APPLICATION, AND ITS ASSOCIATE FreeRTOS ARCHITECTURE PORT!
|
* APPLICATION, AND ITS ASSOCIATE FreeRTOS ARCHITECTURE PORT!
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Standard includes. */
|
/* Standard includes. */
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
/* Scheduler include files. */
|
/* Scheduler include files. */
|
||||||
#include "FreeRTOS.h"
|
#include "FreeRTOS.h"
|
||||||
#include "task.h"
|
#include "task.h"
|
||||||
#include "semphr.h"
|
#include "semphr.h"
|
||||||
|
|
||||||
/* Standard demo includes. */
|
/* Standard demo includes. */
|
||||||
#include "partest.h"
|
#include "partest.h"
|
||||||
#include "TimerDemo.h"
|
#include "TimerDemo.h"
|
||||||
#include "QueueOverwrite.h"
|
#include "QueueOverwrite.h"
|
||||||
#include "EventGroupsDemo.h"
|
#include "EventGroupsDemo.h"
|
||||||
|
|
||||||
/* Xilinx includes. */
|
/* Xilinx includes. */
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "xparameters.h"
|
#include "xparameters.h"
|
||||||
#include "xscutimer.h"
|
#include "xscutimer.h"
|
||||||
#include "xscugic.h"
|
#include "xscugic.h"
|
||||||
#include "xil_exception.h"
|
#include "xil_exception.h"
|
||||||
|
|
||||||
/* Set mainCREATE_SIMPLE_BLINKY_DEMO_ONLY to one to run the simple blinky demo,
|
/* Set mainCREATE_SIMPLE_BLINKY_DEMO_ONLY to one to run the simple blinky demo,
|
||||||
or 0 to run the more comprehensive test and demo application. */
|
or 0 to run the more comprehensive test and demo application. */
|
||||||
#define mainCREATE_SIMPLE_BLINKY_DEMO_ONLY 0
|
#define mainCREATE_SIMPLE_BLINKY_DEMO_ONLY 0
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Configure the hardware as necessary to run this demo.
|
* Configure the hardware as necessary to run this demo.
|
||||||
*/
|
*/
|
||||||
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.
|
||||||
*/
|
*/
|
||||||
#if mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 1
|
#if mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 1
|
||||||
extern void main_blinky( void );
|
extern void main_blinky( void );
|
||||||
#else
|
#else
|
||||||
extern void main_full( void );
|
extern void main_full( void );
|
||||||
#endif /* #if mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 1 */
|
#endif /* #if mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 1 */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The Xilinx projects use a BSP that do not allow the start up code to be
|
* The Xilinx projects use a BSP that do not allow the start up code to be
|
||||||
* altered easily. Therefore the vector table used by FreeRTOS is defined in
|
* altered easily. Therefore the vector table used by FreeRTOS is defined in
|
||||||
* FreeRTOS_asm_vectors.S, which is part of this project. Switch to use the
|
* FreeRTOS_asm_vectors.S, which is part of this project. Switch to use the
|
||||||
* FreeRTOS vector table.
|
* FreeRTOS vector table.
|
||||||
*/
|
*/
|
||||||
extern void vPortInstallFreeRTOSVectorTable( void );
|
extern void vPortInstallFreeRTOSVectorTable( void );
|
||||||
|
|
||||||
/* Prototypes for the standard FreeRTOS callback/hook functions implemented
|
/* Prototypes for the standard FreeRTOS callback/hook functions implemented
|
||||||
within this file. */
|
within this file. */
|
||||||
void vApplicationMallocFailedHook( void );
|
void vApplicationMallocFailedHook( void );
|
||||||
void vApplicationIdleHook( void );
|
void vApplicationIdleHook( void );
|
||||||
void vApplicationStackOverflowHook( xTaskHandle pxTask, char *pcTaskName );
|
void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName );
|
||||||
void vApplicationTickHook( void );
|
void vApplicationTickHook( void );
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/* The interrupt controller is initialised in this file, and made available to
|
/* The interrupt controller is initialised in this file, and made available to
|
||||||
other modules. */
|
other modules. */
|
||||||
XScuGic xInterruptController;
|
XScuGic xInterruptController;
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
int main( void )
|
int main( void )
|
||||||
{
|
{
|
||||||
/* Configure the hardware ready to run the demo. */
|
/* Configure the hardware ready to run the demo. */
|
||||||
prvSetupHardware();
|
prvSetupHardware();
|
||||||
|
|
||||||
/* The mainCREATE_SIMPLE_BLINKY_DEMO_ONLY setting is described at the top
|
/* The mainCREATE_SIMPLE_BLINKY_DEMO_ONLY setting is described at the top
|
||||||
of this file. */
|
of this file. */
|
||||||
#if( mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 1 )
|
#if( mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 1 )
|
||||||
{
|
{
|
||||||
main_blinky();
|
main_blinky();
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
{
|
{
|
||||||
main_full();
|
main_full();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Don't expect to reach here. */
|
/* Don't expect to reach here. */
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
static void prvSetupHardware( void )
|
static void prvSetupHardware( void )
|
||||||
{
|
{
|
||||||
BaseType_t xStatus;
|
BaseType_t xStatus;
|
||||||
XScuGic_Config *pxGICConfig;
|
XScuGic_Config *pxGICConfig;
|
||||||
|
|
||||||
/* Ensure no interrupts execute while the scheduler is in an inconsistent
|
/* Ensure no interrupts execute while the scheduler is in an inconsistent
|
||||||
state. Interrupts are automatically enabled when the scheduler is
|
state. Interrupts are automatically enabled when the scheduler is
|
||||||
started. */
|
started. */
|
||||||
portDISABLE_INTERRUPTS();
|
portDISABLE_INTERRUPTS();
|
||||||
|
|
||||||
/* Obtain the configuration of the GIC. */
|
/* Obtain the configuration of the GIC. */
|
||||||
pxGICConfig = XScuGic_LookupConfig( XPAR_SCUGIC_SINGLE_DEVICE_ID );
|
pxGICConfig = XScuGic_LookupConfig( XPAR_SCUGIC_SINGLE_DEVICE_ID );
|
||||||
|
|
||||||
/* Sanity check the FreeRTOSConfig.h settings are correct for the
|
/* Sanity check the FreeRTOSConfig.h settings are correct for the
|
||||||
hardware. */
|
hardware. */
|
||||||
configASSERT( pxGICConfig );
|
configASSERT( pxGICConfig );
|
||||||
configASSERT( pxGICConfig->CpuBaseAddress == ( configINTERRUPT_CONTROLLER_BASE_ADDRESS + configINTERRUPT_CONTROLLER_CPU_INTERFACE_OFFSET ) );
|
configASSERT( pxGICConfig->CpuBaseAddress == ( configINTERRUPT_CONTROLLER_BASE_ADDRESS + configINTERRUPT_CONTROLLER_CPU_INTERFACE_OFFSET ) );
|
||||||
configASSERT( pxGICConfig->DistBaseAddress == configINTERRUPT_CONTROLLER_BASE_ADDRESS );
|
configASSERT( pxGICConfig->DistBaseAddress == configINTERRUPT_CONTROLLER_BASE_ADDRESS );
|
||||||
|
|
||||||
/* Install a default handler for each GIC interrupt. */
|
/* Install a default handler for each GIC interrupt. */
|
||||||
xStatus = XScuGic_CfgInitialize( &xInterruptController, pxGICConfig, pxGICConfig->CpuBaseAddress );
|
xStatus = XScuGic_CfgInitialize( &xInterruptController, pxGICConfig, pxGICConfig->CpuBaseAddress );
|
||||||
configASSERT( xStatus == XST_SUCCESS );
|
configASSERT( xStatus == XST_SUCCESS );
|
||||||
( void ) xStatus; /* Remove compiler warning if configASSERT() is not defined. */
|
( void ) xStatus; /* Remove compiler warning if configASSERT() is not defined. */
|
||||||
|
|
||||||
/* Initialise the LED port. */
|
/* Initialise the LED port. */
|
||||||
vParTestInitialise();
|
vParTestInitialise();
|
||||||
|
|
||||||
/* The Xilinx projects use a BSP that do not allow the start up code to be
|
/* The Xilinx projects use a BSP that do not allow the start up code to be
|
||||||
altered easily. Therefore the vector table used by FreeRTOS is defined in
|
altered easily. Therefore the vector table used by FreeRTOS is defined in
|
||||||
FreeRTOS_asm_vectors.S, which is part of this project. Switch to use the
|
FreeRTOS_asm_vectors.S, which is part of this project. Switch to use the
|
||||||
FreeRTOS vector table. */
|
FreeRTOS vector table. */
|
||||||
vPortInstallFreeRTOSVectorTable();
|
vPortInstallFreeRTOSVectorTable();
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
void vApplicationMallocFailedHook( void )
|
void vApplicationMallocFailedHook( void )
|
||||||
{
|
{
|
||||||
/* Called if a call to pvPortMalloc() fails because there is insufficient
|
/* Called if a call to pvPortMalloc() fails because there is insufficient
|
||||||
free memory available in the FreeRTOS heap. pvPortMalloc() is called
|
free memory available in the FreeRTOS heap. pvPortMalloc() is called
|
||||||
internally by FreeRTOS API functions that create tasks, queues, software
|
internally by FreeRTOS API functions that create tasks, queues, software
|
||||||
timers, and semaphores. The size of the FreeRTOS heap is set by the
|
timers, and semaphores. The size of the FreeRTOS heap is set by the
|
||||||
configTOTAL_HEAP_SIZE configuration constant in FreeRTOSConfig.h. */
|
configTOTAL_HEAP_SIZE configuration constant in FreeRTOSConfig.h. */
|
||||||
taskDISABLE_INTERRUPTS();
|
taskDISABLE_INTERRUPTS();
|
||||||
for( ;; );
|
for( ;; );
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
void vApplicationStackOverflowHook( xTaskHandle pxTask, char *pcTaskName )
|
void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName )
|
||||||
{
|
{
|
||||||
( void ) pcTaskName;
|
( void ) pcTaskName;
|
||||||
( void ) pxTask;
|
( void ) pxTask;
|
||||||
|
|
||||||
/* Run time stack overflow checking is performed if
|
/* Run time stack overflow checking is performed if
|
||||||
configCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2. This hook
|
configCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2. This hook
|
||||||
function is called if a stack overflow is detected. */
|
function is called if a stack overflow is detected. */
|
||||||
taskDISABLE_INTERRUPTS();
|
taskDISABLE_INTERRUPTS();
|
||||||
for( ;; );
|
for( ;; );
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
void vApplicationIdleHook( void )
|
void vApplicationIdleHook( void )
|
||||||
{
|
{
|
||||||
volatile size_t xFreeHeapSpace;
|
volatile size_t xFreeHeapSpace;
|
||||||
|
|
||||||
/* This is just a trivial example of an idle hook. It is called on each
|
/* This is just a trivial example of an idle hook. It is called on each
|
||||||
cycle of the idle task. It must *NOT* attempt to block. In this case the
|
cycle of the idle task. It must *NOT* attempt to block. In this case the
|
||||||
idle task just queries the amount of FreeRTOS heap that remains. See the
|
idle task just queries the amount of FreeRTOS heap that remains. See the
|
||||||
memory management section on the http://www.FreeRTOS.org web site for memory
|
memory management section on the http://www.FreeRTOS.org web site for memory
|
||||||
management options. If there is a lot of heap memory free then the
|
management options. If there is a lot of heap memory free then the
|
||||||
configTOTAL_HEAP_SIZE value in FreeRTOSConfig.h can be reduced to free up
|
configTOTAL_HEAP_SIZE value in FreeRTOSConfig.h can be reduced to free up
|
||||||
RAM. */
|
RAM. */
|
||||||
xFreeHeapSpace = xPortGetFreeHeapSize();
|
xFreeHeapSpace = xPortGetFreeHeapSize();
|
||||||
|
|
||||||
/* Remove compiler warning about xFreeHeapSpace being set but never used. */
|
/* Remove compiler warning about xFreeHeapSpace being set but never used. */
|
||||||
( void ) xFreeHeapSpace;
|
( void ) xFreeHeapSpace;
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
void vAssertCalled( const char * pcFile, unsigned long ulLine )
|
void vAssertCalled( const char * pcFile, unsigned long ulLine )
|
||||||
{
|
{
|
||||||
volatile unsigned long ul = 0;
|
volatile unsigned long ul = 0;
|
||||||
|
|
||||||
( void ) pcFile;
|
( void ) pcFile;
|
||||||
( void ) ulLine;
|
( void ) ulLine;
|
||||||
|
|
||||||
taskENTER_CRITICAL();
|
taskENTER_CRITICAL();
|
||||||
{
|
{
|
||||||
/* Set ul to a non-zero value using the debugger to step out of this
|
/* Set ul to a non-zero value using the debugger to step out of this
|
||||||
function. */
|
function. */
|
||||||
while( ul == 0 )
|
while( ul == 0 )
|
||||||
{
|
{
|
||||||
portNOP();
|
portNOP();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
taskEXIT_CRITICAL();
|
taskEXIT_CRITICAL();
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
void vApplicationTickHook( void )
|
void vApplicationTickHook( void )
|
||||||
{
|
{
|
||||||
#if( mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 0 )
|
#if( mainCREATE_SIMPLE_BLINKY_DEMO_ONLY == 0 )
|
||||||
{
|
{
|
||||||
/* The full demo includes a software timer demo/test that requires
|
/* The full demo includes a software timer demo/test that requires
|
||||||
prodding periodically from the tick interrupt. */
|
prodding periodically from the tick interrupt. */
|
||||||
vTimerPeriodicISRTests();
|
vTimerPeriodicISRTests();
|
||||||
|
|
||||||
/* Call the periodic queue overwrite from ISR demo. */
|
/* Call the periodic queue overwrite from ISR demo. */
|
||||||
vQueueOverwritePeriodicISRDemo();
|
vQueueOverwritePeriodicISRDemo();
|
||||||
|
|
||||||
/* Call the periodic event group from ISR demo. */
|
/* Call the periodic event group from ISR demo. */
|
||||||
vPeriodicEventGroupsProcessing();
|
vPeriodicEventGroupsProcessing();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
void *memcpy( void *pvDest, const void *pvSource, size_t ulBytes )
|
void *memcpy( void *pvDest, const void *pvSource, size_t ulBytes )
|
||||||
{
|
{
|
||||||
unsigned char *pcDest = ( unsigned char * ) pvDest, *pcSource = ( unsigned char * ) pvSource;
|
unsigned char *pcDest = ( unsigned char * ) pvDest, *pcSource = ( unsigned char * ) pvSource;
|
||||||
size_t x;
|
size_t x;
|
||||||
|
|
||||||
for( x = 0; x < ulBytes; x++ )
|
for( x = 0; x < ulBytes; x++ )
|
||||||
{
|
{
|
||||||
*pcDest = *pcSource;
|
*pcDest = *pcSource;
|
||||||
pcDest++;
|
pcDest++;
|
||||||
pcSource++;
|
pcSource++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return pvDest;
|
return pvDest;
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
void *memset( void *pvDest, int iValue, size_t ulBytes )
|
void *memset( void *pvDest, int iValue, size_t ulBytes )
|
||||||
{
|
{
|
||||||
unsigned char *pcDest = ( unsigned char * ) pvDest;
|
unsigned char *pcDest = ( unsigned char * ) pvDest;
|
||||||
size_t x;
|
size_t x;
|
||||||
|
|
||||||
for( x = 0; x < ulBytes; x++ )
|
for( x = 0; x < ulBytes; x++ )
|
||||||
{
|
{
|
||||||
*pcDest = ( unsigned char ) iValue;
|
*pcDest = ( unsigned char ) iValue;
|
||||||
pcDest++;
|
pcDest++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return pvDest;
|
return pvDest;
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
int memcmp( const void *pvMem1, const void *pvMem2, size_t ulBytes )
|
int memcmp( const void *pvMem1, const void *pvMem2, size_t ulBytes )
|
||||||
{
|
{
|
||||||
const unsigned char *pucMem1 = pvMem1, *pucMem2 = pvMem2;
|
const unsigned char *pucMem1 = pvMem1, *pucMem2 = pvMem2;
|
||||||
size_t x;
|
size_t x;
|
||||||
|
|
||||||
for( x = 0; x < ulBytes; x++ )
|
for( x = 0; x < ulBytes; x++ )
|
||||||
{
|
{
|
||||||
if( pucMem1[ x ] != pucMem2[ x ] )
|
if( pucMem1[ x ] != pucMem2[ x ] )
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ulBytes - x;
|
return ulBytes - x;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue