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
light_grundstruktur_mit_uml [2020/01/09 19:16] huwilight_grundstruktur_mit_uml [2020/06/04 17:06] – [Weiter mit:] huwi
Zeile 1: Zeile 1:
 +{{tag>Vorlage Grundgerüst PEC Klassendiagramm Projekt_anlegen}}
 ====== UML Grundstruktur für das mySMT32 Board light ====== ====== UML Grundstruktur für das mySMT32 Board light ======
-Wie bereits angekündigt werden wir in diesem Tutorial von Anfang an grafisch programmieren. Dafür verwenden wir als Entwicklungswerkzeug das UML-Klassendiagramm und Klassenbibliotheken für den STM32.  +Wie bereits angekündigt werden wir in diesem Tutorial von Anfang an grafisch programmieren. Dafür verwenden wir als Entwicklungswerkzeug das UML-Klassendiagramm und Klassenbibliotheken für den STM32. Wir werden im Folgenden diese Arbeitsschritte gemeinsam ausführen: 
-  - Starten Sie SiSy +  - SiSy starten,  
-  - Legen Sie ein neues SiSy-Projekt an und wählen Sie das ARM-Vorgehensmodell. +  - Ein neues SiSy-Projekt ananlegen und das ARM-Vorgehensmodell auswählen, 
-  - Laden Sie aus dem LibStore eine Projektvorlage mit den PEC Bibliotheken +  - Aus dem LibStore eine Projektvorlage mit den PEC Bibliotheken laden,  
-  - Legen Sie ein Klassendiagramm an. +  - Ein Klassendiagramm erstellen, 
-  - Öffnen Sie das Klassendiagramm und laden die Duiagrammvorlage für PEC-Anwendungen. +  - Das Klassendiagramm öffnen und die Diagrammvorlage für PEC-Anwendungen laden, 
-  - Weisen Sie das Treiberpaket für den STM32F0 zu.+  - Das Treiberpaket für den STM32F0 zuweisen. 
 + 
 +Starten Sie SiSy und wählen Sie die Schaltfläche **"neues Projekt erstellen"** und das Projektprofil "ARM-Vorgehensmodell".
  
 {{uml:umlprojekt01.PNG?direct&500|}} {{uml:umlprojekt02.PNG?direct&500|}} {{uml:umlprojekt01.PNG?direct&500|}} {{uml:umlprojekt02.PNG?direct&500|}}
Zeile 30: Zeile 33:
 {{:umlnachunten.png?direct&480|}} {{:stm32light:treiberpaketstmf0.jpg?direct&520|}} {{:umlnachunten.png?direct&480|}} {{:stm32light:treiberpaketstmf0.jpg?direct&520|}}
  
 +Standardmäßig läuft der STM32F042 mit stromsparenden 8MHz. Das reicht für die Übungen die wir machen vorerst absolut aus. Um den Controller mit voller Leistung (48MHz) zu betreiben, können Sie zusätzlich noch den Bibliotheksbaustein //"stm32F042_48MHz"// hinzufügen. Diesen finden Sie über die Suchfunktion im Explorer. 
 +
 +{{:stm32light:full48mhz.png?direct&1000|}}
  
 ====== Grundstruktur einer objektorientierten Anwendung ====== ====== Grundstruktur einer objektorientierten Anwendung ======
-Sie erhalten das nachfolgende Diagramm. Dabei handelt es sich um die typische Grundstruktur einer objektorientierten Anwendung auf der Basis des //SiSy ARM C++ Framework//. Standardmäßig läuft der STM32F042 mit stromsparenden 8MHz. Das reicht für die Übungen die wir machen vorerst absolut aus. Um den Controller mit voller Leistung (48MHz) zu betreiben können Sie zusätzlich noch den Bibliotheksbaustein //"stm32F042_48MHz"// hinzufügen. Diesen finden Sie über die Suchfunktion im Explorer+Sie erhalten das nachfolgende Diagramm. Dabei handelt es sich um die typische Grundstruktur einer objektorientierten Anwendung auf der Basis des //SiSy ARM C++ Framework//
  
 {{:stm32light:stml001.png?direct&800|}} {{:stm32light:stml001.png?direct&800|}}
Zeile 56: Zeile 62:
 Der **Controller** //ist ein// **PecAppKernel**. Es handelt sich um die sogenannte Anwendungsklasse. Diese nimmt die Rolle der gesamten Anwendung ein und muss als erstes ausgeführt werden.  Der **Controller** //ist ein// **PecAppKernel**. Es handelt sich um die sogenannte Anwendungsklasse. Diese nimmt die Rolle der gesamten Anwendung ein und muss als erstes ausgeführt werden. 
  
