Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
start [2019/08/01 15:55] huwistart [2020/04/21 11:52] huwi
Zeile 1: Zeile 1:
 {{ :transparent_logo_sisy.png?nolink&150|}} {{ :transparent_logo_sisy.png?nolink&150|}}
-====== aktueller Hinweis =====+===== aktueller Hinweis =====
- +
-**<COUNTDOWN:12.09.2019|zur MESCONF>** +
- +
-[[http://www.mesconf.de|MESCONF 2019, The Modeling Conference am 12. und 13. September bei Infineon in München.]] +
---------------------------------------- +
  
 +**<COUNTDOWN:17.09.2020|zur MESCONF>**[[https://mesconf.de/| The embedded systems modeling conference]]
 +  
 ===== Meinen STM32 einfach und modern programmieren ===== ===== Meinen STM32 einfach und modern programmieren =====
  
-Dieses Tutorial wendet sich an Leser, die bereits über Kenntnisse einer beliebigen Programmiersprache verfügen und sich auch mit der objektorientierten Programmierung von ARM Mikrocontrollern beschäftigen möchten. +Ihr möchtet nicht mit einem alten 8 Bit Controller sondern gleich mit dem aktuellen Stand der Technik in die Programmierung von Mikrocontrollern einsteigen? Dann seid ihr hier genau richtig! Oft wird behauptet 32 Bit Controller seien zu kompliziert für Anfänger und man solle lieber mit den alten kleinen Controllern anfangen zu lernen. Das ist richtigwenn man sich den Controllern von ihrer inneren Architektur her nähern möchteModerne Controller sind wesentlich komplexer als die "guten" alten 8 Bit ArchitekturenAber nur wenige Menschen kaufen sich einen Computer aus dem vorigen Jahrhundert um damit die Grundlagen der PC-Programmierung zu lernen. Im Gegenteilsie kaufen sich eher das absolute Spitzenmodell was es heute am Markt gibt! Sie beginnen nicht mit den unsäglichen Tiefen der Assemblerprogrammierung sondern nutzen sofort aktuelle Programmiersprachen.
-Es ist kein C++ oder ARM-Programmier-Tutorial im engeren Sinne und erhebt daher keinen Anspruch auf Vollständigkeit oder Allgemeingültigkeit in diesen Bereichen. Hier soll sich speziell mit ausgewählten Aspekten für den **einfachen Einstieg in die objektorientierte Programmierung von ARM-Mikrocontrollern** auseinandergesetzt werden. +
- +
-><html><iframe width="640" height="480" src="https://www.youtube.com/embed/Pa4ju8oUXvw" frameborder="0" allowfullscreen></iframe></html> +
- +
-Ausgewählte Bereiche dieses Tutorials sind speziell für Inhaber von einer aktuellen SiSy Lizenz konzipiert. Dem Anwender stehen nach Erwerb des Produktes persönliche Zugangsdaten für diesen Bereich zur Verfügung. Die Daten für die ersten Schritte sind allgemeingültig und im öffentlichen Teil für jeden erreichbar. Im Zusammenwirken mit der kostenlosen [[http://www.sisy.de|SiSy]] DEMO sollten sie für alle Interessierten eine gute Starthilfe und ein Schnupperkurs für mehr Wissen sein. Das Tutorial wird auch weiterentwickelt. Es lohnt sich also immer wieder rein zu schauen.  +
- +
-//Viel Spaß mit diesem kleinen Tutorial!// +
- +
-===== Einleitung ===== +
-==== Unterüberschrift ==== +
- +
- +
-Die Objektorientierung ist ursprünglich angetreten, das Programmieren einfacher zu machen. Praktisch erscheinen jedoch objektorientierte Sprachen für viele eher als Hürde, nicht als  Erleichterung. Das muss aber nicht so sein. Assembler und C sind nicht wirklich einfacher als C++. Bilden Sie sich zu folgenden Codeausschnitten selbst Ihre Meinung. +
- +
- +
- +
- +
- +
- +
- +
- +
-><code c> +
-// "klassische" Schreibweise /////////////////////////////////////// +
-RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIODENABLE); +
-GPIO_InitTypeDef  GPIO_InitStructure; +
-GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; +
-GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; +
-GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; +
-GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; +
-GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; +
-GPIO_Init(GPIOD, &GPIO_InitStructure); +
-GPIO_SetBits(GPIOD,GPIO_Pin_12); +
- +
-</code> +
- +
-><code cpp> +
-// objektorientierte Schreibweise ///////////////////////////////// +
-Led ledGreen; +
-ledGreen.config(GPIOD,12); +
-ledGreen.on(); +
- +
-</code> +
- +
-Ich glaube dieses kleine Beispiel zeigt deutlich, dass eine objektorientierte Vorgehensweise und Programmierung zu wesentlich verständlicherem Quellcode führen kann. Man könnte auch sagen, dass man das Ziel der Objektorientierung erreicht hat, wenn sich der Programmcode wie Klartext lesen lässt. Wir wollen uns von Bedenken und inneren Hürden nicht abhalten lassen objektorientiert zu arbeitenZuerst gilt es, die Voraussetzungen für die Arbeit zu schaffen. +
- +
-> **„Jede neue Sprache ist wie ein offenes Fenster,\\  +
-    das einen neuen Ausblick auf die Welt eröffnet\\  +
-    und die Lebensauffassung weitet.“**\\ <sup>Frank Harris (1856-1931), amerikanischer Schriftsteller</sup> +
- +
-====== Ein paar theoretische Grundlagen ====== +
-Bevor Sie in die praktische Seite des Tutorials abtauchen, sollten Sie (müssen aber nicht) folgende theoretischen  Grundlagen studieren und möglichst verinnerlichen: +
-  * [[Basiskonzepte]] +
-  * [[objektorientierte Programmiersprachen]] +
-  * [[Grafische Programmierung mit der UML]] +
- +
-====== Voraussetzungen zur praktischen Arbeit====== +
-Das Durcharbeiten dieses Tutorials funktioniert am besten mit der geeigneten +
-  * [[Hardware]] und  +
-  * [[Entwicklungsumgebung]] sowie einer kleinen +
-  * [[Einkaufsliste]]. +
- +
-====== Erste Schritte im klassischen C ====== +
-Die Programmierung im klassischen C kann man sich ruhig einmal antun. Um so mehr wird man die Klassen aus dem mySTM32 Framework schätzen lernen. Des Weiteren finden sich im Netz auch jede Menge Beispiele in klassischem C. Die folgenden Abschnitte befähigen Sie, sich diese zugänglich zu machen. +
-Falls Sie lieber gleich objektorientiert in C++ und UML anfangen möchten, dann überspringen Sie diesen Abschnitt einfach.+
  
-  * [[Grundstruktur|Grundstruktur einer einfachen ARM Anwendung]] +==== Es ist absolut möglich auch als unerfahrener Anfänger sich in die aktuelle Welt der Mikrocontroller einzuarbeiten====
-  * [[Hallo C|Hallo ARM C]] +
-  * [[Einfache Ein- und Ausgaben mit dem ARM]] +
-  * [[SystemTickC|Der SystemTick in C]] +
-  * [[ARM Interrupts in C]] +
-  * //[[weiterführende Programmierung des STM32 in C]] <sub>(in Arbeit, SiSy Lizenz ab Version 3.6)</sub>//+
  
-====== Erste Schritte in C++ und der UML ====== 
-So, jetzt schalten wir ein paar Gänge höher. Zum einen arbeiten wir in den nächsten Abschnitten objektorientiert und benutzen als Entwicklungsumgebung keinen herkömmlichen Zeileneditor, sondern das UML-Klassendiagramm. 
  
-  * [[Grafische Programmierung mit der UML|spätestens jetzt in die UML reinschauen]] +Dafür haben wir dieses Tutorial vollständig überarbeitet. Die klassische und oft auch sehr Zeit und Nerven raubende Programmierung in C haben wir jetzt nach hinten gestellt und beginnen mit der grafischen Programmierung. {{ :stm32light:stm32boardlight.png?direct&400|}} Die theoretischen Grundlagen werden //Learning by Doing// während der Übungen vermittelt. Eine Zusammenfassung der Theorie findet sich dann wieder am Ende des Tutorials. Das Tutorial kann prinzipiell mit jedem STM32 Board abgearbeitet werden. Als Referenzhardware werden jedoch zwei speziell für die Ausbildung an Berufsschulen entworfene Boards verwendet. Besonders das [[http://shop.myavr.de/Hardware/mySTM32%20Board%20light.htm?sp=article.sp.php&artID=200180|mySTM32 Board light]] bietet einen extrem preiswerten Einstieg
-  * [[Grundstruktur mit UML|Grundstruktur einer objektorientierten Anwendung]] +
-  * [[Hallo UML|Hallo ARM C++]] +
-  * [[Button und LED|Mit den Klassen Button und LED weiter arbeiten]] +
-  * [[SystemTickUML|Der SystemTick in C++]] <sub>(SiSy Lizenz ab Version 3.6)</sub> +
-  * [[Tempos|Tempos, die Template-Library für den STM32 anwenden ]] <sub>(SiSy Lizenz ab Version 3.6)</sub>+
  
-====== Anwendungsbeispiele ====== +===== Zu den Tutorials ===== 
-  * [[UASRT|Kommunikation mit dem PC]] <sub>(SiSy Lizenz ab Version 3.6)</sub> +  * [[mySTM32 Board light Tutorial]] ... mit weniger als 20€ loslegen 
-  * [[ADC|Analogdaten erfassen]] <sub>(SiSy Lizenz ab Version 3.6)</sub> +  * [[STM32F407 Discovery Tutorial]] ... mit voller Power von Anfang an 
-  * [[MOTION|Den Beschleunigungssensor nutzen]] <sub>(SiSy Lizenz ab Version 3.6)</sub> +  * [[das alte Tutorial]] ... etwas old School aber auch nicht schlecht 
-  * [[SDIO|Daten auf eine SD-Karte speichern]] <sub>(SiSy Lizenz ab Version 3.6)</sub>+  * [[about]] ... wer steckt hinter dem ganzen hier (investigative Aufdeckung der finsteren kommerziellen Interessen hinter diesem Tutorial)
  
-====== Weiterführendes ====== +===== aktueller Hinweis =====
-  * [[ein kleines Projekt]] <sub>(SiSy Lizenz ab Version 3.6)</sub> +
-  * [[mit_dem_zustandsdiangramm_programmieren|mit dem Zustandsdiagramm programmieren]] <sub>(SiSy Lizenz ab Version 3.6)</sub> +
-  * [[http://myugl.de/_wiki/doku.php|das µGL Framework auf dem STM32]] +
-  * //[[das myEthernet Framework mit dem STM32]] <sub>(in Arbeit, SiSy Lizenz ab Version 3.6)</sub>// +
-  * [[Programmierung anderer Controller]]  +
-  * **Das MK3-Grafik-Display am STM32** +
-    * //[[Schnellstart mit dem GLCD am STM32F0]]// +
-    * //[[grafik-display_am_stm32f4|ein kleines Projekt mit Grafik-Display am STM32F4]] <sub>(in Arbeit, SiSy Lizenz ab Version 3.6) </sub>// +
-    * [[http://shop.myavr.de/ARM-Produktlinie/GraficLCD Add-On, Bausatz.htm?sp=article.sp.php&artID=200095|Grafik-Display Bausatz]] <sub>(im myAVR-Shop)</sub> +
-    * [[http://shop.myavr.de/ARM-Produktlinie/GraficLCD Add-On.htm?sp=article.sp.php&artID=200096|Grafik-Display fertig bestückt]] <sub>(im myAVR-Shop)</sub> +
-    * [[http://youtu.be/AGKBTGTnKlo|GLCD+STM32 Anwendungsbeispiel auf Youtube]] +
-  * [[Das STM32F0 Discovery|Das STM32F051 Discovery]] +
-  * [[Das STM32L100 Discovery|Das STM32L152 Discovery]] +
-  * [[Das STM32F100 Discovery]] +
-  * [[Das STM32F3 Discovery|Das STM32F303 Discovery]] +
-  * [[Das STM32F401 Discovery]] +
-  * [[Das STM32F429 Discovery]] +
-  * [[Das STM32F030 Nucleo]] +
-  * [[Das STM32L152 Nucleo]] +
-  * [[Das STM32F103 Nucleo]] +
-  * [[Das STM32F401 Nucleo]]+
  
-  * [[http://shop.myavr.de/?sp=schulungen.sp.php|Seminarangebote]]+**<COUNTDOWN:17.09.2020|zur MESCONF>**[[https://mesconf.de/| The embedded systems modeling conference]] 
 +