Skip to content

Commit 55e13ef

Browse files
committed
Allow user to use his own FreeRTOSConfig.h
Add a file named "STM32FreeRTOSConfig.h" in the sketch folder will be used instead of the default config Signed-off-by: Frederic.Pillon <[email protected]>
1 parent c74f593 commit 55e13ef

File tree

2 files changed

+189
-171
lines changed

2 files changed

+189
-171
lines changed

src/FreeRTOSConfig.h

+11-171
Original file line numberDiff line numberDiff line change
@@ -1,178 +1,18 @@
11
/*
2-
FreeRTOS V9.0.0 - Copyright (C) 2016 Real Time Engineers Ltd.
3-
All rights reserved
2+
* @file FreeRTOSConfig.h
3+
* @author Frederic Pillon <[email protected]> for STMicroelectronics.
4+
* @brief Include header file to match Arduino library format
5+
*/
46

5-
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
7+
#ifndef _ARDUINO_FREERTOS_CONFIG_H
8+
#define _ARDUINO_FREERTOS_CONFIG_H
69

7-
This file is part of the FreeRTOS distribution.
8-
9-
FreeRTOS is free software; you can redistribute it and/or modify it under
10-
the terms of the GNU General Public License (version 2) as published by the
11-
Free Software Foundation >>>> AND MODIFIED BY <<<< the FreeRTOS exception.
12-
13-
***************************************************************************
14-
>>! NOTE: The modification to the GPL is included to allow you to !<<
15-
>>! distribute a combined work that includes FreeRTOS without being !<<
16-
>>! obliged to provide the source code for proprietary components !<<
17-
>>! outside of the FreeRTOS kernel. !<<
18-
***************************************************************************
19-
20-
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
21-
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
22-
FOR A PARTICULAR PURPOSE. Full license text is available on the following
23-
link: http://www.freertos.org/a00114.html
24-
25-
***************************************************************************
26-
* *
27-
* FreeRTOS provides completely free yet professionally developed, *
28-
* robust, strictly quality controlled, supported, and cross *
29-
* platform software that is more than just the market leader, it *
30-
* is the industry's de facto standard. *
31-
* *
32-
* Help yourself get started quickly while simultaneously helping *
33-
* to support the FreeRTOS project by purchasing a FreeRTOS *
34-
* tutorial book, reference manual, or both: *
35-
* http://www.FreeRTOS.org/Documentation *
36-
* *
37-
***************************************************************************
38-
39-
http://www.FreeRTOS.org/FAQHelp.html - Having a problem? Start by reading
40-
the FAQ page "My application does not run, what could be wrong?". Have you
41-
defined configASSERT()?
42-
43-
http://www.FreeRTOS.org/support - In return for receiving this top quality
44-
embedded software for free we request you assist our global community by
45-
participating in the support forum.
46-
47-
http://www.FreeRTOS.org/training - Investing in training allows your team to
48-
be as productive as possible as early as possible. Now you can receive
49-
FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers
50-
Ltd, and the world's leading authority on the world's leading RTOS.
51-
52-
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
53-
including FreeRTOS+Trace - an indispensable productivity tool, a DOS
54-
compatible FAT file system, and our tiny thread aware UDP/IP stack.
55-
56-
http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.
57-
Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.
58-
59-
http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High
60-
Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS
61-
licenses offer ticketed support, indemnification and commercial middleware.
62-
63-
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
64-
engineered and independently SIL3 certified version for use in safety and
65-
mission critical applications that require provable dependability.
66-
67-
1 tab == 4 spaces!
68-
*/
69-
70-
71-
#ifndef FREERTOS_CONFIG_H
72-
#define FREERTOS_CONFIG_H
73-
74-
/*-----------------------------------------------------------
75-
* Application specific definitions.
76-
*
77-
* These definitions should be adjusted for your particular hardware and
78-
* application requirements.
79-
*
80-
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
81-
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
82-
*
83-
* See http://www.freertos.org/a00110.html.
84-
*----------------------------------------------------------*/
85-
86-
/* Begin custom definitions for STM32 */
87-
/* Default (3) Memory allocation implementations (heap_[1-5].c) */
88-
/*#define configMEMMANG_HEAP_NB 3*/
89-
/* End custom definitions for STM32 */
90-
91-
/* Ensure stdint is only used by the compiler, and not the assembler. */
92-
#if defined(__ICCARM__) || defined(__CC_ARM) || defined(__GNUC__)
93-
#include <stdint.h>
94-
extern uint32_t SystemCoreClock;
95-
#endif
96-
97-
#define configUSE_PREEMPTION 1
98-
#define configUSE_IDLE_HOOK 1
99-
#define configUSE_TICK_HOOK 1
100-
#define configCPU_CLOCK_HZ (SystemCoreClock)
101-
#define configTICK_RATE_HZ ((TickType_t)1000)
102-
#define configMAX_PRIORITIES (7)
103-
#define configMINIMAL_STACK_SIZE ((uint16_t)128)
104-
#define configTOTAL_HEAP_SIZE ((size_t)(15 * 1024))
105-
#define configMAX_TASK_NAME_LEN (16)
106-
#define configUSE_TRACE_FACILITY 1
107-
#define configUSE_16_BIT_TICKS 0
108-
#define configIDLE_SHOULD_YIELD 1
109-
#define configUSE_MUTEXES 1
110-
#define configQUEUE_REGISTRY_SIZE 8
111-
#define configCHECK_FOR_STACK_OVERFLOW 0
112-
#define configUSE_RECURSIVE_MUTEXES 1
113-
#define configUSE_MALLOC_FAILED_HOOK 0
114-
#define configUSE_APPLICATION_TASK_TAG 0
115-
#define configUSE_COUNTING_SEMAPHORES 1
116-
#define configGENERATE_RUN_TIME_STATS 0
117-
118-
/* Co-routine definitions. */
119-
#define configUSE_CO_ROUTINES 0
120-
#define configMAX_CO_ROUTINE_PRIORITIES (2)
121-
122-
/* Software timer definitions. */
123-
#define configUSE_TIMERS 1
124-
#define configTIMER_TASK_PRIORITY (2)
125-
#define configTIMER_QUEUE_LENGTH 10
126-
#define configTIMER_TASK_STACK_DEPTH (configMINIMAL_STACK_SIZE * 2)
127-
128-
/* Set the following definitions to 1 to include the API function, or zero
129-
to exclude the API function. */
130-
#define INCLUDE_vTaskPrioritySet 1
131-
#define INCLUDE_uxTaskPriorityGet 1
132-
#define INCLUDE_vTaskDelete 1
133-
#define INCLUDE_vTaskCleanUpResources 1
134-
#define INCLUDE_vTaskSuspend 1
135-
#define INCLUDE_vTaskDelayUntil 1
136-
#define INCLUDE_vTaskDelay 1
137-
#define INCLUDE_xTaskGetSchedulerState 1
138-
139-
/* Cortex-M specific definitions. */
140-
#ifdef __NVIC_PRIO_BITS
141-
/* __BVIC_PRIO_BITS will be specified when CMSIS is being used. */
142-
#define configPRIO_BITS __NVIC_PRIO_BITS
10+
/* Application specific configuration options. */
11+
#if __has_include("STM32FreeRTOSConfig.h")
12+
#include "STM32FreeRTOSConfig.h"
14313
#else
144-
#define configPRIO_BITS 4 /* 15 priority levels */
14+
#include "FreeRTOSConfig_Default.h"
14515
#endif
14616

