- Notifications
You must be signed in to change notification settings - Fork64
stm32duino/STM32FreeRTOS
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
This is a port of FreeRTOS for STM32 as Arduino libraries.
For more information about FreeRTOS, visit theFreeRTOS Web Site.Also, See the very usefulGetting Started page.
This library provides 2 FreeRTOS versions:
Each have been modified by ST (See st_readme.txt in FreeRTOS Source).
These are the same provided with theSTM32Cube MCU Packages.Or thanks toSTMicroelectronics GitHub organization:stm32_mw_freertos.
FreeRTOS has several configuration options, which can be specified from within the FreeRTOSConfig.h file.
This library provides a default FreeRTOS configuration file namedFreeRTOSConfig_Default.h.
User can provide his own FreeRTOS configuration file at sketch level by adding his configuration in a file namedSTM32FreeRTOSConfig.h.
Or add extra FreeRTOS configuration to the default at sketch level by adding an extra configuration in a file namedSTM32FreeRTOSConfig_extra.h.
Heap allocation schemes are provided by FreeRTOS, seeMemory allocation implementations included in the RTOS source.To extend those schemes a thread-safe heap allocation using C runtime (Newlib) has been added based on Dave Nadler work:
http://www.nadler.com/embedded/newlibAndFreeRTOS.html
By default, theheap_useNewlib.c is used. It can be changed thanks a define in the configuration file:
/* Define memory allocation implementations to use: * 1 to 5 for heap_[1-5].c * -1 for heap_useNewlib_ST.c * Default -1 see heap.c */Since v10.0.1, CMSIS-RTOSv2 can be used instead of default CMSIS-RTOS.
configUSE_CMSIS_RTOS_V2 has to be defined and set to1 to useCMSIS-RTOSv2.
- MPU: not supported.
- No CMSIS-RTOSv2 support provided. It is provided as example.
- On Cortex-M0 and Cortex-M0+, all IT are disabled between xTaskCreate() and vTaskStartScheduler().So it is not possible to use IT inbetween, like Serial.print() ...This is the reason why, in example "frLiyLayland", between xTaskCreate() and vTaskStartScheduler(),we use direct printf(), which will access directly USART without interrupt
- STM32FreeRTOS.h : Must always be #include first. It references required include files.
- STM32FreeRTOSConfig.h : If exist at sketch level, it contains the FreeRTOS configurations.
- STM32FreeRTOSConfig_extra.h : If exist at sketch level, it contains extra FreeRTOS configurations.
- FreeRTOSConfig_Default.h : Contains the default FreeRTOS configurations for this STM32 port if
STM32FreeRTOSConfig.hdoesn't exist.
Test results (usingArduino_Core_STM32)
| Board | AnalogRead_DigitalRead | Blink_AnalogRead | frBlink | frBlinkPrint | frJitter | frLiuLayland |
|---|---|---|---|---|---|---|
| Nucleo F091RC | PASSED | PASSED | PASSED | PASSED | PASSED | FAILED |
| Nucleo F103RB | PASSED | PASSED | PASSED | PASSED | PASSED | PASSED |
| Nucleo F303RE | PASSED | PASSED | PASSED | PASSED | PASSED | PASSED |
| Nucleo F429ZI | PASSED | PASSED | PASSED | PASSED | PASSED | PASSED |
| STM32F746G-DISCOVERY | PASSED | PASSED | PASSED | PASSED | PASSED | PASSED |
| Nucleo L053R8 | PASSED* | PASSED* | PASSED* | PASSED* | PASSED* | FAILED |
| Nucleo L152RE | PASSED | PASSED | PASSED | PASSED | PASSED | PASSED |
| B-L475E-IOT01A | PASSED | PASSED | PASSED | PASSED | PASSED | PASSED |
| Board | AnalogRead_DigitalRead | frBlinkPrint | frLiuLayland | frBlink (CMSIS-RTOSv2) | Blinky (CMSIS-RTOSv2) |
|---|---|---|---|---|---|
| Nucleo F091RC | PASSED | PASSED | FAILED | PASSED | PASSED |
| Nucleo F103RB | PASSED | PASSED | PASSED | PASSED | PASSED |
| Nucleo F303RE | PASSED | PASSED | PASSED | PASSED | PASSED |
| Nucleo F429ZI | PASSED | PASSED | PASSED | PASSED | PASSED |
| STM32F746G-DISCOVERY | PASSED | PASSED | PASSED | PASSED | PASSED |
| Nucleo-G071RB | PASSED | PASSED | FAILED | PASSED | PASSED |
| Nucleo H743ZI | PASSED | PASSED | PASSED | PASSED | PASSED |
| Nucleo L053R8 | PASSED* | PASSED* | FAILED | PASSED | PASSED |
| Nucleo L152RE | PASSED | PASSED | PASSED | PASSED | PASSED |
| B-L475E-IOT01A | PASSED | PASSED | PASSED | PASSED | PASSED |
| P-Nucleo-WB55RG | PASSED | PASSED | FAILED | PASSED | PASSED |
* PASSED withconfigUSE_NEWLIB_REENTRANT set to 0 due to small RAM.
| Board | AnalogRead_DigitalRead | frBlinkPrint | frLiuLayland | frBlink (CMSIS-RTOSv2) | Blinky (CMSIS-RTOSv2) |
|---|---|---|---|---|---|
| Nucleo F091RC | PASSED | PASSED | FAILED | PASSED | PASSED |
| Nucleo F103RB | PASSED | PASSED | PASSED | PASSED | PASSED |
| Nucleo F303RE | PASSED | PASSED | PASSED | PASSED | PASSED |
| Nucleo F411RE | PASSED | PASSED | PASSED | PASSED | PASSED |
| STM32F746G-DISCOVERY | PASSED | PASSED | PASSED | PASSED | PASSED |
| Nucleo-G071RB | PASSED | PASSED | FAILED | PASSED | PASSED |
| Nucleo-G474RE | PASSED | PASSED | FAILED | PASSED | PASSED |
| Nucleo H743ZI | PASSED | PASSED | PASSED | PASSED | PASSED |
| Nucleo L053R8 | PASSED* | PASSED* | FAILED | PASSED | PASSED |
| Nucleo L152RE | PASSED | PASSED | PASSED | PASSED | PASSED |
| B-L475E-IOT01A | PASSED | PASSED | PASSED | PASSED | PASSED |
| P-Nucleo-WB55RG | PASSED | PASSED | FAILED | PASSED | PASSED |
* PASSED withconfigUSE_NEWLIB_REENTRANT set to 0 due to small RAM.
| Board | AnalogRead_DigitalRead | frBlinkPrint | frLiuLayland | frBlink (CMSIS-RTOSv2) | Blinky (CMSIS-RTOSv2) |
|---|---|---|---|---|---|
| Nucleo F091RC (Cortex-M0) | PASSED | PASSED | PASSED | PASSED | PASSED |
| Nucleo G071RB (Cortex-M0+) | PASSED | PASSED | PASSED | PASSED | PASSED |
| Nucleo F103RB (Cortex-M3) | PASSED | PASSED | PASSED | PASSED | PASSED |
| Nucleo L476RG (Cortex-M4) | PASSED | PASSED | PASSED | PASSED | PASSED |
| Nucleo H743ZI (Cortex-M7) | PASSED | PASSED | PASSED | PASSED | PASSED |
| Nucleo L552ZE-Q (Cortex-M33) | PASSED | PASSED | PASSED | PASSED | PASSED |
| Nucleo U575ZI-Q (Cortex-M33) | PASSED | PASSED | PASSED | PASSED | PASSED |
About
Real Time Operating System implemented for STM32
Topics
Resources
Code of conduct
Contributing
Security policy
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors7
Uh oh!
There was an error while loading.Please reload this page.