{"id":481,"date":"2017-11-24T23:53:44","date_gmt":"2017-11-24T22:53:44","guid":{"rendered":"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=481"},"modified":"2017-12-30T19:39:13","modified_gmt":"2017-12-30T18:39:13","slug":"73-freertos-library-stm32f4","status":"publish","type":"page","link":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=481","title":{"rendered":"73-FreeRTOS-Library (STM32F4)"},"content":{"rendered":"<p><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-previous\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=479\" title=\"72-HC_SR04-Library (STM32F4)\"><span class=\"meta-nav\">\u2190<\/span> 72-HC_SR04-Library (STM32F4)<\/a><\/div><\/div><!-- #nav-below --><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-next\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=483\" title=\"74-SPI_Slave-Library (STM32F4)\">74-SPI_Slave-Library (STM32F4) <span class=\"meta-nav\">&rarr;<\/span><\/a><\/div><\/div><!-- #nav-below --><\/p>\n<p>Wer das echtzeit embedded Betriebssystem \u201cFreeRTOS\u201d auf dem STM32F4 laufen lassen will, kann diese \u201cLibrary\u201d benutzen.<\/p>\n<p>Im Grunde handelt es sich um keine echte Library, sondern nur um alle notwendigen Files um \u201cFreeRTOS\u201d auf einem Cortex-M4F (per GCC) zu betreiben.<\/p>\n<p>\u201cFreeRTOS\u201d ist kostenlos, OpenSource und findet sich unter \u201cwww.freertos.org\u201d. 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\u2026wird also demn\u00e4chst rauskommen)<\/p>\n<p>Das Beispiel zeigt ein \u201cMinimal-RTOS\u201d mit einem einzigen Task. Im Task wird die gr\u00fcne LED getoggelt und dann der Task f\u00fcr 500ms in den \u201cBlocked State\u201d versetzt (in dem er keine CPU last verbraucht)<\/p>\n<p>Ich kann hier keine weiteren Infos und hilfen zu FreeRTOS geben, bitte im Internet selbst danach suchen.<\/p>\n<p><em>Hinweis :<\/em><br \/>\n<em> Im File : \u201cstm32_ub_freertos.c\u201d befinden sich die vier Funktionshandler f\u00fcr \u201cIdle, TIC, StackOverflow, und\u00a0MallocFailed\u201d\u2026im Demo werden die nicht benutzt, m\u00fcssen aber vorhanden sein.<\/em><\/p>\n<p><strong>Beispiel :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">\/\/--------------------------------------------------------------\r\n\/\/ File     : main.c\r\n\/\/ Datum    : 11.01.2013\r\n\/\/ Version  : 1.0\r\n\/\/ Autor    : UB\r\n\/\/ EMail    : mc-4u(@)t-online.de\r\n\/\/ Web      : www.mikrocontroller-4u.de\r\n\/\/ CPU      : STM32F4\r\n\/\/ IDE      : CooCox CoIDE 1.7.4\r\n\/\/ GCC      : 4.7 2012q4\r\n\/\/ Module   : CMSIS_BOOT, M4_CMSIS_CORE\r\n\/\/ Funktion : Demo der FreeRTOS-Library\r\n\/\/ Hinweis  : Diese zwei Files muessen auf 8MHz stehen\r\n\/\/              \"cmsis_boot\/stm32f4xx.h\"\r\n\/\/              \"cmsis_boot\/system_stm32f4xx.c\"\r\n\/\/--------------------------------------------------------------\r\n\r\n#include \"main.h\"\r\n#include \"stm32_ub_freertos.h\"\r\n#include \"stm32_ub_led.h\"\r\n\r\n\/\/--------------------------------------------------------------\r\n\/\/ Prototypen der benutzten FreeRTOS-Tasks\r\n\/\/--------------------------------------------------------------\r\nvoid BlinkyTask( void *pvParameters );\r\n\r\n\/\/--------------------------------------------------------------\r\n\/\/ init der komplette Hardare f\u00fcr das Beispiel\r\n\/\/--------------------------------------------------------------\r\nvoid hw_init(void)\r\n{\r\n  UB_Led_Init();\r\n}\r\n\r\n\/\/--------------------------------------------------------------\r\nint main(void)\r\n{\r\n  SystemInit(); \/\/ Quarz Einstellungen aktivieren\r\n\r\n  \/\/ init der Hardware\r\n  hw_init();\r\n\r\n  \/\/ einen einzelnen Task erzeugen \"Blinky\"\r\n  xTaskCreate( BlinkyTask, ( signed char * ) \"Blinky\", configMINIMAL_STACK_SIZE, NULL, 1, NULL );\r\n\r\n  \/\/ FreeRTOS starten\r\n  vTaskStartScheduler();\r\n\r\n  \/\/ hier kommt die Software nicht hin,\r\n  \/\/ wenn FreeRTOS richtig funktioniert\r\n  UB_Led_On(LED_RED);\r\n\r\n  while(1)\r\n  {\r\n\r\n  }\r\n}\r\n\r\n\/\/--------------------------------------------------------------\r\n\/\/ FreeRTOS-Task \"Blinky\"\r\n\/\/--------------------------------------------------------------\r\nvoid BlinkyTask( void *pvParameters )\r\n{\r\n  while(1)\r\n  {\r\n    \/\/ gr\u00fcne LED toggeln\r\n    UB_Led_Toggle(LED_GREEN);\r\n    \/\/ Task f\u00fcr 500ms auf \"Blocked\"\r\n    vTaskDelay(500\/portTICK_RATE_MS);\r\n  }\r\n}\r\n<\/pre>\n<p>Hier die Library zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2014\/01\/ub_stm32f4_freertos_v100.zip\">ub_stm32f4_freertos_v100<\/a><\/p>\n<p>Hier der komplette CooCox-Projektordner zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2014\/01\/Demo_73_FreeRTOS.zip\">Demo_73_FreeRTOS<\/a><\/p>\n<hr \/>\n<h3 id=\"comments-title\">2 Antworten auf <em>73-FreeRTOS-Library (STM32F4)<\/em><\/h3>\n<ol class=\"commentlist\">\n<li id=\"li-comment-1311\" class=\"comment even thread-even depth-1\">\n<div id=\"comment-1311\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/e387d02ba3504c42b358741b2ced5aea?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Sascha<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">29. Januar 2014 um 12:02<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Super! Danach habe ich gesucht.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<li id=\"li-comment-1400\" class=\"comment odd alt thread-odd thread-alt depth-1\">\n<div id=\"comment-1400\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/0a896357ec05b06c5a01e8f68181198c?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\"><a class=\"url\" href=\"http:\/\/vrpinc.com\/\" rel=\"external nofollow\">AIL<\/a><\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">16. Februar 2014 um 18:05<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hi!<\/p>\n<p>Sorry for English, but I don\u2019t know German at all. I\u2019m Belarussian.<\/p>\n<p>Thank you very much for your libraries and your job. I\u2019m starting with stm32f4 and face with some prbllems. I\u2019m sure, your code will be much helpful for everyone like me and form mature developers too.<\/p>\n<p>Thank you in advance.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Wer das echtzeit embedded Betriebssystem \u201cFreeRTOS\u201d auf dem STM32F4 laufen lassen will, kann diese \u201cLibrary\u201d benutzen. Im Grunde handelt es sich um keine echte Library, sondern nur um alle notwendigen Files um \u201cFreeRTOS\u201d auf einem Cortex-M4F (per GCC) zu betreiben. &hellip; <a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=481\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":144,"menu_order":73,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[128],"tags":[229,9,7],"class_list":["post-481","page","type-page","status-publish","hentry","category-stm32f4","tag-freertos","tag-library","tag-stm32f4"],"_links":{"self":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/481","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=481"}],"version-history":[{"count":3,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/481\/revisions"}],"predecessor-version":[{"id":1612,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/481\/revisions\/1612"}],"up":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/144"}],"wp:attachment":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=481"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=481"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=481"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}