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>​