Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

schnellstart_mit_dem_glcd_am_stm32f0 [2017/04/05 14:10]
huwaldt
schnellstart_mit_dem_glcd_am_stm32f0 [2019/02/04 14:10]
Zeile 1: Zeile 1:
-====== Schnellstart mit dem GLCD am STM32F0 ====== 
-Das [[http://shop.myavr.de/ARM-Produktlinie/GraficLCD%20Add-On.htm?sp=article.sp.php&artID=200096|MK3-Grafikdisplay]] von myAVR ist als Erweiterung des [[http://shop.myavr.de/ARM-Produktlinie/STM32F0-Discovery.htm?sp=article.sp.php&artID=200080|STM32F0 Discovery]] sehr gut geeignet. Mit dem von myAVR ebenfalls angebotenen [[http://shop.myavr.de/ARM-Produktlinie/mySTM32%20F0%20Discovery%20PLUS.htm?sp=article.sp.php&artID=200099|Zusatzboard STM32F0D]] ist das Display sofort arbeitsbereit. 
  
-{{:graficlcd-addon_g.png?240|}}{{:discovery-f0-plus_g.png?300|}} 
- 
-====== Vorbereitungen ======= 
-Starten Sie SiSy. Legen Sie ein neues SiSy-Projekt mit dem Vorgehensmodell ARM und ARM Framework sowie ein Klassendiagramm mit der Zielsprache //ARM C++// an. Beachten Sie die Einstellungen für die Zielplattform STM32F0-Discovery. Laden Sie aus dem SiSy-Libstore bitte die Diagrammvorlage für ein //ARM C++ Grundgerüst ohne Framework//. 
- 
->{{:neuesklasendiagramm.jpg?280|}}{{:umlprojekt6nu.jpg?200|}}{{:umlprojekt7gg.jpg?200|}} 
- 
-====== Die Bibliothek aus dem LibStore ====== 
-Die aktuellen Treiber für das Grafikdisplay holen wir uns ebenfalls aus dem SiSy-LibStore. Dazu ziehen wir aus der Objektbibliothek das Element LibStore. Daraufhin öffnet sich der SiSy-LibStore-Dialog. Als Suchbegriff geben wir //GLCD// ein. 
- 
->>>{{:glcdlibstoresuchen.jpg?600|}} 
- 
-Wählen Sie die angebotene Komponente aus und importieren Sie diese in das Diagramm. Beachten Sie, das Sie den Baustein für das STM32F0 importieren. 
- 
-====== Die Klasse GraficLcd ====== 
-Die Klasse //GraficLcd// besteht aus einer Reihe von Attributen, unter anderem vom Typ //DigitalOut//, welche die einzelnen Steuer- und Datenleitungen abstrahieren. Diese sind öffentlich, damit das Display vom Anwender konfiguriert werden kann. Die für uns wichtigsten Operationen, um später das Spiel zu realisieren, können wir auch schon erkennen. 
-  * init() 
-  * light() 
-  * clear() 
-  * setPos() 
-  * write() 
-  * circle() 
-  * line() 
-  * rect() 
-  * ... 
- 
->>{{:glcdf0.png?700|}} 
- 
-Um das Display zu verwenden, muss eine Referenz der Klasse //GraficDisplay// in das Klassendiagramm der Anwendung gezogen werden. Diese ist mit einer Aggregation an die Applikations-Klasse anzubinden. Benutzen Sie als Rollenbezeichner den namen //**+lcd**//. 
- 
->>>{{:f0glcdapp.png?350|}} 
- 
-====== Initialisierung des Displays ====== 
-Für die Initialisierung des Displays wählen wir die Operation //onStart// der Klasse //Application// aus. Zuerst sind die einzelnen Steuer- und Datenleitungen zu konfigurieren. Danach kann der eigentliche Displaycontroller initialisiert werden. Vergleichen Sie dazu die Pinbelegung des GLCD-Add-On und des STM32F0 Discovery. 
- 
->>>**Application::main()** 
->>><code cpp> 
-/// <sequence show="hide" text="init LCD"> 
-lcd.linePs.config ( GPIOB,BIT15); 
-lcd.lineC86.config( GPIOB,BIT14); 
-lcd.lineLight.config( GPIOB,BIT13); 
-lcd.lineE.config( GPIOB,BIT12); 
-lcd.lineRw.config( GPIOB,BIT11); 
-lcd.lineRs.config( GPIOB,BIT10); 
-lcd.lineRes.config( GPIOB,BIT9);  
-lcd.lineCs.config( GPIOB,BIT8);  
-lcd.dataPort.config( GPIOB,0x00FF); 
-lcd.init(); 
-lcd.clear(); 
-lcd.light(); 
-/// </sequence> 
-this->run(); 
-</code> 
- 
-Zu guter Letzt schließen wir die Initialisierung mit einem //clear// des Displayinhaltes (falls noch "Schrott" vom letzten Versuch zu sehen ist) und dem Einschalten der Hintergrundbeleuchtung ab. 
- 
-====== Texte ausgeben ====== 
-Die Ausgabe von Texten erfolgt an einer beliebigen grafischen Position. Dazu benutzen wir die Operation //setPos//. Der Cursor wird bei der Ausgabe des Textes mit der Operation //write// automatisch weiter gestellt. Deshalb setzt jede weitere Ausgabe an jeweils der letzten Cursorposition an. 
- 
->>><code cpp> 
-lcd.setPos(45, 20);     // Cursor positionieren 
-lcd.write("GLCD am ");  // Textausgabe 
-lcd.write("STM32F0!");  // den Text fortsetzen 
-</code> 
- 
- 
-====== Grafische Primitive ====== 
-Grafische Primitive sind Punkt, Linie, Rechteck und Kreis. Diese werden mit den gewünschten Koordinaten, einer möglichen Füllung und dem Pixel-Modus (SET,CLR,XOR) parametrisiert. 
- 
->>><code c> 
-lcd.rect(20,10,40,20); 
-lcd.circle(30,30,10,true); 
-lcd.line(10,10,50,50,LCD_MODE_XOR); 
-</code> 
- 
-====== Test ====== 
-Erstellen Sie die Anwendung und übertragen Sie diese in den Programmspeicher des Controllers. Testen Sie das Programm! 
- 
->>>{{:f0bsp.jpg?300|}} 
- 
-**Viel Spaß beim Spielen und beim Weiterentwickeln!** 
- 
- 
-====== Videozusammenfassung ====== 
->>><html><iframe width="560" height="315" src="https://www.youtube.com/embed/O0BbYasrjcc" frameborder="0" allowfullscreen></iframe></html>