Wer das echtzeit embedded Betriebssystem “FreeRTOS” auf dem STM32F4 laufen lassen will, kann diese “Library” benutzen.
Im Grunde handelt es sich um keine echte Library, sondern nur um alle notwendigen Files um “FreeRTOS” auf einem Cortex-M4F (per GCC) zu betreiben.
“FreeRTOS” ist kostenlos, OpenSource und findet sich unter “www.freertos.org”. Dort gibt es auch jede Menge Infos zu dem Thema. Die im Moment noch aktuelle Version ist 7.6.0 (aber von der Version 8.0.0 gibt es schon den RC#2…wird also demnächst rauskommen)
Das Beispiel zeigt ein “Minimal-RTOS” mit einem einzigen Task. Im Task wird die grüne LED getoggelt und dann der Task für 500ms in den “Blocked State” versetzt (in dem er keine CPU last verbraucht)
Ich kann hier keine weiteren Infos und hilfen zu FreeRTOS geben, bitte im Internet selbst danach suchen.
Hinweis :
Im File : “stm32_ub_freertos.c” befinden sich die vier Funktionshandler für “Idle, TIC, StackOverflow, und MallocFailed”…im Demo werden die nicht benutzt, müssen aber vorhanden sein.
Beispiel :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | //-------------------------------------------------------------- // File : main.c // Datum : 11.01.2013 // Version : 1.0 // Autor : UB // EMail : mc-4u(@)t-online.de // Web : www.mikrocontroller-4u.de // CPU : STM32F4 // IDE : CooCox CoIDE 1.7.4 // GCC : 4.7 2012q4 // Module : CMSIS_BOOT, M4_CMSIS_CORE // Funktion : Demo der FreeRTOS-Library // Hinweis : Diese zwei Files muessen auf 8MHz stehen // "cmsis_boot/stm32f4xx.h" // "cmsis_boot/system_stm32f4xx.c" //-------------------------------------------------------------- #include "main.h" #include "stm32_ub_freertos.h" #include "stm32_ub_led.h" //-------------------------------------------------------------- // Prototypen der benutzten FreeRTOS-Tasks //-------------------------------------------------------------- void BlinkyTask( void *pvParameters ); //-------------------------------------------------------------- // init der komplette Hardare für das Beispiel //-------------------------------------------------------------- void hw_init(void) { UB_Led_Init(); } //-------------------------------------------------------------- int main(void) { SystemInit(); // Quarz Einstellungen aktivieren // init der Hardware hw_init(); // einen einzelnen Task erzeugen "Blinky" xTaskCreate( BlinkyTask, ( signed char * ) "Blinky", configMINIMAL_STACK_SIZE, NULL, 1, NULL ); // FreeRTOS starten vTaskStartScheduler(); // hier kommt die Software nicht hin, // wenn FreeRTOS richtig funktioniert UB_Led_On(LED_RED); while(1) { } } //-------------------------------------------------------------- // FreeRTOS-Task "Blinky" //-------------------------------------------------------------- void BlinkyTask( void *pvParameters ) { while(1) { // grüne LED toggeln UB_Led_Toggle(LED_GREEN); // Task für 500ms auf "Blocked" vTaskDelay(500/portTICK_RATE_MS); } } |
Hier die Library zum Download :
Hier der komplette CooCox-Projektordner zum Download :
Super! Danach habe ich gesucht.
Hi!
Sorry for English, but I don’t know German at all. I’m Belarussian.
Thank you very much for your libraries and your job. I’m starting with stm32f4 and face with some prbllems. I’m sure, your code will be much helpful for everyone like me and form mature developers too.
Thank you in advance.