-{{:stm32light:appcontroller.png?direct&500|}}+{{:stm32light:appcontroller.png?direct&600|}}
  
 Der Baustein **app:Controller** ist die Instanz der Anwendungsklasse. Falls Sie noch kein C++ oder eine andere Objektorientierte Programmiersprache kennen nur so viel: Instanzen sind vergleichbar mit den Variablen in klassischen Programmiersprachen. Nur dass Instanzen von Klassen nicht nur Daten sondern auch Funktionen enthalten. Der Baustein **app:Controller** ist die Instanz der Anwendungsklasse. Falls Sie noch kein C++ oder eine andere Objektorientierte Programmiersprache kennen nur so viel: Instanzen sind vergleichbar mit den Variablen in klassischen Programmiersprachen. Nur dass Instanzen von Klassen nicht nur Daten sondern auch Funktionen enthalten.
  
-Über die Referenz des Paketes **PecFramework** werden alle benötigten Klassen aus der Bibliothek importiert. Das ist letztlich das selbe wie das **#include** oder **#using** auf Quellcodeebene.+{{:stm32light:pakete.png?direct&400|}} 
 + 
 +Über die Referenz der Pakete **Pec** und **MCU_STM32F0** werden alle benötigten Klassen aus der Bibliothek importiert. Das ist letztlich das selbe wie das **#include** oder **#using** auf Quellcodeebene.
  
 **PecAppKernel** stellt bereits eine Reihe von nützlichen Struktur- und Verhaltensmerkmalen einer ARM-Anwendung bereit. Zwei Operationen sind in der Klasse //Controller// zur Realisierung vorbereitet. Die Operation //onStart// dient der Initialisierung nach dem Systemstart, bildet also die Initalisierungssequenz. Die Operation //onWork// wird durch das Framework zyklisch aufgerufen. Damit nimmt diese die Position der Mainloop ein. Beachten Sie, dass die //Mainloop// jetzt selbst im Framework vor unsern Augen verborgen läuft und nicht mehr von uns geschrieben werden muss. Zur Verdeutlichung und zur Gewöhnung hier das grundsätzliche Verhalten der Anwendung als UML-Sequenzdiagramm. **PecAppKernel** stellt bereits eine Reihe von nützlichen Struktur- und Verhaltensmerkmalen einer ARM-Anwendung bereit. Zwei Operationen sind in der Klasse //Controller// zur Realisierung vorbereitet. Die Operation //onStart// dient der Initialisierung nach dem Systemstart, bildet also die Initalisierungssequenz. Die Operation //onWork// wird durch das Framework zyklisch aufgerufen. Damit nimmt diese die Position der Mainloop ein. Beachten Sie, dass die //Mainloop// jetzt selbst im Framework vor unsern Augen verborgen läuft und nicht mehr von uns geschrieben werden muss. Zur Verdeutlichung und zur Gewöhnung hier das grundsätzliche Verhalten der Anwendung als UML-Sequenzdiagramm.
Zeile 91: Zeile 99:
  
 ====== Videozusammenfassung ====== ====== Videozusammenfassung ======
 +{{tag>Video}}
 Damit haben wir auch schon unsere erste objektorientierte ARM-Anwendung erstellt und auf den Controller übertragen. Als Zusammenfassung dieses kurzen Abschnittes das Ganze nochmal als Video. Damit haben wir auch schon unsere erste objektorientierte ARM-Anwendung erstellt und auf den Controller übertragen. Als Zusammenfassung dieses kurzen Abschnittes das Ganze nochmal als Video.
  
 <html><iframe width="888" height="500" src="https://www.youtube.com/embed/4BuD5ziKMqM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></html> <html><iframe width="888" height="500" src="https://www.youtube.com/embed/4BuD5ziKMqM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></html>
  
 +[[https://youtu.be/qjmiR5f33ls|oder die schnelle Version ohne Sprachkommentare]]
 ====== Weiter mit: ====== ====== Weiter mit: ======
   * [[light Hallo UML|Hallo mySTM32 light (Blinky)]]   * [[light Hallo UML|Hallo mySTM32 light (Blinky)]]
   * [[mystm32_board_light_tutorial|zurück zur Übersicht]]   * [[mystm32_board_light_tutorial|zurück zur Übersicht]]
 +
 +====== Suchbegriffe ======