73-FreeRTOS-Library (STM32F4)

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 :

ub_stm32f4_freertos_v100

Hier der komplette CooCox-Projektordner zum Download :

Demo_73_FreeRTOS


2 Antworten auf 73-FreeRTOS-Library (STM32F4)

  1. Sascha sagt:

    Super! Danach habe ich gesucht.

  2. AIL sagt:

    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.


Wie hat Dir dieser Artikel gefallen?

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Noch keine Bewertungen)
Loading...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert