]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_EFM32_Gecko_Starter_Kit_Simplicity_Studio/Source/FreeRTOSConfig.h
Add EFM32 Giant Gecko Starter Kit demo - still a work in progress as the low power...
[freertos] / FreeRTOS / Demo / CORTEX_EFM32_Gecko_Starter_Kit_Simplicity_Studio / Source / FreeRTOSConfig.h
1 /*\r
2  *  FreeRTOS V7.4.2 - Copyright (C) 2013 Real Time Engineers Ltd.\r
3  *\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
6  *\r
7  ***************************************************************************\r
8  *                                                                       *\r
9  *    FreeRTOS tutorial books are available in pdf and paperback.        *\r
10  *    Complete, revised, and edited pdf reference manuals are also       *\r
11  *    available.                                                         *\r
12  *                                                                       *\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
19  *                                                                       *\r
20  *    >>> See http://www.FreeRTOS.org/Documentation for details. <<<     *\r
21  *                                                                       *\r
22  *    Thank you for using FreeRTOS, and thank you for your support!      *\r
23  *                                                                       *\r
24  ***************************************************************************\r
25  *\r
26  *\r
27  *  This file is part of the FreeRTOS distribution.\r
28  *\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
32  *\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
36  *  kernel.\r
37  *\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
46  *\r
47  *  1 tab == 4 spaces!\r
48  *\r
49  ***************************************************************************\r
50  *                                                                       *\r
51  *    Having a problem?  Start by reading the FAQ "My application does   *\r
52  *    not run, what could be wrong?"                                     *\r
53  *                                                                       *\r
54  *    http://www.FreeRTOS.org/FAQHelp.html                               *\r
55  *                                                                       *\r
56  ***************************************************************************\r
57  *\r
58  *\r
59  *  http://www.FreeRTOS.org - Documentation, books, training, latest versions,\r
60  *  license and Real Time Engineers Ltd. contact details.\r
61  *\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
65  *\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
69  *\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
73  */\r
74 \r
75 #ifndef FREERTOS_CONFIG_H\r
76 #define FREERTOS_CONFIG_H\r
77 \r
78 #include "em_assert.h"\r
79 \r
80 #ifdef __cplusplus\r
81 extern "C" {\r
82 #endif\r
83 \r
84 /********************** Configuration of FreeRTOS ****************************/\r
85 \r
86 /* Implement FreeRTOS configASSERT as emlib assert */\r
87 #define configASSERT( x )       if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); }\r
88 \r
89 /* Modes of operations of operation system*/\r
90 #define configUSE_PREEMPTION       ( 1 )\r
91 \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
98 \r
99 /* Definition used only if configUSE_TICKLESS_IDLE == 0 */\r
100 #define configUSE_SLEEP_MODE_IN_IDLE       ( 0 )\r
101 \r
102 \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
114 #endif\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
121 #else\r
122 #define configTICK_RATE_HZ    ( 1000 )\r
123 #endif\r
124 \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
128 #endif\r
129 \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
145 \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
150 \r
151 /* Run time stats gathering related definitions. */\r
152 #define configGENERATE_RUN_TIME_STATS             ( 0 )\r
153 \r
154 /* Co-routine related definitions. */\r
155 #define configUSE_CO_ROUTINES                     ( 0 )\r
156 #define configMAX_CO_ROUTINE_PRIORITIES           ( 1 )\r
157 \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
163 \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
167 \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
184 \r
185 /* Default value of CPU clock (RC)*/\r
186 #define configCPU_CLOCK_HZ                        (( unsigned long ) 14000000)\r
187 \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
191 #endif\r
192 \r
193 #if ( ( configSLEEP_MODE == 3 )  && ( ( configUSE_SLEEP_MODE_IN_IDLE == 1 ) || ( configUSE_TICKLESS_IDLE == 1 ) ) )\r
194        #define configSYSTICK_CLOCK_HZ    ( 2000 )\r
195 #endif\r
196 \r
197 #if ( ( configUSE_TICKLESS_IDLE == 0 ) && ( configUSE_SLEEP_MODE_IN_IDLE == 1 ) )\r
198 #define configUSE_IDLE_HOOK  ( 1 )\r
199 #else\r
200 #define configUSE_IDLE_HOOK  ( 0 )\r
201 #endif\r
202 \r
203 /*-----------------------------------------------------------*/\r
204 \r
205 \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
211 \r
212 \r
213 #define fabs __builtin_fabs\r
214 \r
215 #ifdef __cplusplus\r
216 }\r
217 #endif\r
218 #endif /* FREERTOS_CONFIG_H */\r
219 \r