Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung Nächste ÜberarbeitungBeide Seiten der Revision | ||
grundstruktur [2018/06/04 14:26] – huwaldt | grundstruktur [2019/07/25 12:57] – huwi | ||
---|---|---|---|
Zeile 6: | Zeile 6: | ||
Wählen Sie das ARM Vorgehensmodell aus. Damit sind alle wichtigen Einstellungen für das Projekt und die darin enthaltenen Übungen als Default-Werte gesetzt. Nach Auswahl des Vorgehensmodells öffnet SiSy LibStore und bietet vorhandene Vorlagen für die weitere Arbeit an. | Wählen Sie das ARM Vorgehensmodell aus. Damit sind alle wichtigen Einstellungen für das Projekt und die darin enthaltenen Übungen als Default-Werte gesetzt. Nach Auswahl des Vorgehensmodells öffnet SiSy LibStore und bietet vorhandene Vorlagen für die weitere Arbeit an. | ||
- | >>> | + | > |
Wir brauchen für die ersten Schritte noch keine UML Bibliotheken. Damit können wir die Frage nach den Projektvorlagen mit "keine Vorlage verwenden" | Wir brauchen für die ersten Schritte noch keine UML Bibliotheken. Damit können wir die Frage nach den Projektvorlagen mit "keine Vorlage verwenden" | ||
Zeile 14: | Zeile 14: | ||
Legen Sie Ihr erstes //kleines Programm// an, indem Sie das entsprechende Objekt aus der Objektbibliothek per //Drag & Drop// in das Diagrammfenster ziehen. Geben Sie dem Programm den Namen // | Legen Sie Ihr erstes //kleines Programm// an, indem Sie das entsprechende Objekt aus der Objektbibliothek per //Drag & Drop// in das Diagrammfenster ziehen. Geben Sie dem Programm den Namen // | ||
- | >>> | + | > |
Im nächsten Schritt wird die Hardware ausgewählt. Wir benutzen das Entwicklerboard // | Im nächsten Schritt wird die Hardware ausgewählt. Wir benutzen das Entwicklerboard // | ||
- | >>>>> | + | > |
Bevor wir uns dem Stress aussetzen und fast 40 Zeilen Programmcode abtippen, benutzen wir lieber eines der Features von SiSy, die Programmgerüste. Selektieren Sie das Grundgerüst für ein ARM C++ Programm und laden die Struktur über die Schaltfläche //Struktur laden// | Bevor wir uns dem Stress aussetzen und fast 40 Zeilen Programmcode abtippen, benutzen wir lieber eines der Features von SiSy, die Programmgerüste. Selektieren Sie das Grundgerüst für ein ARM C++ Programm und laden die Struktur über die Schaltfläche //Struktur laden// | ||
- | >>>>> | + | > |
Das nächste Dialogfeld mit Code-Wizzard überspringen wir und wählen die Schaltfläche //Fertig stellen//. | Das nächste Dialogfeld mit Code-Wizzard überspringen wir und wählen die Schaltfläche //Fertig stellen//. | ||
Zeile 29: | Zeile 29: | ||
Zur Sicherheit können die vorgenommenen Einstellungen kontrolliert und ggf. geändert werden. Markieren Sie dafür im Diagrammfenster das Objekt //kleines Progemm// und wählen aus dem Kontextmenü (rechte Maustaste) // | Zur Sicherheit können die vorgenommenen Einstellungen kontrolliert und ggf. geändert werden. Markieren Sie dafür im Diagrammfenster das Objekt //kleines Progemm// und wählen aus dem Kontextmenü (rechte Maustaste) // | ||
- | >>>>>>> | + | |
+ | > {{: | ||
====== Grundstruktur einer einfachen ARM Anwendung ====== | ====== Grundstruktur einer einfachen ARM Anwendung ====== | ||
Schauen wir uns den geladenen Quellcode etwas genauer an. Dieser lässt sich in mehrere Bereiche unterteilen. Zum einen ist da der Programmkopf mit Dokumentation und Deklarationen. Hier werden unter anderem die Deklarationen, | Schauen wir uns den geladenen Quellcode etwas genauer an. Dieser lässt sich in mehrere Bereiche unterteilen. Zum einen ist da der Programmkopf mit Dokumentation und Deklarationen. Hier werden unter anderem die Deklarationen, | ||
- | >>>< | + | >< |
// | // | ||
// Titel : Grundgerüst einer einfachen ARM C Anwendung in SiSy | // Titel : Grundgerüst einer einfachen ARM C Anwendung in SiSy | ||
Zeile 55: | Zeile 56: | ||
Die Dokumentation sollte immer gewissenhaft ausgefüllt werden. Vor allem die Beschreibungen von Funktion und Hardware sind sehr wichtig. Das richtige Programm zur falschen Schaltung oder umgekehrt kann verheerende Folgen haben. Es folgt der Definitionsteil. Hier finden sich globale Variablen oder eben Unterprogramme, | Die Dokumentation sollte immer gewissenhaft ausgefüllt werden. Vor allem die Beschreibungen von Funktion und Hardware sind sehr wichtig. Das richtige Programm zur falschen Schaltung oder umgekehrt kann verheerende Folgen haben. Es folgt der Definitionsteil. Hier finden sich globale Variablen oder eben Unterprogramme, | ||
- | >>>< | + | >< |
void initApplication() | void initApplication() | ||
{ | { | ||
Zeile 65: | Zeile 66: | ||
Als vorgegebenen Funktionsaufruf finden wir dort die Initialisierung des SysTick-Timers. Dieser liefert uns schon mal ein regelmäßiges Timerereignis. In den Übungen werden wir dies recht schnell benötigen. An dieser Stelle können noch weitere Funktionen eingefügt werden. Es folgt jetzt das Hauptprogramm. Dies ist durch das Schlüsselwort //main// gekennzeichnet. Auch hier sehen wir wieder die Begrenzung des Funktionskörpers durch die geschweiften Klammern. Innerhalb des Hauptprogramms findet sich zuerst die Initialisierungssequenz. Dabei sollte als erstes die Funktion // | Als vorgegebenen Funktionsaufruf finden wir dort die Initialisierung des SysTick-Timers. Dieser liefert uns schon mal ein regelmäßiges Timerereignis. In den Übungen werden wir dies recht schnell benötigen. An dieser Stelle können noch weitere Funktionen eingefügt werden. Es folgt jetzt das Hauptprogramm. Dies ist durch das Schlüsselwort //main// gekennzeichnet. Auch hier sehen wir wieder die Begrenzung des Funktionskörpers durch die geschweiften Klammern. Innerhalb des Hauptprogramms findet sich zuerst die Initialisierungssequenz. Dabei sollte als erstes die Funktion // | ||
- | >>>< | + | >< |
int main(void) | int main(void) | ||
{ | { | ||
Zeile 81: | Zeile 82: | ||
Zum Schluss folgen die Interrupt Service Routinen und Ereignishandler. Da diese nicht explizit zum Beispiel aus der //main// aufgerufen werden sondern in der Regel an für unser Anwendungsprogramm quasi externe Hardwareereignisse gebunden sind und automatisch auslösen können, stehen sie hinter dem Hauptprogramm als Letztes . | Zum Schluss folgen die Interrupt Service Routinen und Ereignishandler. Da diese nicht explizit zum Beispiel aus der //main// aufgerufen werden sondern in der Regel an für unser Anwendungsprogramm quasi externe Hardwareereignisse gebunden sind und automatisch auslösen können, stehen sie hinter dem Hauptprogramm als Letztes . | ||
- | >>>< | + | >< |
extern " | extern " | ||
{ | { | ||
Zeile 92: | Zeile 93: | ||
> | > | ||
- | >> | + | > |
Während der Übertragung kann man die Status-LED des integrierten ST-LINK flackern sehen. Nach der Übertragung leuchtet diese in der Regel grün für den Status RUN. Der ARM " | Während der Übertragung kann man die Status-LED des integrierten ST-LINK flackern sehen. Nach der Übertragung leuchtet diese in der Regel grün für den Status RUN. Der ARM " | ||
- | >>>> | + | > |
====== Videozusammenfassung ====== | ====== Videozusammenfassung ====== | ||
Zeile 102: | Zeile 103: | ||
Und hier diesen Abschnitt als Videozusammenfassung zum nochmal drüberschauen. | Und hier diesen Abschnitt als Videozusammenfassung zum nochmal drüberschauen. | ||
- | >>>< | + | >< |
====== Nächstes Thema ====== | ====== Nächstes Thema ====== | ||
* [[Hallo C|Hallo ARM C]] | * [[Hallo C|Hallo ARM C]] | ||