2 * FreeRTOS V7.4.2 - Copyright (C) 2013 Real Time Engineers Ltd.
\r
4 * FEATURES AND PORTS ARE ADDED TO FREERTOS ALL THE TIME. PLEASE VISIT
\r
5 * http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
\r
7 ***************************************************************************
\r
9 * FreeRTOS tutorial books are available in pdf and paperback. *
\r
10 * Complete, revised, and edited pdf reference manuals are also *
\r
13 * Purchasing FreeRTOS documentation will not only help you, by *
\r
14 * ensuring you get running as quickly as possible and with an *
\r
15 * in-depth knowledge of how to use FreeRTOS, it will also help *
\r
16 * the FreeRTOS project to continue with its mission of providing *
\r
17 * professional grade, cross platform, de facto standard solutions *
\r
18 * for microcontrollers - completely free of charge! *
\r
20 * >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
\r
22 * Thank you for using FreeRTOS, and thank you for your support! *
\r
24 ***************************************************************************
\r
27 * This file is part of the FreeRTOS distribution.
\r
29 * FreeRTOS is free software; you can redistribute it and/or modify it under
\r
30 * the terms of the GNU General Public License (version 2) as published by the
\r
31 * Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
\r
33 * >>>>>>NOTE<<<<<< The modification to the GPL is included to allow you to
\r
34 * distribute a combined work that includes FreeRTOS without being obliged to
\r
35 * provide the source code for proprietary components outside of the FreeRTOS
\r
38 * FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
\r
39 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
\r
40 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
\r
41 * details. You should have received a copy of the GNU General Public License
\r
42 * and the FreeRTOS license exception along with FreeRTOS; if not it can be
\r
43 * viewed here: http://www.freertos.org/a00114.html and also obtained by
\r
44 * writing to Real Time Engineers Ltd., contact details for whom are available
\r
45 * on the FreeRTOS WEB site.
\r
47 * 1 tab == 4 spaces!
\r
49 ***************************************************************************
\r
51 * Having a problem? Start by reading the FAQ "My application does *
\r
52 * not run, what could be wrong?" *
\r
54 * http://www.FreeRTOS.org/FAQHelp.html *
\r
56 ***************************************************************************
\r
59 * http://www.FreeRTOS.org - Documentation, books, training, latest versions,
\r
60 * license and Real Time Engineers Ltd. contact details.
\r
62 * http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
\r
63 * including FreeRTOS+Trace - an indispensable productivity tool, and our new
\r
64 * fully thread aware and reentrant UDP/IP stack.
\r
66 * http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
\r
67 * Integrity Systems, who sell the code with commercial support,
\r
68 * indemnification and middleware, under the OpenRTOS brand.
\r
70 * http://www.SafeRTOS.com - High Integrity Systems also provide a safety
\r
71 * engineered and independently SIL3 certified version for use in safety and
\r
72 * mission critical applications that require provable dependability.
\r
75 #ifndef FREERTOS_CONFIG_H
\r
76 #define FREERTOS_CONFIG_H
\r
78 #include "em_assert.h"
\r
84 /********************** Configuration of FreeRTOS ****************************/
\r
86 /* Implement FreeRTOS configASSERT as emlib assert */
\r
87 #define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); }
\r
89 /* Modes of operations of operation system*/
\r
90 #define configUSE_PREEMPTION ( 1 )
\r
92 /* Energy saving modes */
\r
93 #define configUSE_TICKLESS_IDLE ( 0 )
\r
94 /* Available options when configUSE_TICKLESS_IDLE set to 1
\r
95 * or configUSE_SLEEP_MODE_IN_IDLE set to 1 :
\r
96 * 1 - EM1, 2 - EM2, 3 - EM3, timer in EM3 is not very accurate*/
\r
97 #define configSLEEP_MODE ( 2 )
\r
99 /* Definition used only if configUSE_TICKLESS_IDLE == 0 */
\r
100 #define configUSE_SLEEP_MODE_IN_IDLE ( 0 )
\r
103 /* EM1 use systick as system clock*/
\r
104 /* EM2 use crystal 32768Hz and RTC Component as system clock
\r
105 * We use 2 times divider of this clock to reduce energy consumtion
\r
106 * You can also in this mode choose crystal oscillator to get more preccision in
\r
107 * time measurement or RC oscillator for more energy reduction.*/
\r
108 /* EM3 use 2kHz RC and BURTC Component as system clock*/
\r
109 #if ( ( configSLEEP_MODE == 2 ) && ( configUSE_TICKLESS_IDLE == 1 || configUSE_SLEEP_MODE_IN_IDLE == 1 ) )
\r
110 /* Choose source of clock for RTC (system tick)
\r
111 * if configCRYSTAL_IN_EM2 set to 1 then Crystal oscillator is used,
\r
112 * when 0 RC oscillator */
\r
113 #define configCRYSTAL_IN_EM2 ( 1 )
\r
115 #if ( (configSLEEP_MODE == 2 ) && ( configUSE_TICKLESS_IDLE == 1 || configUSE_SLEEP_MODE_IN_IDLE == 1 ) )
\r
116 /* When we use EM2 or EM3 System clock has got low frequency,
\r
117 * so we reduce Tick rate to 100 Hz and 40 Hz, which give more clock cycles between ticks*/
\r
118 #define configTICK_RATE_HZ ( 100 )
\r
119 #elif ( ( configSLEEP_MODE == 3 ) && ( configUSE_TICKLESS_IDLE == 1 || configUSE_SLEEP_MODE_IN_IDLE == 1 ) )
\r
120 #define configTICK_RATE_HZ ( 40 )
\r
122 #define configTICK_RATE_HZ ( 1000 )
\r
125 /* Definition used by Keil to replace default system clock source when we use EM2 or EM3 mode. */
\r
126 #if ( ( configSLEEP_MODE == 2 || configSLEEP_MODE == 3 ) && ( configUSE_TICKLESS_IDLE == 1 || configUSE_SLEEP_MODE_IN_IDLE == 1 ) )
\r
127 #define configOVERRIDE_DEFAULT_TICK_CONFIGURATION ( 1 )
\r
130 /* Main functions*/
\r
131 #define configMAX_PRIORITIES ( 6 )
\r
132 #define configUSE_PORT_OPTIMISED_TASK_SELECTION ( 1 )
\r
133 #define configMINIMAL_STACK_SIZE (( unsigned short ) 140)
\r
134 #define configTOTAL_HEAP_SIZE (( size_t )(40000))
\r
135 #define configMAX_TASK_NAME_LEN ( 10 )
\r
136 #define configUSE_TRACE_FACILITY ( 0 )
\r
137 #define configUSE_16_BIT_TICKS ( 0 )
\r
138 #define configIDLE_SHOULD_YIELD ( 0 )
\r
139 #define configUSE_MUTEXES ( 1 )
\r
140 #define configUSE_RECURSIVE_MUTEXES ( 1 )
\r
141 #define configUSE_COUNTING_SEMAPHORES ( 1 )
\r
142 #define configUSE_ALTERNATIVE_API ( 0 )/* Deprecated! */
\r
143 #define configQUEUE_REGISTRY_SIZE ( 10 )
\r
144 #define configUSE_QUEUE_SETS ( 0 )
\r
146 /* Hook function related definitions. */
\r
147 #define configUSE_TICK_HOOK ( 1 )
\r
148 #define configCHECK_FOR_STACK_OVERFLOW ( 2 )
\r
149 #define configUSE_MALLOC_FAILED_HOOK ( 1 )
\r
151 /* Run time stats gathering related definitions. */
\r
152 #define configGENERATE_RUN_TIME_STATS ( 0 )
\r
154 /* Co-routine related definitions. */
\r
155 #define configUSE_CO_ROUTINES ( 0 )
\r
156 #define configMAX_CO_ROUTINE_PRIORITIES ( 1 )
\r
158 /* Software timer related definitions. */
\r
159 #define configUSE_TIMERS ( 1 )
\r
160 #define configTIMER_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) /* Highest priority */
\r
161 #define configTIMER_QUEUE_LENGTH ( 10 )
\r
162 #define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE )
\r
164 /* Interrupt nesting behaviour configuration. */
\r
165 #define configKERNEL_INTERRUPT_PRIORITY ( 255 )
\r
166 #define configMAX_SYSCALL_INTERRUPT_PRIORITY ( 191 ) /* equivalent to 0xa0, or priority 5. */
\r
168 /* Optional functions - most linkers will remove unused functions anyway. */
\r
169 #define INCLUDE_vTaskPrioritySet ( 1 )
\r
170 #define INCLUDE_uxTaskPriorityGet ( 1 )
\r
171 #define INCLUDE_vTaskDelete ( 1 )
\r
172 #define INCLUDE_vTaskSuspend ( 1 )
\r
173 #define INCLUDE_xResumeFromISR ( 1 )
\r
174 #define INCLUDE_vTaskDelayUntil ( 1 )
\r
175 #define INCLUDE_vTaskDelay ( 1 )
\r
176 #define INCLUDE_xTaskGetSchedulerState ( 1 )
\r
177 #define INCLUDE_xTaskGetCurrentTaskHandle ( 1 )
\r
178 #define INCLUDE_uxTaskGetStackHighWaterMark ( 0 )
\r
179 #define INCLUDE_xTaskGetIdleTaskHandle ( 0 )
\r
180 #define INCLUDE_xTimerGetTimerDaemonTaskHandle ( 0 )
\r
181 #define INCLUDE_pcTaskGetTaskName ( 0 )
\r
182 #define INCLUDE_eTaskGetState ( 1 )
\r
183 #define INCLUDE_xTimerPendFunctionCall ( 1 )
\r
185 /* Default value of CPU clock (RC)*/
\r
186 #define configCPU_CLOCK_HZ (( unsigned long ) 14000000)
\r
188 /* Defines used in energy modes */
\r
189 #if ( ( configSLEEP_MODE == 2 ) && ( ( configUSE_SLEEP_MODE_IN_IDLE == 1 ) || ( configUSE_TICKLESS_IDLE == 1 ) ) )
\r
190 #define configSYSTICK_CLOCK_HZ ( 16384 )
\r
193 #if ( ( configSLEEP_MODE == 3 ) && ( ( configUSE_SLEEP_MODE_IN_IDLE == 1 ) || ( configUSE_TICKLESS_IDLE == 1 ) ) )
\r
194 #define configSYSTICK_CLOCK_HZ ( 2000 )
\r
197 #if ( ( configUSE_TICKLESS_IDLE == 0 ) && ( configUSE_SLEEP_MODE_IN_IDLE == 1 ) )
\r
198 #define configUSE_IDLE_HOOK ( 1 )
\r
200 #define configUSE_IDLE_HOOK ( 0 )
\r
203 /*-----------------------------------------------------------*/
\r
206 /* Definitions that map the FreeRTOS port interrupt handlers to their CMSIS
\r
207 * standard names. */
\r
208 #define vPortSVCHandler SVC_Handler
\r
209 #define xPortPendSVHandler PendSV_Handler
\r
210 #define xPortSysTickHandler SysTick_Handler
\r
213 #define fabs __builtin_fabs
\r
218 #endif /* FREERTOS_CONFIG_H */
\r