147-
/* The lowest interrupt priority that can be used in a call to a "set priority"
148-
function. */
149-
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 0xf
150-
151-
/* The highest interrupt priority that can be used by any interrupt service
152-
routine that makes calls to interrupt safe FreeRTOS API functions. DO NOT CALL
153-
INTERRUPT SAFE FREERTOS API FUNCTIONS FROM ANY INTERRUPT THAT HAS A HIGHER
154-
PRIORITY THAN THIS! (higher priorities are lower numeric values. */
155-
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5
156-
157-
/* Interrupt priorities used by the kernel port layer itself. These are generic
158-
to all Cortex-M ports, and do not rely on any particular library functions. */
159-
#define configKERNEL_INTERRUPT_PRIORITY ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
160-
/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!!
161-
See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */
162-
#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
163-
164-
/* Normal assert() semantics without relying on the provision of an assert.h
165-
header file. */
166-
#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); }
167-
168-
/* Definitions that map the FreeRTOS port interrupt handlers to their CMSIS
169-
standard names. */
170-
#define vPortSVCHandler SVC_Handler
171-
#define xPortPendSVHandler PendSV_Handler
172-
173-
/* IMPORTANT: This define MUST be commented when used with STM32Cube firmware,
174-
to prevent overwriting SysTick_Handler defined within STM32Cube HAL */
175-
/* #define xPortSysTickHandler SysTick_Handler */
176-
177-
#endif /* FREERTOS_CONFIG_H */
17+
#endif /* _ARDUINO_FREERTOS_CONFIG_H */
17818

