{"id":23744848,"url":"https://github.com/stm32duino/stm32freertos","last_synced_at":"2025-04-05T11:12:42.890Z","repository":{"id":41281122,"uuid":"116370163","full_name":"stm32duino/STM32FreeRTOS","owner":"stm32duino","description":"Real Time Operating System implemented for STM32","archived":false,"fork":false,"pushed_at":"2024-07-25T16:01:12.000Z","size":803,"stargazers_count":322,"open_issues_count":1,"forks_count":65,"subscribers_count":14,"default_branch":"main","last_synced_at":"2025-03-29T10:09:18.080Z","etag":null,"topics":["freertos","stm32"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stm32duino.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-01-05T09:56:51.000Z","updated_at":"2025-03-25T15:37:57.000Z","dependencies_parsed_at":"2024-07-25T18:22:08.805Z","dependency_job_id":null,"html_url":"https://github.com/stm32duino/STM32FreeRTOS","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stm32duino%2FSTM32FreeRTOS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stm32duino%2FSTM32FreeRTOS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stm32duino%2FSTM32FreeRTOS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stm32duino%2FSTM32FreeRTOS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stm32duino","download_url":"https://codeload.github.com/stm32duino/STM32FreeRTOS/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247325695,"owners_count":20920714,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["freertos","stm32"],"created_at":"2024-12-31T12:50:05.606Z","updated_at":"2025-04-05T11:12:42.854Z","avatar_url":"https://github.com/stm32duino.png","language":"C","readme":"# STM32 FreeRTOS Library for Arduino\n\nThis is a port of FreeRTOS for STM32 as Arduino libraries.\n\nFor more information about FreeRTOS, visit the [FreeRTOS Web Site](http://www.freertos.org/ \"FreeRTOS\").\nAlso, See the very useful [Getting Started](http://www.freertos.org/FreeRTOS-quick-start-guide.html \"Quick Start Guide\") page.\n\nThis library provides 2 FreeRTOS versions:\n * [9.x](http://www.freertos.org/FreeRTOS-V9.html)\n * [10.x](http://www.freertos.org/FreeRTOS-V10.html):\n   * [10.0.1](https://github.com/STMicroelectronics/stm32_mw_freertos/releases/tag/v10.0.1) \n   * [10.2.1](https://github.com/STMicroelectronics/stm32_mw_freertos/releases/tag/v10.2.1)\n   * [10.3.1](https://github.com/STMicroelectronics/stm32_mw_freertos/releases/tag/v10.3.1)\n\nEach have been modified by ST (See st_readme.txt in FreeRTOS Source).\n\nThese are the same provided with the [STM32Cube MCU Packages](http://www.st.com/en/embedded-software/stm32cube-mcu-packages.html).\nOr thanks to [STMicroelectronics GitHub organization](https://github.com/STMicroelectronics): [stm32_mw_freertos](https://github.com/STMicroelectronics/stm32_mw_freertos).\n\n## Configuration\n\nFreeRTOS has several configuration options, which can be specified from within the FreeRTOSConfig.h file.\n\nThis library provides a default FreeRTOS configuration file named `FreeRTOSConfig_Default.h`.\n\nUser can provide his own FreeRTOS configuration file at sketch level by adding his configuration in a file named `STM32FreeRTOSConfig.h`.\n\nOr add extra FreeRTOS configuration to the default at sketch level by adding an extra configuration in a file named `STM32FreeRTOSConfig_extra.h`.\n\nHeap allocation schemes are provided by FreeRTOS, see [Memory allocation implementations included in the RTOS source](https://www.freertos.org/a00111.html).\nTo extend those schemes a thread-safe heap allocation using C runtime (Newlib) has been added based on Dave Nadler work:\n\nhttp://www.nadler.com/embedded/newlibAndFreeRTOS.html\n\nBy default, the `heap_useNewlib.c` is used. It can be changed thanks a define in the configuration file:\n```\n/* Define memory allocation implementations to use:\n * 1 to 5 for heap_[1-5].c\n * -1 for heap_useNewlib_ST.c\n * Default -1 see heap.c\n */\n```\n\nSince v10.0.1, CMSIS-RTOSv2 can be used instead of default CMSIS-RTOS.\n\n`configUSE_CMSIS_RTOS_V2` has to be defined and set to `1` to use\nCMSIS-RTOSv2.\n\n\n## Limitations\n\n* MPU: not supported.\n* No CMSIS-RTOSv2 support provided. It is provided as example.\n* On Cortex-M0 and Cortex-M0+, all IT are disabled between xTaskCreate() and vTaskStartScheduler().\n  So it is not possible to use IT inbetween, like Serial.print() ...\n  This is the reason why, in example \"frLiyLayland\", between xTaskCreate() and vTaskStartScheduler(),\n  we use direct printf(), which will access directly USART without interrupt\n\n## Files \u0026 Configuration\n\n* STM32FreeRTOS.h : Must always be #include first. It references required include files.\n* STM32FreeRTOSConfig.h : If exist at sketch level, it contains the FreeRTOS configurations.\n* STM32FreeRTOSConfig_extra.h : If exist at sketch level, it contains extra FreeRTOS configurations.\n* FreeRTOSConfig_Default.h : Contains the default FreeRTOS configurations for this STM32 port if `STM32FreeRTOSConfig.h` doesn't exist.\n\n## Test results (using [Arduino_Core_STM32](https://github.com/stm32duino/Arduino_Core_STM32))\n\n### STM32FreeRTOS v9.0.x\n| Board | AnalogRead_DigitalRead | Blink_AnalogRead | frBlink | frBlinkPrint | frJitter | frLiuLayland |\n| --- | :---: | :---: | :---: | :---: | :---: | :---: |\n| [Nucleo F091RC](http://www.st.com/en/evaluation-tools/nucleo-f091rc.html) | PASSED | PASSED | PASSED | PASSED | PASSED | FAILED |\n| [Nucleo F103RB](http://www.st.com/en/evaluation-tools/nucleo-f103rb.html) | PASSED | PASSED | PASSED | PASSED | PASSED | PASSED |\n| [Nucleo F303RE](http://www.st.com/en/evaluation-tools/nucleo-f303re.html) | PASSED | PASSED | PASSED | PASSED | PASSED | PASSED |\n| [Nucleo F429ZI](http://www.st.com/en/evaluation-tools/nucleo-f429zi.html) | PASSED | PASSED | PASSED | PASSED | PASSED | PASSED |\n| [STM32F746G-DISCOVERY](http://www.st.com/en/evaluation-tools/32f746gdiscovery.html) | PASSED | PASSED | PASSED | PASSED | PASSED | PASSED |\n| [Nucleo L053R8](http://www.st.com/en/evaluation-tools/nucleo-l053r8.html) | PASSED* | PASSED* | PASSED* | PASSED* | PASSED* | FAILED |\n| [Nucleo L152RE](http://www.st.com/en/evaluation-tools/nucleo-l152re.html) | PASSED | PASSED | PASSED | PASSED | PASSED | PASSED |\n| [B-L475E-IOT01A](http://www.st.com/en/evaluation-tools/b-l475e-iot01a.html) | PASSED | PASSED | PASSED | PASSED | PASSED | PASSED |\n\n### STM32FreeRTOS v10.0.x\n| Board | AnalogRead_DigitalRead | frBlinkPrint | frLiuLayland | frBlink (CMSIS-RTOSv2) | Blinky (CMSIS-RTOSv2) |\n| --- | :---: | :---: | :---: | :---: | :---: |\n| [Nucleo F091RC](http://www.st.com/en/evaluation-tools/nucleo-f091rc.html) | PASSED | PASSED | FAILED | PASSED | PASSED |\n| [Nucleo F103RB](http://www.st.com/en/evaluation-tools/nucleo-f103rb.html) | PASSED | PASSED | PASSED | PASSED | PASSED |\n| [Nucleo F303RE](http://www.st.com/en/evaluation-tools/nucleo-f303re.html) | PASSED | PASSED | PASSED | PASSED | PASSED |\n| [Nucleo F429ZI](http://www.st.com/en/evaluation-tools/nucleo-f429zi.html) | PASSED | PASSED | PASSED | PASSED | PASSED |\n| [STM32F746G-DISCOVERY](http://www.st.com/en/evaluation-tools/32f746gdiscovery.html) | PASSED | PASSED | PASSED | PASSED | PASSED |\n| [Nucleo-G071RB](https://www.st.com/en/evaluation-tools/nucleo-g071rb.html) | PASSED | PASSED | FAILED | PASSED | PASSED |\n| [Nucleo H743ZI](https://www.st.com/en/evaluation-tools/nucleo-h743zi.html) | PASSED | PASSED | PASSED | PASSED | PASSED |\n| [Nucleo L053R8](http://www.st.com/en/evaluation-tools/nucleo-l053r8.html) | PASSED* | PASSED* | FAILED | PASSED | PASSED |\n| [Nucleo L152RE](http://www.st.com/en/evaluation-tools/nucleo-l152re.html) | PASSED | PASSED | PASSED | PASSED | PASSED |\n| [B-L475E-IOT01A](http://www.st.com/en/evaluation-tools/b-l475e-iot01a.html) | PASSED | PASSED | PASSED | PASSED | PASSED |\n| [P-Nucleo-WB55RG](https://www.st.com/en/evaluation-tools/p-nucleo-wb55.html) | PASSED | PASSED | FAILED | PASSED | PASSED |\n\n\\* PASSED with `configUSE_NEWLIB_REENTRANT` set to 0 due to small RAM.\n\n### STM32FreeRTOS v10.2.x\n| Board | AnalogRead_DigitalRead | frBlinkPrint | frLiuLayland | frBlink (CMSIS-RTOSv2) | Blinky (CMSIS-RTOSv2) |\n| --- | :---: | :---: | :---: | :---: | :---: |\n| [Nucleo F091RC](http://www.st.com/en/evaluation-tools/nucleo-f091rc.html) | PASSED | PASSED | FAILED | PASSED | PASSED |\n| [Nucleo F103RB](http://www.st.com/en/evaluation-tools/nucleo-f103rb.html) | PASSED | PASSED | PASSED | PASSED | PASSED |\n| [Nucleo F303RE](http://www.st.com/en/evaluation-tools/nucleo-f303re.html) | PASSED | PASSED | PASSED | PASSED | PASSED |\n| [Nucleo F411RE](http://www.st.com/en/evaluation-tools/nucleo-f411re.html) | PASSED | PASSED | PASSED | PASSED | PASSED |\n| [STM32F746G-DISCOVERY](http://www.st.com/en/evaluation-tools/32f746gdiscovery.html) | PASSED | PASSED | PASSED | PASSED | PASSED |\n| [Nucleo-G071RB](https://www.st.com/en/evaluation-tools/nucleo-g071rb.html) | PASSED | PASSED | FAILED | PASSED | PASSED |\n| [Nucleo-G474RE](https://www.st.com/en/evaluation-tools/nucleo-g474re.html) | PASSED | PASSED | FAILED | PASSED | PASSED |\n| [Nucleo H743ZI](https://www.st.com/en/evaluation-tools/nucleo-h743zi.html) | PASSED | PASSED | PASSED | PASSED | PASSED |\n| [Nucleo L053R8](http://www.st.com/en/evaluation-tools/nucleo-l053r8.html) | PASSED* | PASSED* | FAILED | PASSED | PASSED |\n| [Nucleo L152RE](http://www.st.com/en/evaluation-tools/nucleo-l152re.html) | PASSED | PASSED | PASSED | PASSED | PASSED |\n| [B-L475E-IOT01A](http://www.st.com/en/evaluation-tools/b-l475e-iot01a.html) | PASSED | PASSED | PASSED | PASSED | PASSED |\n| [P-Nucleo-WB55RG](https://www.st.com/en/evaluation-tools/p-nucleo-wb55.html) | PASSED | PASSED | FAILED | PASSED | PASSED |\n\n\\* PASSED with `configUSE_NEWLIB_REENTRANT` set to 0 due to small RAM.\n\n### STM32FreeRTOS v10.3.1\n| Board | AnalogRead_DigitalRead | frBlinkPrint | frLiuLayland | frBlink (CMSIS-RTOSv2) | Blinky (CMSIS-RTOSv2) |\n| --- | :---: | :---: | :---: | :---: | :---: |\n| [Nucleo F091RC (Cortex-M0)](http://www.st.com/en/evaluation-tools/nucleo-f091rc.html) | PASSED | PASSED | PASSED | PASSED | PASSED |\n| [Nucleo G071RB (Cortex-M0+)](http://www.st.com/en/evaluation-tools/nucleo-g071rb.html) | PASSED | PASSED | PASSED | PASSED | PASSED |\n| [Nucleo F103RB (Cortex-M3)](http://www.st.com/en/evaluation-tools/nucleo-f103rb.html) | PASSED | PASSED | PASSED | PASSED | PASSED |\n| [Nucleo L476RG (Cortex-M4)](http://www.st.com/en/evaluation-tools/nucleo-l476rg.html) | PASSED | PASSED | PASSED | PASSED | PASSED |\n| [Nucleo H743ZI (Cortex-M7)](https://www.st.com/en/evaluation-tools/nucleo-h743zi.html) | PASSED | PASSED | PASSED | PASSED | PASSED |\n| [Nucleo L552ZE-Q (Cortex-M33)](https://www.st.com/en/evaluation-tools/nucleo-l552ze-q.html) | PASSED | PASSED | PASSED | PASSED | PASSED |\n| [Nucleo U575ZI-Q (Cortex-M33)](https://www.st.com/en/evaluation-tools/nucleo-u575zi-q.html) | PASSED | PASSED | PASSED | PASSED | PASSED |\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstm32duino%2Fstm32freertos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstm32duino%2Fstm32freertos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstm32duino%2Fstm32freertos/lists"}