Dies ist eine alte Version des Dokuments!
aktueller Hinweis
1607 Tage 10:47 seit zum ESE-Kongress (02.12.2019)
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. 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.
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 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
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.
// "klassische" Schreibweise /////////////////////////////////////// RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); 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);
// objektorientierte Schreibweise ///////////////////////////////// Led ledGreen; ledGreen.config(GPIOD,12); ledGreen.on();
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 arbeiten. Zuerst 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.“
Frank Harris (1856-1931), amerikanischer Schriftsteller
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:
Voraussetzungen zur praktischen Arbeit
Das Durcharbeiten dieses Tutorials funktioniert am besten mit der geeigneten
- Hardware und
- Entwicklungsumgebung sowie einer kleinen
Zu den Tutorials
Weiterführendes
- mit dem Zustandsdiagramm programmieren (SiSy Lizenz ab Version 3.6)
- Tempos, die Template-Library für den STM32 anwenden (SiSy Lizenz ab Version 3.6)
- das myEthernet Framework mit dem STM32 (in Arbeit, SiSy Lizenz ab Version 3.6)