xref: /btstack/port/stm32-wb55xx-nucleo-freertos/Inc/FreeRTOSConfig.h (revision 0561b2d8d5dba972c7daa57d5e677f7a1327edfd)
1*0561b2d8STREFOU Felix /*
2*0561b2d8STREFOU Felix  * FreeRTOS Kernel V10.2.0
3*0561b2d8STREFOU Felix  * Copyright (C) 2017 Amazon.com, Inc. or its affiliates.  All Rights Reserved.
4*0561b2d8STREFOU Felix  *
5*0561b2d8STREFOU Felix  * Permission is hereby granted, free of charge, to any person obtaining a copy of
6*0561b2d8STREFOU Felix  * this software and associated documentation files (the "Software"), to deal in
7*0561b2d8STREFOU Felix  * the Software without restriction, including without limitation the rights to
8*0561b2d8STREFOU Felix  * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9*0561b2d8STREFOU Felix  * the Software, and to permit persons to whom the Software is furnished to do so,
10*0561b2d8STREFOU Felix  * subject to the following conditions:
11*0561b2d8STREFOU Felix  *
12*0561b2d8STREFOU Felix  * The above copyright notice and this permission notice shall be included in all
13*0561b2d8STREFOU Felix  * copies or substantial portions of the Software.
14*0561b2d8STREFOU Felix  *
15*0561b2d8STREFOU Felix  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16*0561b2d8STREFOU Felix  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17*0561b2d8STREFOU Felix  * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18*0561b2d8STREFOU Felix  * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19*0561b2d8STREFOU Felix  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20*0561b2d8STREFOU Felix  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21*0561b2d8STREFOU Felix  *
22*0561b2d8STREFOU Felix  * http://aws.amazon.com/freertos
23*0561b2d8STREFOU Felix  * http://www.FreeRTOS.org
24*0561b2d8STREFOU Felix  */
25*0561b2d8STREFOU Felix 
26*0561b2d8STREFOU Felix 
27*0561b2d8STREFOU Felix #ifndef FREERTOS_CONFIG_H
28*0561b2d8STREFOU Felix #define FREERTOS_CONFIG_H
29*0561b2d8STREFOU Felix 
30*0561b2d8STREFOU Felix /*-----------------------------------------------------------
31*0561b2d8STREFOU Felix  * Application specific definitions.
32*0561b2d8STREFOU Felix  *
33*0561b2d8STREFOU Felix  * These definitions should be adjusted for your particular hardware and
34*0561b2d8STREFOU Felix  * application requirements.
35*0561b2d8STREFOU Felix  *
36*0561b2d8STREFOU Felix  * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
37*0561b2d8STREFOU Felix  * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
38*0561b2d8STREFOU Felix  *
39*0561b2d8STREFOU Felix  * See http://www.freertos.org/a00110.html.
40*0561b2d8STREFOU Felix  *----------------------------------------------------------*/
41*0561b2d8STREFOU Felix 
42*0561b2d8STREFOU Felix /* Section where include file can be added */
43*0561b2d8STREFOU Felix #include "stm32wbxx_hal.h"
44*0561b2d8STREFOU Felix 
45*0561b2d8STREFOU Felix /* Ensure stdint is only used by the compiler, and not the assembler. */
46*0561b2d8STREFOU Felix #if defined(__ICCARM__) || defined(__CC_ARM) || defined(__GNUC__)
47*0561b2d8STREFOU Felix #include <stdint.h>
48*0561b2d8STREFOU Felix #endif
49*0561b2d8STREFOU Felix 
50*0561b2d8STREFOU Felix #define configUSE_PREEMPTION                    1
51*0561b2d8STREFOU Felix #define configUSE_PORT_OPTIMISED_TASK_SELECTION 1
52*0561b2d8STREFOU Felix #define configUSE_TICKLESS_IDLE                 1
53*0561b2d8STREFOU Felix #define configCPU_CLOCK_HZ                      ( SystemCoreClock )
54*0561b2d8STREFOU Felix #define configTICK_RATE_HZ                      ((TickType_t)1000)
55*0561b2d8STREFOU Felix #define configMAX_PRIORITIES                    ( 8 )
56*0561b2d8STREFOU Felix #define configMINIMAL_STACK_SIZE                ((uint16_t)128)
57*0561b2d8STREFOU Felix #define configUSE_16_BIT_TICKS                  0
58*0561b2d8STREFOU Felix 
59*0561b2d8STREFOU Felix #define configIDLE_SHOULD_YIELD                 1
60*0561b2d8STREFOU Felix #define configUSE_TASK_NOTIFICATIONS            1
61*0561b2d8STREFOU Felix #define configUSE_MUTEXES                       1
62*0561b2d8STREFOU Felix #define configUSE_RECURSIVE_MUTEXES             1
63*0561b2d8STREFOU Felix #define configUSE_COUNTING_SEMAPHORES           1
64*0561b2d8STREFOU Felix #define configUSE_ALTERNATIVE_API               0 /* Deprecated! */
65*0561b2d8STREFOU Felix #define configUSE_QUEUE_SETS                    0
66*0561b2d8STREFOU Felix #define configUSE_TIME_SLICING                  0
67*0561b2d8STREFOU Felix #define configUSE_NEWLIB_REENTRANT              0
68*0561b2d8STREFOU Felix #define configENABLE_BACKWARD_COMPATIBILITY     0
69*0561b2d8STREFOU Felix #define configNUM_THREAD_LOCAL_STORAGE_POINTERS 0
70*0561b2d8STREFOU Felix 
71*0561b2d8STREFOU Felix /* Memory allocation related definitions. */
72*0561b2d8STREFOU Felix #define configSUPPORT_STATIC_ALLOCATION         0
73*0561b2d8STREFOU Felix #define configSUPPORT_DYNAMIC_ALLOCATION        1
74*0561b2d8STREFOU Felix #define configTOTAL_HEAP_SIZE                   ((size_t)12*1024)
75*0561b2d8STREFOU Felix #define configUSE_HEAP_SCHEME                   4
76*0561b2d8STREFOU Felix #define configAPPLICATION_ALLOCATED_HEAP        0
77*0561b2d8STREFOU Felix 
78*0561b2d8STREFOU Felix /* Hook function related definitions. */
79*0561b2d8STREFOU Felix #define configUSE_IDLE_HOOK                     0
80*0561b2d8STREFOU Felix #define configUSE_TICK_HOOK                     0
81*0561b2d8STREFOU Felix #define configCHECK_FOR_STACK_OVERFLOW          2
82*0561b2d8STREFOU Felix #define configUSE_MALLOC_FAILED_HOOK            0
83*0561b2d8STREFOU Felix #define configUSE_DAEMON_TASK_STARTUP_HOOK      0
84*0561b2d8STREFOU Felix 
85*0561b2d8STREFOU Felix /* Debug enablement */
86*0561b2d8STREFOU Felix #define configUSE_TRACE_FACILITY                1
87*0561b2d8STREFOU Felix #define configMAX_TASK_NAME_LEN                 20
88*0561b2d8STREFOU Felix #define configQUEUE_REGISTRY_SIZE               10
89*0561b2d8STREFOU Felix #define configRECORD_STACK_HIGH_ADDRESS			1
90*0561b2d8STREFOU Felix #define configGENERATE_RUN_TIME_STATS           0
91*0561b2d8STREFOU Felix #define configGENERATE_RUN_TIME_STATS_USE_TICKS 0
92*0561b2d8STREFOU Felix 
93*0561b2d8STREFOU Felix /* Co-routine definitions. */
94*0561b2d8STREFOU Felix #define configUSE_CO_ROUTINES                   0
95*0561b2d8STREFOU Felix #define configMAX_CO_ROUTINE_PRIORITIES         2
96*0561b2d8STREFOU Felix 
97*0561b2d8STREFOU Felix /* Software timer related definitions. */
98*0561b2d8STREFOU Felix #define configUSE_TIMERS                        1
99*0561b2d8STREFOU Felix #define configTIMER_TASK_PRIORITY               3
100*0561b2d8STREFOU Felix #define configTIMER_QUEUE_LENGTH                10
101*0561b2d8STREFOU Felix #define configTIMER_TASK_STACK_DEPTH            configMINIMAL_STACK_SIZE
102*0561b2d8STREFOU Felix 
103*0561b2d8STREFOU Felix /* Interrupt nesting behaviour configuration. */
104*0561b2d8STREFOU Felix #define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 15
105*0561b2d8STREFOU Felix #define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5
106*0561b2d8STREFOU Felix #define configKERNEL_INTERRUPT_PRIORITY         ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
107*0561b2d8STREFOU Felix #define configMAX_SYSCALL_INTERRUPT_PRIORITY    ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
108*0561b2d8STREFOU Felix 
109*0561b2d8STREFOU Felix /* Define to trap errors during development. */
110*0561b2d8STREFOU Felix #define configASSERT( x ) if ((x) == 0) {taskDISABLE_INTERRUPTS(); for( ;; );}
111*0561b2d8STREFOU Felix 
112*0561b2d8STREFOU Felix /* FreeRTOS MPU specific definitions. */
113*0561b2d8STREFOU Felix #define configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS 0
114*0561b2d8STREFOU Felix 
115*0561b2d8STREFOU Felix /* Optional functions - most linkers will remove unused functions anyway. */
116*0561b2d8STREFOU Felix #define INCLUDE_vTaskPrioritySet            1
117*0561b2d8STREFOU Felix #define INCLUDE_uxTaskPriorityGet           1
118*0561b2d8STREFOU Felix #define INCLUDE_vTaskDelete                 1
119*0561b2d8STREFOU Felix #define INCLUDE_vTaskCleanUpResources       0
120*0561b2d8STREFOU Felix #define INCLUDE_vTaskSuspend                1
121*0561b2d8STREFOU Felix #define INCLUDE_vTaskDelayUntil             0
122*0561b2d8STREFOU Felix #define INCLUDE_vTaskDelay                  1
123*0561b2d8STREFOU Felix #define INCLUDE_xTaskGetSchedulerState      1
124*0561b2d8STREFOU Felix #define INCLUDE_xTaskGetCurrentTaskHandle   1
125*0561b2d8STREFOU Felix #define INCLUDE_xQueueGetMutexHolder        1
126*0561b2d8STREFOU Felix #define INCLUDE_uxTaskGetStackHighWaterMark 1
127*0561b2d8STREFOU Felix 
128*0561b2d8STREFOU Felix /* Cortex-M specific definitions. */
129*0561b2d8STREFOU Felix #ifdef __NVIC_PRIO_BITS
130*0561b2d8STREFOU Felix  /* __BVIC_PRIO_BITS will be specified when CMSIS is being used. */
131*0561b2d8STREFOU Felix  #define configPRIO_BITS         __NVIC_PRIO_BITS
132*0561b2d8STREFOU Felix #else
133*0561b2d8STREFOU Felix  #define configPRIO_BITS         4
134*0561b2d8STREFOU Felix #endif
135*0561b2d8STREFOU Felix 
136*0561b2d8STREFOU Felix /* Definitions that map the FreeRTOS port interrupt handlers to their CMSIS
137*0561b2d8STREFOU Felix standard names. */
138*0561b2d8STREFOU Felix #define vPortSVCHandler    SVC_Handler
139*0561b2d8STREFOU Felix #define xPortPendSVHandler PendSV_Handler
140*0561b2d8STREFOU Felix 
141*0561b2d8STREFOU Felix #define xPortSysTickHandler SysTick_Handler
142*0561b2d8STREFOU Felix 
143*0561b2d8STREFOU Felix /* Section where parameter definitions can be added (for instance, to override default ones in FreeRTOS.h) */
144*0561b2d8STREFOU Felix 
145*0561b2d8STREFOU Felix #if defined(__ICCARM__) || defined(__CC_ARM) || defined(__GNUC__)
146*0561b2d8STREFOU Felix void PreSleepProcessing(uint32_t ulExpectedIdleTime);
147*0561b2d8STREFOU Felix void PostSleepProcessing(uint32_t ulExpectedIdleTime);
148*0561b2d8STREFOU Felix #endif /* defined(__ICCARM__) || defined(__CC_ARM) || defined(__GNUC__) */
149*0561b2d8STREFOU Felix 
150*0561b2d8STREFOU Felix /* The configPRE_SLEEP_PROCESSING() and configPOST_SLEEP_PROCESSING() macros
151*0561b2d8STREFOU Felix allow the application writer to add additional code before and after the MCU is
152*0561b2d8STREFOU Felix placed into the low power state respectively. */
153*0561b2d8STREFOU Felix #if configUSE_TICKLESS_IDLE == 1
154*0561b2d8STREFOU Felix #define configPRE_SLEEP_PROCESSING(idleTime)              do { \
155*0561b2d8STREFOU Felix                                                                 idleTime = 0; \
156*0561b2d8STREFOU Felix                                                                 HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI); \
157*0561b2d8STREFOU Felix                                                             } while(0)
158*0561b2d8STREFOU Felix 
159*0561b2d8STREFOU Felix #define configPOST_SLEEP_PROCESSING(unusedVar)            do {} while(0)
160*0561b2d8STREFOU Felix #endif /* configUSE_TICKLESS_IDLE == 1 */
161*0561b2d8STREFOU Felix 
162*0561b2d8STREFOU Felix #endif /* FREERTOS_CONFIG_H */
163