- Auswählen und Herunterladen der erforderlichen Entwicklungsplattformen für Nucleo64-Boards
- Schaltplan und Hardware-Setup
- Erste Schritte mit STM32CubeMX für STM32 Nucleo64 Development Boards
- Programmierung des STM32 Nucleo64 Development Board mit TrueSTUDIO
- STM32 Nucleo64 Programm zur Steuerung der LED per Druckknopf
- Debuggen und Hochladen von Code auf STM32 Necleo64 Development Board mit TrueSTUDIO
Viele von uns sollten mit den beliebten Mikrocontrollern und Entwicklungsplatinen wie Arduino, Raspberry Pi, ESP8266, NoduMCU, 8051 usw. vertraut sein. Tatsächlich wäre Arduino für die meisten Menschen ihre erste Entwicklungsplatine gewesen, aber wenn wir tief graben und anfangen Bei professionellen Designs werden wir bald die Grenzen von Arduino (wie Kosten, Vielseitigkeit, Stabilität, Geschwindigkeit usw.) erkennen und die Notwendigkeit verstehen, auf eine nativere Mikrocontroller-Plattform wie PIC, STM, Renesas usw. umzusteigen.
Wir haben bereits eine Reihe von PIC-Mikrocontroller-Tutorials behandelt, die Anfänger beim Erlernen von PIC-Mikrocontrollern unterstützen. In ähnlicher Weise werden wir ab diesem Artikel auch eine Folge von STM32 Nucleo64 Development Board-Tutorials planen, die absoluten Anfängern helfen können, mithilfe der STM32-Plattform zu lernen und sich weiterzuentwickeln. Nucleo64 Development Boards sind kostengünstige und benutzerfreundliche Plattformen für professionelle Entwickler sowie für Bastler. Wenn Sie mit den STM32 Nucleo64-Entwicklungsplatinen noch nicht vertraut sind, lesen Sie dieses Nucleo64 Review-Video, um die Grundlagen dieser Platine zu verstehen, bevor Sie fortfahren. Das Video zeigt auch, wie STM32 mit der ARM Mbed Platform programmiert wird Für dieses Tutorial verwenden wir jedoch eine andere kostenlose Plattform von ST Microelectronics namens TrueSTUDIO.
Hinweis: Es gibt viele Versionen von STM32 Nucleo64-Entwicklungskarten. Die in diesem Lernprogramm verwendete Karte ist NUCLEO-F030R8. Wir haben dieses Board hauptsächlich wegen seiner geringen Kosten ausgewählt. Selbst wenn Sie eine andere Version haben, reichen die meisten im Tutorial beschriebenen Dinge aus, um loszulegen.
Auswählen und Herunterladen der erforderlichen Entwicklungsplattformen für Nucleo64-Boards
Für den Einstieg in einen Mikrocontroller ist eine Programmier-IDE erforderlich, z. B. Arduino IDE für Arduino-Karten, Atmel Studio für AVR-Mikrocontroller, MP Lab für PIC usw. Hier benötigen wir also auch eine IDE für unsere STM32 Nucleo64-Karten, um die Programmierung und das Debuggen durchzuführen. Die STM32-Familie besteht aus 32-Bit-Mikrocontrollern, die die folgenden IDEs und Toolchains unterstützen:
- IAR Embedded Workbench® für ARM® (EWARM).
- MDK-ARM Keil
- TrueSTUDIO
- System Workbench für STM32
Hier für unsere Tutorials wird TrueSTUDIO zum Schreiben, Kompilieren und Debuggen von Code verwendet, da es auch für kommerzielle Projekte ohne Lizenzanforderungen kostenlos heruntergeladen und verwendet werden kann. Anschließend werden mit STM32CubeMX Peripherietreiber für STM32-Karten generiert, um die Programmierung zu vereinfachen. Um unser Programm (Hex-Datei) in unser Entwicklungsboard hochzuladen, verwenden die Benutzer normalerweise das STM32 ST-LINK-Dienstprogramm. Stattdessen verwenden wir TrueSTUDIO selbst, um dies zu tun. TrueSTUDIO verfügt über einen Debug-Modus, mit dem Programmierer die Hex-Datei direkt auf die STM32-Karte hochladen können. Sowohl TrueSTUIO als auch STM32CubeMX können einfach heruntergeladen werden. Folgen Sie einfach dem unten stehenden Link, melden Sie sich an und laden Sie das Setup herunter. Installieren Sie sie dann auf Ihrem Laptop.
- Laden Sie STM32Cube MX herunter
- Laden Sie TrueSTUDIO herunter
Schaltplan und Hardware-Setup
Bevor wir mit dem Softwareabschnitt und der Codierung fortfahren, bereiten wir unser Board auf dieses Projekt vor. Wie bereits in diesem Artikel erwähnt, steuern wir eine LED mit einem Druckknopf. Wenn Sie das oben verlinkte Video gesehen haben, sollten Sie bereits wissen, dass Ihr STM32 Development Board auf beiden Seiten zwei Sätze von Anschlussstiften hat, die als ST Morpho-Stifte bezeichnet werden. Wir haben einen Druckknopf und eine LED an diese Pins angeschlossen, wie im folgenden Schaltplan gezeigt.
Schaltungsverbindungen sind für dieses Projekt einfach. Wir müssen eine LED an PA5 von PORTA und einen Schalter an PC13 von PORTC in Bezug auf GND anschließen. Sobald die Verbindungen hergestellt waren, sah mein Testaufbau so aus.
Alternativ können wir auch die eingebaute LED und den Druckknopf auf der Platine verwenden. Diese eingebauten LEDs und Drucktasten werden ebenfalls an demselben Pin angeschlossen, wie im Schaltplan gezeigt. Wir haben externe Komponenten nur zum Üben hinzugefügt. Das folgende Pin-Diagramm der STM32-Entwicklungsplatine ist hilfreich, um zu erfahren, wo die einzelnen Morpho-Pins an Bord angeschlossen sind.
Erste Schritte mit STM32CubeMX für STM32 Nucleo64 Development Boards
Schritt 1: Starten Sie nach der Installation STM32CubeMX und wählen Sie dann die Auswahl der Zugriffskarte aus, um die STM32-Karte auszuwählen.
Schritt 2: Suchen Sie nun das Board nach Ihrem STM32-Board-Namen wie NUCLEO-F030R8 und klicken Sie auf das im Bild gezeigte Board. Wenn Sie ein anderes Board haben, suchen Sie nach dem jeweiligen Namen. Die Software unterstützt alle STM32-Entwicklungskarten von ST Microelectronics.
Schritt 3: Klicken Sie nun wie in der Abbildung unten gezeigt auf Ja, um alle Peripheriegeräte in ihrem Standardmodus zu initialisieren. Wir können die erforderlichen später nach Bedarf für unser Projekt ändern.
Nachdem Sie auf "Ja" geklickt haben, ähnelt der Bildschirm dem folgenden Bild und dem grünen Farbstift, um anzuzeigen, dass sie standardmäßig initiiert sind.
Schritt 4: Jetzt können Benutzer die gewünschte Einstellung aus den Kategorien auswählen. Hier in diesem Tutorial werden wir eine LED mit einem Druckknopf umschalten. Wir müssen also den LED-Pin als Ausgang und den Switch-Pin als INPUT festlegen.
Sie können einen beliebigen Pin auswählen, aber ich wähle PA5 aus und ändere seinen Status in GPIO_Output, damit er als Ausgangs-Pin fungiert (siehe Abbildung unten).
Ebenso wähle ich PC13 als GPIO_Input aus, damit ich den Status meines Druckknopfs lesen kann.
Alternativ können Sie auch Pins über die Registerkarte Pinbelegung und Konfiguration konfigurieren (siehe unten).
Schritt 5: Im nächsten Schritt kann der Benutzer die gewünschte Frequenz für den Mikrocontroller und die Pins entsprechend dem externen und internen Oszillator einstellen. Standardmäßig ist ein interner 8-MHz-Quarzoszillator ausgewählt, und bei Verwendung von PLL wird dieser 8 in 48 MHz konvertiert. Dies bedeutet, dass STM32-Karte oder Mikrocontroller und Pins standardmäßig mit 48 MHz arbeiten.
Schritt 6: Gehen Sie nun in den Projektmanager und geben Sie Ihrem Projekt einen Namen, Projektstandort und wählen Sie Toolchain oder IDE. Hier verwenden wir TrueSTUDIO, daher habe ich dasselbe wie unten gezeigt ausgewählt.
Schritt 7: Klicken Sie nun auf die Markierung Code generieren durch den roten Kreis im folgenden Bild.
Schritt 8: Jetzt sehen Sie ein Popup wie angegeben und klicken dann auf Projekt öffnen. Stellen Sie jedoch sicher, dass Sie TrueSTUDIO vor diesem Schritt installiert haben.
Programmierung des STM32 Nucleo64 Development Board mit TrueSTUDIO
Jetzt wird Ihr Code oder Projekt automatisch in TrueSTUDIO geöffnet, wenn TrueSTUDIO nach dem Speicherort des Arbeitsbereichs fragt. Geben Sie dann einen Speicherort für den Arbeitsbereich an oder verwenden Sie den Standardspeicherort.
Der Benutzer sieht den unten angegebenen Bildschirm und muss dann auf die rote Markierung in der Ecke klicken.
Und jetzt können wir Code in unserer TreuSTUDIO IDE sehen. Auf der linken Seite unter dem Ordner 'src' sehen wir andere Programmdateien (mit der Erweiterung.c), die bereits aus STM32Cube für uns generiert wurden. Wir müssen nur die Datei main.c programmieren. Selbst in der Datei main.c haben wir bereits einige Dinge, die vom CubeMX für uns eingerichtet wurden. Wir müssen sie nur bearbeiten, um sie an unser Programm anzupassen. Der vollständige Code in der Datei main.c befindet sich am Ende dieser Seite.
STM32 Nucleo64 Programm zur Steuerung der LED per Druckknopf
Da alle erforderlichen Treiber und Codes von STM32CubeMX generiert werden, müssen wir nur einen LED-Pin als Ausgang und einen Druckknopf als Eingang konfigurieren. Das Programm zur Steuerung der LED mit dem Druckknopf sollte in die Datei main.c geschrieben werden. Das vollständige Programm finden Sie unten auf dieser Seite. Die Erklärung dafür ist wie folgt
Wir haben nur Code zum Umschalten der LED mit dem Druckknopf geschrieben. Um dies zu erreichen, definieren wir zunächst Pins für LED und Drucktasten. Hier haben wir eine LED an Pin 5 Nummer von PORTA definiert
#define LED_PORT GPIOA #define LED_PIN GPIO_PIN_5
Und definieren Sie den Schalter an Pin Nummer 13 von PORTC.
#define SW_PORT GPIOC #define SW_PIN GPIO_PIN_13
Dann haben wir in der Hauptfunktion alle verwendeten Peripheriegeräte initialisiert.
/ * Alle konfigurierten Peripheriegeräte initialisieren * / MX_GPIO_Init (); MX_USART2_Init ();
Lesen Sie dann den Druckknopf mit der if-Anweisung, und wenn der gefundene Knopfdruck (LOW) gedrückt wird, schaltet die LED ihren Status um.
While (1) {/ * USER CODE END WHILE * / If (! HAL_GPIO_ReadPin (SW_PORT, SW_PIN)) {HAL_GPIO_TogglePin (SW_PORT, LED_PIN); HAL_Delay (200); } / * USER CODE BEGIN 3 * /}
Hier hat die Funktion HAL_GPIO_ReadPin (SW_PORT, SW_PIN) zwei Argumente, eines ist PORT und das andere ist ein Pin, an dem der Switch angeschlossen ist, und dieser Pin wird beim Konfigurieren des Peripheriegeräts in STM32CubeMX als INPUT konfiguriert.
Debuggen und Hochladen von Code auf STM32 Necleo64 Development Board mit TrueSTUDIO
Verbinden Sie nun Ihr Board mit dem Programmierkabel mit dem Computer. Sobald Sie eine Verbindung hergestellt haben, sollte der für die Karte erforderliche Treiber automatisch heruntergeladen werden. Sie können dies mit dem Geräte-Manager überprüfen.
Drücken Sie dann auf das Debug-Symbol, das im folgenden Bild durch den roten Kreis gekennzeichnet ist, um das Programm zu kompilieren und in den Debug-Modus zu wechseln.
Im Debug-Modus wird der Code automatisch hochgeladen. Jetzt müssen wir den Code ausführen, indem wir 'Resume' oder F8 drücken (im roten Bild im folgenden Bild markiert).
Jetzt können wir die Steuerung der LED durch Drücken des Druckknopfs testen. Gemäß dem Code sollte die LED ihren Status jedes Mal ändern, wenn Sie den Druckknopf drücken. Die vollständige Arbeit finden Sie auch in dem Video, das am Ende dieser Seite verlinkt ist.
Nach dem Testen können wir das Programm auch beenden, indem wir auf das Beendigungssymbol klicken, das im folgenden Bild durch den roten Kreis gekennzeichnet ist.