src/FreeRTOSConfig_Default.h

+178
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
/*
2+
FreeRTOS V9.0.0 - Copyright (C) 2016 Real Time Engineers Ltd.
3+
All rights reserved
4+
5+
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
6+
7+
This file is part of the FreeRTOS distribution.
8+
9+
FreeRTOS is free software; you can redistribute it and/or modify it under
10+
the terms of the GNU General Public License (version 2) as published by the
11+
Free Software Foundation >>>> AND MODIFIED BY <<<< the FreeRTOS exception.
12+
13+
***************************************************************************
14+
>>! NOTE: The modification to the GPL is included to allow you to !<<
15+
>>! distribute a combined work that includes FreeRTOS without being !<<
16+
>>! obliged to provide the source code for proprietary components !<<
17+
>>! outside of the FreeRTOS kernel. !<<
18+
***************************************************************************
19+
20+
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
21+
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
22+
FOR A PARTICULAR PURPOSE. Full license text is available on the following
23+
link: http://www.freertos.org/a00114.html
24+
25+
***************************************************************************
26+
* *
27+
* FreeRTOS provides completely free yet professionally developed, *
28+
* robust, strictly quality controlled, supported, and cross *
29+
* platform software that is more than just the market leader, it *
30+
* is the industry's de facto standard. *
31+
* *
32+
* Help yourself get started quickly while simultaneously helping *
33+
* to support the FreeRTOS project by purchasing a FreeRTOS *
34+
* tutorial book, reference manual, or both: *
35+
* http://www.FreeRTOS.org/Documentation *
36+
* *
37+
***************************************************************************
38+
39+
http://www.FreeRTOS.org/FAQHelp.html - Having a problem? Start by reading
40+
the FAQ page "My application does not run, what could be wrong?". Have you
41+
defined configASSERT()?
42+
43+
http://www.FreeRTOS.org/support - In return for receiving this top quality
44+
embedded software for free we request you assist our global community by
45+
participating in the support forum.
46+
47+
http://www.FreeRTOS.org/training - Investing in training allows your team to
48+
be as productive as possible as early as possible. Now you can receive
49+
FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers
50+
Ltd, and the world's leading authority on the world's leading RTOS.
51+
52+
http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
53+
including FreeRTOS+Trace - an indispensable productivity tool, a DOS
54+
compatible FAT file system, and our tiny thread aware UDP/IP stack.
55+
56+
http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.
57+
Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.
58+
59+
http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High
60+
Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS
61+
licenses offer ticketed support, indemnification and commercial middleware.
62+
63+
http://www.SafeRTOS.com - High Integrity Systems also provide a safety
64+
engineered and independently SIL3 certified version for use in safety and
65+
mission critical applications that require provable dependability.
66+
67+
1 tab == 4 spaces!
68+
*/
69+
70+
71+
#ifndef FREERTOS_CONFIG_H
72+
#define FREERTOS_CONFIG_H
73+
74+
/*-----------------------------------------------------------
75+
* Application specific definitions.
76+
*
77+
* These definitions should be adjusted for your particular hardware and
78+
* application requirements.
79+
*
80+
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
81+
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
82+
*
83+
* See http://www.freertos.org/a00110.html.
84+
*----------------------------------------------------------*/
85+
86+
/* Begin custom definitions for STM32 */
87+
/* Default (3) Memory allocation implementations (heap_[1-5].c) */
88+
/*#define configMEMMANG_HEAP_NB 3*/
89+
/* End custom definitions for STM32 */
90+
91+
/* Ensure stdint is only used by the compiler, and not the assembler. */
92+
#if defined(__ICCARM__) || defined(__CC_ARM) || defined(__GNUC__)
93+
#include <stdint.h>
94+
extern uint32_t SystemCoreClock;
95+
#endif
96+
97+
#define configUSE_PREEMPTION 1
98+
#define configUSE_IDLE_HOOK 1
99+
#define configUSE_TICK_HOOK 1
100+
#define configCPU_CLOCK_HZ (SystemCoreClock)
101+
#define configTICK_RATE_HZ ((TickType_t)1000)
102+
#define configMAX_PRIORITIES (7)
103+
#define configMINIMAL_STACK_SIZE ((uint16_t)128)
104+
#define configTOTAL_HEAP_SIZE ((size_t)(15 * 1024))
105+
#define configMAX_TASK_NAME_LEN (16)
106+
#define configUSE_TRACE_FACILITY 1
107+
#define configUSE_16_BIT_TICKS 0
108+
#define configIDLE_SHOULD_YIELD 1
109+
#define configUSE_MUTEXES 1
110+
#define configQUEUE_REGISTRY_SIZE 8
111+
#define configCHECK_FOR_STACK_OVERFLOW 0
112+
#define configUSE_RECURSIVE_MUTEXES 1
113+
#define configUSE_MALLOC_FAILED_HOOK 0
114+
#define configUSE_APPLICATION_TASK_TAG 0
115+
#define configUSE_COUNTING_SEMAPHORES 1
116+
#define configGENERATE_RUN_TIME_STATS 0
117+
118+
/* Co-routine definitions. */
119+
#define configUSE_CO_ROUTINES 0
120+
#define configMAX_CO_ROUTINE_PRIORITIES (2)
121+
122+
/* Software timer definitions. */
123+
#define configUSE_TIMERS 1
124+
#define configTIMER_TASK_PRIORITY (2)
125+
#define configTIMER_QUEUE_LENGTH 10
126+
#define configTIMER_TASK_STACK_DEPTH (configMINIMAL_STACK_SIZE * 2)
127+
128+
/* Set the following definitions to 1 to include the API function, or zero
129+
to exclude the API function. */
130+
#define INCLUDE_vTaskPrioritySet 1
131+
#define INCLUDE_uxTaskPriorityGet 1
132+
#define INCLUDE_vTaskDelete 1
133+
#define INCLUDE_vTaskCleanUpResources 1
134+
#define INCLUDE_vTaskSuspend 1
135+
#define INCLUDE_vTaskDelayUntil 1
136+
#define INCLUDE_vTaskDelay 1
137+
#define INCLUDE_xTaskGetSchedulerState 1
138+
139+
/* Cortex-M specific definitions. */
140+
#ifdef __NVIC_PRIO_BITS
141+
/* __BVIC_PRIO_BITS will be specified when CMSIS is being used. */
142+
#define configPRIO_BITS __NVIC_PRIO_BITS
143+
#else
144+
#define configPRIO_BITS 4 /* 15 priority levels */
145+
#endif
146+
147+
/* The lowest interrupt priority that can be used in a call to a "set priority"
148+
function. */
149+
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 0xf
150+
151+
/* The highest interrupt priority that can be used by any interrupt service
152+
routine that makes calls to interrupt safe FreeRTOS API functions. DO NOT CALL
153+
INTERRUPT SAFE FREERTOS API FUNCTIONS FROM ANY INTERRUPT THAT HAS A HIGHER
154+
PRIORITY THAN THIS! (higher priorities are lower numeric values. */
155+
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5
156+
157+
/* Interrupt priorities used by the kernel port layer itself. These are generic
158+
to all Cortex-M ports, and do not rely on any particular library functions. */
159+
#define configKERNEL_INTERRUPT_PRIORITY ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
160+
/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!!
161+
See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */
162+
#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
163+
164+
/* Normal assert() semantics without relying on the provision of an assert.h
165+
header file. */
166+
#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); }
167+
168+
/* Definitions that map the FreeRTOS port interrupt handlers to their CMSIS
169+
standard names. */
170+
#define vPortSVCHandler SVC_Handler
171+
#define xPortPendSVHandler PendSV_Handler
172+
173+
/* IMPORTANT: This define MUST be commented when used with STM32Cube firmware,
174+
to prevent overwriting SysTick_Handler defined within STM32Cube HAL */
175+
/* #define xPortSysTickHandler SysTick_Handler */
176+
177+
#endif /* FREERTOS_CONFIG_H */
178+

0 commit comments

Comments
 (0)