mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-09-02 12:24:07 -04:00
Check in RX231 IAR demo.
This commit is contained in:
parent
c6a4e3191e
commit
38cb08133d
33 changed files with 3674 additions and 92 deletions
|
@ -84,24 +84,14 @@
|
|||
*
|
||||
* The Queue Send Task:
|
||||
* The queue send task is implemented by the prvQueueSendTask() function in
|
||||
* this file. prvQueueSendTask() sits in a loop that causes it to repeatedly
|
||||
* block for 200 milliseconds, before sending the value 100 to the queue that
|
||||
* was created within main_blinky(). Once the value is sent, the task loops
|
||||
* back around to block for another 200 milliseconds...and so on.
|
||||
* this file. It sends the value 100 to the queue every 200 milliseconds.
|
||||
*
|
||||
* The Queue Receive Task:
|
||||
* The queue receive task is implemented by the prvQueueReceiveTask() function
|
||||
* in this file. prvQueueReceiveTask() sits in a loop where it repeatedly
|
||||
* blocks on attempts to read data from the queue that was created within
|
||||
* main_blinky(). When data is received, the task checks the value of the
|
||||
* data, and if the value equals the expected 100, toggles an LED. The 'block
|
||||
* time' parameter passed to the queue receive function specifies that the
|
||||
* task should be held in the Blocked state indefinitely to wait for data to
|
||||
* be available on the queue. The queue receive task will only leave the
|
||||
* Blocked state when the queue send task writes to the queue. As the queue
|
||||
* send task writes to the queue every 200 milliseconds, the queue receive
|
||||
* task leaves the Blocked state every 200 milliseconds, and therefore toggles
|
||||
* the LED every 200 milliseconds.
|
||||
* in this file. It blocks on the queue to wait for data to arrive from the
|
||||
* queue send task - toggling the LED each time it receives the value 100. The
|
||||
* queue send task writes to the queue every 200ms, so the LED should toggle
|
||||
* every 200ms.
|
||||
*/
|
||||
|
||||
/* Kernel includes. */
|
||||
|
@ -118,7 +108,7 @@
|
|||
|
||||
/* The rate at which data is sent to the queue. The 200ms value is converted
|
||||
to ticks using the portTICK_PERIOD_MS constant. */
|
||||
#define mainQUEUE_SEND_FREQUENCY_MS ( 200 / portTICK_PERIOD_MS )
|
||||
#define mainQUEUE_SEND_FREQUENCY_MS ( pdMS_TO_TICKS( 200UL ) )
|
||||
|
||||
/* The number of items the queue can hold. This is 1 as the receive task
|
||||
will remove items as they are added, meaning the send task should always find
|
||||
|
|
|
@ -78,8 +78,8 @@
|
|||
#include "task.h"
|
||||
|
||||
/* Demo includes. */
|
||||
#include "IntQueue.h"
|
||||
#include "IntQueueTimer.h"
|
||||
#include "IntQueue.h"
|
||||
|
||||
#define tmrTIMER_0_1_FREQUENCY ( 2000UL )
|
||||
#define tmrTIMER_2_3_FREQUENCY ( 2111UL )
|
||||
|
|
|
@ -81,7 +81,7 @@
|
|||
*
|
||||
******************************************************************************
|
||||
*
|
||||
* main_full() creates all the demo application tasks and software timers, then
|
||||
* main_full() creates a set of demo application tasks and software timers, then
|
||||
* starts the scheduler. The web documentation provides more details of the
|
||||
* standard demo application tasks, which provide no particular functionality,
|
||||
* but do provide a good example of how to use the FreeRTOS API.
|
||||
|
@ -97,15 +97,14 @@
|
|||
* error in the context switching mechanism.
|
||||
*
|
||||
* "Check" task - The check task period is initially set to three seconds. The
|
||||
* task checks that all the standard demo tasks, and the register check tasks,
|
||||
* are not only still executing, but are executing without reporting any errors.
|
||||
* If the check task 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 200ms. The check task also toggles an LED each time it is
|
||||
* called. This provides a visual indication of the system status: If the LED
|
||||
* toggles every three seconds, then no issues have been discovered. If the LED
|
||||
* toggles every 200ms, then an issue has been discovered with at least one
|
||||
* task.
|
||||
* task checks that all the standard demo tasks are not only still executing,
|
||||
* but are executing without reporting any errors. If the check task 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 200ms. The check
|
||||
* task also toggles an LED on each iteration of its loop. This provides a
|
||||
* visual indication of the system status: If the LED toggles every three
|
||||
* seconds, then no issues have been discovered. If the LED toggles every
|
||||
* 200ms, then an issue has been discovered with at least one task.
|
||||
*/
|
||||
|
||||
/* Standard includes. */
|
||||
|
@ -146,30 +145,23 @@
|
|||
#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3UL )
|
||||
#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY )
|
||||
#define mainUART_COMMAND_CONSOLE_STACK_SIZE ( configMINIMAL_STACK_SIZE * 3UL )
|
||||
#define mainCOM_TEST_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 )
|
||||
#define mainCHECK_TASK_PRIORITY ( configMAX_PRIORITIES - 1 )
|
||||
#define mainQUEUE_OVERWRITE_PRIORITY ( tskIDLE_PRIORITY )
|
||||
|
||||
/* The priority used by the UART command console task. */
|
||||
#define mainUART_COMMAND_CONSOLE_TASK_PRIORITY ( configMAX_PRIORITIES - 2 )
|
||||
|
||||
/* A block time of zero simply means "don't block". */
|
||||
#define mainDONT_BLOCK ( 0UL )
|
||||
|
||||
/* 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
|
||||
equivalent in ticks using the portTICK_PERIOD_MS constant. */
|
||||
#define mainNO_ERROR_CHECK_TASK_PERIOD ( 3000UL / portTICK_PERIOD_MS )
|
||||
#define mainNO_ERROR_CHECK_TASK_PERIOD pdMS_TO_TICKS( 3000UL )
|
||||
|
||||
/* The period at which the check timer will expire, in ms, if an error has been
|
||||
reported in one of the standard demo tasks. ms are converted to the equivalent
|
||||
in ticks using the portTICK_PERIOD_MS constant. */
|
||||
#define mainERROR_CHECK_TASK_PERIOD ( 200UL / portTICK_PERIOD_MS )
|
||||
#define mainERROR_CHECK_TASK_PERIOD pdMS_TO_TICKS( 200UL )
|
||||
|
||||
/* Parameters that are passed into the register check tasks solely for the
|
||||
purpose of ensuring parameters are passed into tasks correctly. */
|
||||
#define mainREG_TEST_1_PARAMETER ( ( void * ) 0x12121212UL )
|
||||
#define mainREG_TEST_2_PARAMETER ( ( void * ) 0x12345678UL )
|
||||
#define mainREG_TEST_1_PARAMETER ( ( void * ) 0x12121212UL )
|
||||
#define mainREG_TEST_2_PARAMETER ( ( void * ) 0x12345678UL )
|
||||
|
||||
/* The base period used by the timer test tasks. */
|
||||
#define mainTIMER_TEST_PERIOD ( 50 )
|
||||
|
@ -218,9 +210,6 @@ then the register check tasks have not discovered any errors. If a variable
|
|||
stops incrementing, then an error has been found. */
|
||||
volatile unsigned long ulRegTest1LoopCounter = 0UL, ulRegTest2LoopCounter = 0UL;
|
||||
|
||||
/* String for display in the web server. It is set to an error message if the
|
||||
check task detects an error. */
|
||||
const char *pcStatusMessage = "All tasks running without error";
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void main_full( void )
|
||||
|
@ -248,7 +237,7 @@ void main_full( void )
|
|||
xTaskCreate( prvRegTest2Task, "RegTst2", configMINIMAL_STACK_SIZE, mainREG_TEST_2_PARAMETER, tskIDLE_PRIORITY, NULL );
|
||||
|
||||
/* Create the task that just adds a little random behaviour. */
|
||||
xTaskCreate( prvPseudoRandomiser, "Rnd", configMINIMAL_STACK_SIZE, NULL, configMAX_PRIORITIES - 1, NULL );
|
||||
xTaskCreate( prvPseudoRandomiser, "Rnd", configMINIMAL_STACK_SIZE, NULL, configMAX_PRIORITIES - 2, NULL );
|
||||
|
||||
/* Create the task that performs the 'check' functionality, as described at
|
||||
the top of this file. */
|
||||
|
@ -402,7 +391,6 @@ unsigned long ulErrorFound = pdFALSE;
|
|||
gone wrong (it might just be that the loop back connector required
|
||||
by the comtest tasks has not been fitted). */
|
||||
xDelayPeriod = mainERROR_CHECK_TASK_PERIOD;
|
||||
pcStatusMessage = "Error found in at least one task.";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -410,7 +398,7 @@ unsigned long ulErrorFound = pdFALSE;
|
|||
|
||||
static void prvPseudoRandomiser( void *pvParameters )
|
||||
{
|
||||
const uint32_t ulMultiplier = 0x015a4e35UL, ulIncrement = 1UL, ulMinDelay = ( 35 / portTICK_PERIOD_MS );
|
||||
const uint32_t ulMultiplier = 0x015a4e35UL, ulIncrement = 1UL, ulMinDelay = pdMS_TO_TICKS( 35 );
|
||||
volatile uint32_t ulNextRand = ( uint32_t ) &pvParameters, ulValue;
|
||||
|
||||
/* This task does nothing other than ensure there is a little bit of
|
||||
|
|
|
@ -0,0 +1,116 @@
|
|||
/*---------------------------------------------------------------------------*/
|
||||
/* - defaults.s - */
|
||||
/* */
|
||||
/* This module contains default values for the following symbols */
|
||||
/* */
|
||||
/* For RxV1 core: */
|
||||
/* __MDES @ 0xFFFFFF80 to 0xFFFFFF83 */
|
||||
/* __OFS1 @ 0xFFFFFF88 to 0xFFFFFF8B */
|
||||
/* __OFS0 @ 0xFFFFFF8C to 0xFFFFFF8F */
|
||||
/* __ROM_CODE @ 0xFFFFFF9C */
|
||||
/* __ID_BYTES_1_4 @ 0xFFFFFFA0 to 0xFFFFFFA3 */
|
||||
/* __ID_BYTES_5_8 @ 0xFFFFFFA4 to 0xFFFFFFA7 */
|
||||
/* __ID_BYTES_9_12 @ 0xFFFFFFA8 to 0xFFFFFFAB */
|
||||
/* __ID_BYTES_13_16 @ 0xFFFFFFAC to 0xFFFFFFAF */
|
||||
/* */
|
||||
/* For RxV1 core: */
|
||||
/* __MDES @ 0xFFFFFF80 to 0xFFFFFF83 */
|
||||
/* __OFS1 @ 0xFFFFFF88 to 0xFFFFFF8B */
|
||||
/* __OFS0 @ 0xFFFFFF8C to 0xFFFFFF8F */
|
||||
/* __ROM_CODE @ 0xFFFFFF9C to 0xFFFFFF9F */
|
||||
/* __OSIS_1 @ 0xFFFFFFA0 to 0xFFFFFFA3 */
|
||||
/* __OSIS_2 @ 0xFFFFFFA4 to 0xFFFFFFA7 */
|
||||
/* __OSIS_3 @ 0xFFFFFFA8 to 0xFFFFFFAB */
|
||||
/* __OSIS_4 @ 0xFFFFFFAC to 0xFFFFFFAF */
|
||||
/* */
|
||||
/* For RxV2 core (RX64M): */
|
||||
/* __SPCC @ 0x00120040 to 0x00120043 */
|
||||
/* __TMEF @ 0x00120048 to 0x0012004B */
|
||||
/* __OSIS_1 @ 0x00120050 to 0x00120053 */
|
||||
/* __OSIS_2 @ 0x00120054 to 0x00120057 */
|
||||
/* __OSIS_3 @ 0x00120058 to 0x0012005D */
|
||||
/* __OSIS_4 @ 0x0012005C to 0x0012005F */
|
||||
/* __TMINF @ 0x00120060 to 0x00120063 */
|
||||
/* __MDE @ 0x00120064 to 0x00120067 */
|
||||
/* __OFS0 @ 0x00120068 to 0x0012006B */
|
||||
/* __OFS1 @ 0x0012006C to 0x0012006F */
|
||||
/* */
|
||||
/* To override default values in library add this file to your */
|
||||
/* project and change the values. */
|
||||
/* */
|
||||
/* Copyright 2014 IAR Systems AB. */
|
||||
/* */
|
||||
/* $Revision: 6046 $ */
|
||||
/* */
|
||||
/*---------------------------------------------------------------------------*/
|
||||
|
||||
MODULE DEFAULTS
|
||||
SECTION .text:CONST:NOROOT
|
||||
|
||||
#if __CORE__ == __CORE_V1__
|
||||
PUBWEAK __MDES
|
||||
PUBWEAK __OFS1
|
||||
PUBWEAK __OFS0
|
||||
PUBWEAK __ROM_CODE
|
||||
PUBWEAK __ID_BYTES_1_4
|
||||
PUBWEAK __ID_BYTES_5_8
|
||||
PUBWEAK __ID_BYTES_9_12
|
||||
PUBWEAK __ID_BYTES_13_16
|
||||
#if __LITTLE_ENDIAN__
|
||||
__MDES equ 0xffffffff
|
||||
#else
|
||||
__MDES equ 0xfffffff8
|
||||
#endif
|
||||
__OFS0 equ 0xffffffff
|
||||
__OFS1 equ 0xffffffff
|
||||
__ROM_CODE equ 0xffffffff
|
||||
__ID_BYTES_1_4 equ 0xffffffff
|
||||
__ID_BYTES_5_8 equ 0xffffffff
|
||||
__ID_BYTES_9_12 equ 0xffffffff
|
||||
__ID_BYTES_13_16 equ 0xffffffff
|
||||
|
||||
#else /* __CORE__ == __CORE_V2__ */
|
||||
PUBWEAK __ROM_CODE
|
||||
PUBWEAK __MDE
|
||||
PUBWEAK __OFS1
|
||||
PUBWEAK __OFS0
|
||||
PUBWEAK __OSIS_1
|
||||
PUBWEAK __OSIS_2
|
||||
PUBWEAK __OSIS_3
|
||||
PUBWEAK __OSIS_4
|
||||
PUBWEAK __SPCC
|
||||
PUBWEAK __TMEF
|
||||
PUBWEAK __TMINF
|
||||
|
||||
__ROM_CODE equ 0xffffffff
|
||||
|
||||
// 0x00120040 SPCC register
|
||||
__SPCC equ 0xffffffff
|
||||
|
||||
// 0x00120048 TMEF register
|
||||
__TMEF equ 0xffffffff
|
||||
|
||||
// 0x00120050 OSIC register (ID codes)
|
||||
__OSIS_1 equ 0xffffffff
|
||||
__OSIS_2 equ 0xffffffff
|
||||
__OSIS_3 equ 0xffffffff
|
||||
__OSIS_4 equ 0xffffffff
|
||||
|
||||
// 0x00120060 TMINF register
|
||||
__TMINF equ 0xffffffff
|
||||
|
||||
// 0x00120064 MDE register (Single Chip Mode)
|
||||
#if __LITTLE_ENDIAN__
|
||||
__MDE equ 0xffffffff // little
|
||||
#else
|
||||
__MDE equ 0xfffffff8 // big
|
||||
#endif
|
||||
|
||||
// 0x00120068 OFS0 register
|
||||
__OFS0 equ 0xffffffff
|
||||
|
||||
// 0x0012006c OFS1 register
|
||||
__OFS1 equ 0xffffffff
|
||||
|
||||
#endif
|
||||
END
|
|
@ -0,0 +1,56 @@
|
|||
;-----------------------------------------------------------------------------
|
||||
; Exception vector table. We install all fixed interrupts in
|
||||
; a section called EXCEPTVECT. All fixed interrupts have a
|
||||
; hard coded name that is default handled in this file.
|
||||
; See fixedint.c for information how to replace them with handlers written in C.
|
||||
;
|
||||
; $Revision: 6884 $
|
||||
;
|
||||
|
||||
// This segment part is marked as ROOT, since it must
|
||||
// be preserved by the linker.
|
||||
MODULE EXCEPTVECT
|
||||
SECTION .exceptvect:CONST:ROOT
|
||||
#if __CORE__ == __CORE_V2__
|
||||
EXTERN ___excep_access_inst
|
||||
EXTERN ___privileged_handler
|
||||
EXTERN ___undefined_handler
|
||||
EXTERN ___undefined_interrupt_source_handler
|
||||
EXTERN ___NMI_handler
|
||||
EXTERN __float_placeholder
|
||||
EXTERN __MDE
|
||||
EXTERN __OFS1
|
||||
EXTERN __OFS0
|
||||
EXTERN __ROM_CODE
|
||||
EXTERN __OSIS_1
|
||||
EXTERN __OSIS_2
|
||||
EXTERN __OSIS_3
|
||||
EXTERN __OSIS_4
|
||||
PUBLIC __exceptvect
|
||||
|
||||
DATA
|
||||
__exceptvect:
|
||||
DC32 __MDE // 0xFFFFFF80 MDE register (Single Chip Mode)
|
||||
DS32 1
|
||||
DC32 __OFS1 // 0xFFFFFF88 OFS1 register
|
||||
DC32 __OFS0 // 0xFFFFFF8C OFS0 register
|
||||
DS32 3
|
||||
DC32 __ROM_CODE // 0xFFFFFF8C ROM code protection
|
||||
DC32 __OSIS_1 // 0xFFFFFFA0 OSIC register (ID codes)
|
||||
DC32 __OSIS_2 // 0xFFFFFFA4 OSIC register (ID codes)
|
||||
DC32 __OSIS_3 // 0xFFFFFFA8 OSIC register (ID codes)
|
||||
DC32 __OSIS_4 // 0xFFFFFFAC OSIC register (ID codes)
|
||||
DS32 8
|
||||
DC32 ___privileged_handler // Exception(Supervisor Instruction)
|
||||
DC32 ___excep_access_inst // Exception(Access Instruction)
|
||||
DC32 ___undefined_interrupt_source_handler
|
||||
DC32 ___undefined_handler // Exception(Undefined Instruction)
|
||||
DC32 ___undefined_interrupt_source_handler
|
||||
DC32 __float_placeholder // Exception(Floating Point)
|
||||
DC32 ___undefined_interrupt_source_handler
|
||||
DC32 ___undefined_interrupt_source_handler
|
||||
DC32 ___undefined_interrupt_source_handler
|
||||
DC32 ___undefined_interrupt_source_handler
|
||||
DC32 ___NMI_handler // NMI
|
||||
#endif
|
||||
END
|
|
@ -0,0 +1,47 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// ILINK command file template for the Renesas RX microcontroller R5F52318
|
||||
//-----------------------------------------------------------------------------
|
||||
define memory mem with size = 4G;
|
||||
|
||||
define region ROM_region16 = mem:[from 0xFFFF8000 to 0xFFFFFFFF];
|
||||
define region RAM_region16 = mem:[from 0x00000004 to 0x00007FFF];
|
||||
define region ROM_region24 = mem:[from 0xFFF80000 to 0xFFFFFFFF];
|
||||
define region RAM_region24 = mem:[from 0x00000004 to 0x0000FFFF];
|
||||
define region ROM_region32 = mem:[from 0xFFF80000 to 0xFFFFFFFF];
|
||||
define region RAM_region32 = mem:[from 0x00000004 to 0x0000FFFF];
|
||||
define region DATA_FLASH_region = mem:[from 0x00100000 to 0x00101FFF];
|
||||
|
||||
initialize by copy { rw, ro section D, ro section D_1, ro section D_2 };
|
||||
initialize by copy with packing = none { section __DLIB_PERTHREAD };
|
||||
do not initialize { section .*.noinit };
|
||||
|
||||
define block HEAP with alignment = 4, size = _HEAP_SIZE { };
|
||||
define block USTACK with alignment = 4, size = _USTACK_SIZE { };
|
||||
define block ISTACK with alignment = 4, size = _ISTACK_SIZE { };
|
||||
|
||||
define block STACKS with fixed order { block ISTACK,
|
||||
block USTACK };
|
||||
|
||||
|
||||
place at address mem:0x00120040 { ro section .option_rom };
|
||||
place at address mem:0xFFFFFF80 { ro section .exceptvect };
|
||||
place at address mem:0xFFFFFFFC { ro section .resetvect };
|
||||
|
||||
"ROM16":place in ROM_region16 { ro section .code16*,
|
||||
ro section .data16* };
|
||||
"RAM16":place in RAM_region16 { rw section .data16*,
|
||||
rw section __DLIB_PERTHREAD };
|
||||
"ROM24":place in ROM_region24 { ro section .code24*,
|
||||
ro section .data24* };
|
||||
"RAM24":place in RAM_region24 { rw section .data24* };
|
||||
"ROM32":place in ROM_region32 { ro };
|
||||
"RAM32":place in RAM_region32 { rw,
|
||||
ro section D,
|
||||
ro section D_1,
|
||||
ro section D_2,
|
||||
block HEAP,
|
||||
block STACKS };
|
||||
|
||||
"DATAFLASH":place in DATA_FLASH_region
|
||||
{ ro section .dataflash* };
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
|
||||
// This segment part is marked as ROOT, since it must
|
||||
// be preserved by the linker.
|
||||
MODULE OPTION_ROM
|
||||
SECTION .option_rom:CONST:ROOT
|
||||
|
||||
#if __CORE__ == __CORE_V2__
|
||||
EXTERN __MDE
|
||||
EXTERN __OFS1
|
||||
EXTERN __OFS0
|
||||
EXTERN __SPCC
|
||||
EXTERN __TMEF
|
||||
EXTERN __TMINF
|
||||
EXTERN __OSIS_1
|
||||
EXTERN __OSIS_2
|
||||
EXTERN __OSIS_3
|
||||
EXTERN __OSIS_4
|
||||
PUBLIC __option_rom
|
||||
|
||||
// Special configuration registers for 64M
|
||||
|
||||
DATA
|
||||
__option_rom:
|
||||
#if 0
|
||||
DC32 __SPCC // 0x00120040 SPCC register
|
||||
DS32 1 // 0x00120044 reserved
|
||||
DC32 __TMEF // 0x00120048 TMEF register
|
||||
DS32 1 // 0x0012004C reserved
|
||||
; DC32 __OSIS_1 // 0x00120050 OSIC register (ID codes)
|
||||
; DC32 __OSIS_2 // 0x00120054 OSIC register (ID codes)
|
||||
; DC32 __OSIS_3 // 0x00120058 OSIC register (ID codes)
|
||||
; DC32 __OSIS_4 // 0x0012005C OSIC register (ID codes)
|
||||
DC32 __TMINF // 0x00120060 TMINF register
|
||||
; DC32 __MDE // 0x00120064 MDE register (Single Chip Mode)
|
||||
; DC32 __OFS0 // 0x00120068 OFS0 register
|
||||
; DC32 __OFS1 // 0x0012006C OFS1 register
|
||||
#endif
|
||||
#endif
|
||||
|
||||
END
|
|
@ -83,6 +83,8 @@
|
|||
* THE http://www.FreeRTOS.org WEB SITE FOR FULL INFORMATION ON USING THIS DEMO
|
||||
* APPLICATION, AND ITS ASSOCIATE FreeRTOS ARCHITECTURE PORT!
|
||||
*
|
||||
* http://www.freertos.org/RX231_RTOS_Renesas_GCC_IAR.html
|
||||
*
|
||||
*/
|
||||
|
||||
/* Scheduler include files. */
|
||||
|
@ -120,6 +122,7 @@ void vApplicationTickHook( void );
|
|||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* See http://www.freertos.org/RX231_RTOS_Renesas_GCC_IAR.html */
|
||||
int main( void )
|
||||
{
|
||||
/* Configure the hardware ready to run the demo. */
|
||||
|
@ -214,7 +217,9 @@ void vApplicationTickHook( void )
|
|||
/*-----------------------------------------------------------*/
|
||||
|
||||
/* The RX port uses this callback function to configure its tick interrupt.
|
||||
This allows the application to choose the tick interrupt source. */
|
||||
This allows the application to choose the tick interrupt source.
|
||||
***NOTE***: configTICK_VECTOR must be set in FreeRTOSConfig.h to be correct for
|
||||
whichever vector is used. */
|
||||
void vApplicationSetupTimerInterrupt( void )
|
||||
{
|
||||
const uint32_t ulEnableRegisterWrite = 0xA50BUL, ulDisableRegisterWrite = 0xA500UL;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue