{"id":142,"date":"2017-11-22T00:35:38","date_gmt":"2017-11-21T23:35:38","guid":{"rendered":"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=142"},"modified":"2017-12-30T19:17:43","modified_gmt":"2017-12-30T18:17:43","slug":"allgemeines-zu-den-stm32f4-librarys","status":"publish","type":"page","link":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/allgemeines-zu-den-stm32f4-librarys\/","title":{"rendered":"Allgemeines zu den STM32F4-Librarys"},"content":{"rendered":"<p><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-previous\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/pc-programme-von-uwe\/\" title=\"PC-Programme von Uwe\"><span class=\"meta-nav\">\u2190<\/span> PC-Programme von Uwe<\/a><\/div><\/div><!-- #nav-below --><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-next\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/komplette-library-liste-stm32f4\/\" title=\"Komplette-Library-Liste (STM32F4)\">Komplette-Library-Liste (STM32F4) <span class=\"meta-nav\">&rarr;<\/span><\/a><\/div><\/div><!-- #nav-below --><\/p>\n<p>Hier ein paar Hinweise zu den von mir erstellten Librarys<\/p>\n<p><a href=\"#A01\">1. Zu BUGs<\/a><br \/>\n<a href=\"#A02\">2. Zu Port-Pin-Strukturen<\/a><br \/>\n<a href=\"#A03\">3. Zu Compiler Einstellungen<\/a><br \/>\n<a href=\"#A04\">4. Zu den Projektfiles<\/a><\/p>\n<p><a name=\"A01\"><\/a><strong>1. Zu BUGs :<\/strong><\/p>\n<p>Die Librarys die ich hochlade, sind von mir alle mit dem Discovery-Board und der beschriebenen ToolChain getestet\u2026was aber <span style=\"text-decoration: underline;\">nicht<\/span> bedeutet das sie 100% Fehlerfrei sind. Falls Ihr Fehler findet schreibt sie mir bitte, dann kann ich die beheben.<\/p>\n<p><a name=\"A02\"><\/a><strong>2. Zu Port-Pin-Strukturen :<\/strong><\/p>\n<p>Die Port-Pins werden im STM32F4 etwas anders gehandhabt als z.B. auf dem ATMega. Um die Librarys so flexibel wie m\u00f6glich zu halten, habe ich bei einigen eine Struktur in die C-Files eingef\u00fcgt, in die alle benutzten Port-Pins eingetragen werden m\u00fcssen.<\/p>\n<p>Das beste Beispiel ist die Library \u201c03-Digital-Out\u201d. Um festzulegen welche Port-Pins als Ausgang benutzt werden sollen, m\u00fcssen zun\u00e4chst ALLE im H-File in der <strong>Enumeration<\/strong> aufgelistet werden. Wichtig ist hier, das der erste Eintrag bei \u201c0\u2033 beginnt und dann immer um \u201c1\u2033\u00a0inkrementiert\u00a0wird.<\/p>\n<p><strong>Beispiel :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">typedef enum \r\n{\r\n  DOUT_PB2 = 0,  \/\/ PB2-Pin\r\n  DOUT_PB7 = 1,  \/\/ PB7-Pin\r\n  DOUT_PC6 = 2,  \/\/ PC6-Pin\r\n  DOUT_PC13 = 3  \/\/ PC13-Pin\r\n}DOUT_NAME_t;<\/pre>\n<p>Dann gibt es noch einen <strong>Define<\/strong> in der die Anzahl der Elemente eingtragen werden muss<\/p>\n<pre lang=\"c\" line=\"1\">#define  DOUT_ANZ   4 \/\/ Anzahl von DOUT_NAME_t<\/pre>\n<p>Im C-File muss dann die <strong>Struktur<\/strong> mit allen Elementen aus der Enumeration gef\u00fcllt werden. Hier findet dann auch die Zuordnung zu den Port-Pins und den Clock-Registern statt. Eventuell gibt es noch einen Eintrag f\u00fcr Init-Pegel oder Pull-Ups oder sonstiges.<\/p>\n<p><strong>Beispiel :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">DOUT_PIN_t DOUT_PIN[] = {\r\n  \/\/ Name    ,PORT , PIN       , CLOCK              , Init\r\n  {DOUT_PB2 ,GPIOB,GPIO_Pin_2 ,RCC_AHB1Periph_GPIOB,Bit_RESET},\r\n  {DOUT_PB7 ,GPIOB,GPIO_Pin_7 ,RCC_AHB1Periph_GPIOB,Bit_RESET},\r\n  {DOUT_PC6 ,GPIOC,GPIO_Pin_6 ,RCC_AHB1Periph_GPIOC,Bit_RESET},\r\n  {DOUT_PC13,GPIOC,GPIO_Pin_13,RCC_AHB1Periph_GPIOC,Bit_RESET},\r\n};<\/pre>\n<p>Wichtig ist hier das die Reihenfolge mit der Enumeration \u00fcbereinstimmt und alle Parameter richtig gesetzt werden.<\/p>\n<p><strong>Port<\/strong> kann sein :<\/p>\n<pre lang=\"c\" line=\"1\">GPIOA bis GPIOI<\/pre>\n<p><strong>Pin<\/strong> kann sein :<\/p>\n<pre lang=\"c\" line=\"1\">GPIO_Pin_0 bis GPIO_Pin_15<\/pre>\n<p><strong>Clock<\/strong> kann sein :<\/p>\n<pre lang=\"c\" line=\"1\">RCC_AHB1Periph_GPIOA bis RCC_AHB1Periph_GPIOI<\/pre>\n<p>In der restlichen Library muss nichts ge\u00e4ndert werden. Alle Funktionen greifen auf die Struktur zu und arbeiten mit diesen Daten.<\/p>\n<p><a name=\"A03\"><\/a><strong>3. Zu Compiler Einstellungen :<\/strong><\/p>\n<p>Ich habe Grunds\u00e4tzlich die Compiler Optimierung <strong>AUS<\/strong> = \u201cnone\u201d<br \/>\nund benutze auch nicht die Hardware-FPU<\/p>\n<p>Falls ihr andere Einstellungen benutzt, kann es zu Fehlern kommen, weil z.B. Delay-Schleifen wegoptimiert werden oder zu schnell ablaufen.<\/p>\n<p><a name=\"A04\"><\/a><strong>4. Zu den Projektfiles :<\/strong><\/p>\n<p>Ich lade alle STM32F4-Librarys in zwei \u201cFormaten\u201d hoch. Einmal die reinen Quellfiles die ben\u00f6tigt werden (plus Main.c als Beispielvorlage) und zum zweiten meinen kompletten CooCox-Projektordern in dem sich alle notwendigen LIBs von ST befinden.<\/p>\n<p>Im Ordner \u201cProjektname\/Debug\/bin\/\u201d befindet sich das compilierte Bin\u00e4r-File das ihr z.B. mit dem ST-Link-Utility direkt auf das Discovery-Board flashen k\u00f6nnt. Mit diesem File k\u00f6nnt ihr (falls Fehler auftauchen) die Softwareseite ausschlie\u00dfen (weil das File von mir getestet wurde und funktioniert)<\/p>\n<hr \/>\n<h3 id=\"comments-title\">2 Antworten auf <em>Allgemeines zu den STM32F4-Librarys<\/em><\/h3>\n<ol class=\"commentlist\">\n<li id=\"li-comment-2834\" class=\"comment even thread-even depth-1\">\n<div id=\"comment-2834\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/25d3108c9883f2a7083f5406f16c9ace?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\">Burak Emre Polat<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">15. Januar 2015 um 19:51<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hi;<\/p>\n<p>Thanks for your sharings. They are very precious. I began to use coocox by help of you.<br \/>\nHowever, I could not achieve to use malloc with coocox. Allocating heap memory and malloc are not explained clearly very well in other sources. Can you explain and give an example of aloocating memory and malloc in Coocox for STM32<\/p>\n<p>Thank you very much<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-2836\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-2\">\n<div id=\"comment-2836\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?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\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">15. Januar 2015 um 21:18<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>First you have to aktivate \u201cC Library\u201d in the CoIDE Peripherals.<br \/>\nThan insert an include in your main.c<\/p>\n<pre class=\"brush: plain; title: ; notranslate\">#include \r\n<\/pre>\n<p>thats it<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Hier ein paar Hinweise zu den von mir erstellten Librarys 1. Zu BUGs 2. Zu Port-Pin-Strukturen 3. Zu Compiler Einstellungen 4. Zu den Projektfiles 1. Zu BUGs : Die Librarys die ich hochlade, sind von mir alle mit dem Discovery-Board &hellip; <a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/allgemeines-zu-den-stm32f4-librarys\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":57,"menu_order":8,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[128],"tags":[15,7],"class_list":["post-142","page","type-page","status-publish","hentry","category-stm32f4","tag-komplette-library-liste","tag-stm32f4"],"_links":{"self":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/142","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/comments?post=142"}],"version-history":[{"count":3,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/142\/revisions"}],"predecessor-version":[{"id":1255,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/142\/revisions\/1255"}],"up":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/57"}],"wp:attachment":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/media?parent=142"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/categories?post=142"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/tags?post=142"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}