- Hardware-Setup und -Anforderung
- N76E003 LED- und Druckknopf-Schnittstellenschaltung
- Pin-Out-Diagramm N76E003
- Einfaches GPIO-Steuerungsprogramm für N76E003
- N76E003 programmieren und Ausgabe überprüfen
In unserem vorherigen Tutorial haben wir ein grundlegendes LED- Blinkprogramm verwendet, um mit der N76E003- Anleitung zu beginnen. Wir haben bereits gelernt, wie die Keil-IDE konfiguriert und die Umgebung für die Programmierung der Nuvoton-Mikrocontroller- Einheit N76E003 eingerichtet wird. Es ist an der Zeit, etwas weiter zu gehen und die grundlegende GPIO-Schnittstelle zur Steuerung zusätzlicher Hardware zu verwenden. Wenn Sie interessiert sind, können Sie auch andere GPIO-Tutorials für Mikrocontroller lesen, die unten aufgeführt sind:
- STM32 Nucleo64 mit CubeMx und TrueSTUDIO - LED-Steuerung
- STM8S mit Cosmic C GPIO Control
- PIC mit MPLABX LED Blink Tutorial
- MSP430 mit Code Composer Studio - Einfache LED-Steuerung
Da wir in unserem vorherigen Tutorial nur eine LED zum Blinken verwendet haben, haben wir einen E / A-Pin als Ausgang verwendet. In diesem Tutorial erfahren Sie, wie Sie einen anderen E / A-Pin als Eingang verwenden und eine zusätzliche LED steuern. Lassen Sie uns ohne viel Zeitverschwendung bewerten, welche Art von Hardware-Setup wir benötigen.
Hardware-Setup und -Anforderung
Da ein Schalter als Eingang verwendet werden muss, benötigen wir zunächst einen Druckknopf. Wir benötigen außerdem eine zusätzliche LED, die über diesen Druckknopf gesteuert werden kann. Abgesehen von diesen beiden benötigen wir auch einen Widerstand zur Begrenzung des LED-Stroms und einen zusätzlichen Widerstand für Pulldown-Zwecke über den Druckknopf. Dies wird im schematischen Abschnitt weiter demonstriert. Die Komponenten, die wir benötigen -
- Ein Druckknopf (jede Art von Momentschalter speziell - Taktiler Schalter)
- Beliebige Farbe der LED
- 4,7k Widerstand für Pulldown-Zwecke
- 100R Widerstand
Abgesehen von den oben genannten Komponenten benötigen wir ein auf einem Mikrocontroller basierendes Entwicklungsboard N76E003 sowie den Nu-Link-Programmierer. Zusätzlich sind Steckbrett- und Anschlusskabel erforderlich, um alle Komponenten wie unten gezeigt anzuschließen.
N76E003 LED- und Druckknopf-Schnittstellenschaltung
Wie wir im folgenden Schema sehen können, ist die Test-LED auf der Entwicklungsplatine an Port 1.4 und eine zusätzliche LED an Port 1.5 angeschlossen. Der Widerstand R3 dient zur Begrenzung des LED-Stroms.
In Pin 1.6 ist ein Druckknopf mit dem Namen SW angeschlossen. Immer wenn die Taste gedrückt wird, wird der Stift hoch. Andernfalls wird es durch den 4,7K- Pulldown-Widerstand R1 niedrig. Sie können mehr über Pull-up- und Pull-down-Widerstände erfahren, wenn Sie mit diesem Konzept noch nicht vertraut sind.
Der Pin ist auch ein programmbezogener Pin, auf den der Programmierer zugreift. Es wird zum Senden von Programmdaten verwendet. Wir werden jedoch den Grund für die Auswahl dieser Pins sehen und faire Informationen über die Pin-Zuordnung von N76E003 erhalten.
Pin-Out-Diagramm N76E003
Das Pin-Diagramm des N76E003 ist im folgenden Bild zu sehen.
Wie wir sehen können, hat jeder Pin mehrere Funktionen und kann für verschiedene Zwecke verwendet werden. Nehmen wir ein Beispiel. Der Pin 1.7 kann als Interrupt- oder Analogeingang oder als Allzweck-Eingangs- / Ausgangsbetrieb verwendet werden. Wenn also ein Pin als E / A-Pins verwendet wird, ist die entsprechende Funktionalität nicht verfügbar.
Aufgrund dessen verliert der Pin 1.5, der als LED-Ausgangspin verwendet wird, die PWM und andere Funktionen. Dies ist jedoch kein Problem, da für dieses Projekt keine weitere Funktionalität erforderlich ist. Der Grund für die Wahl von Pin 1.5 als Ausgang und Pin 1.6 als Eingang liegt in der nächstgelegenen Verfügbarkeit von GND- und VDD-Pins für eine einfache Verbindung.
In diesem Mikrocontroller mit 20 Pins können jedoch 18 Pins als GPIO-Pin verwendet werden. Der Pin 2.0 wird speziell für den Reset-Eingang verwendet und kann nicht als Ausgang verwendet werden. Mit Ausnahme dieses Pins können alle Pins im unten beschriebenen Modus konfiguriert werden.
Gemäß dem Datenblatt sind PxM1.n und PxM2.n zwei Register, die zum Bestimmen der Steueroperation des E / A-Ports verwendet werden. Das Schreiben und Lesen eines GPIO-Ports ist jetzt eine ganz andere Sache. Da das Schreiben in ein Portsteuerregister den Verriegelungsstatus des Ports ändert, erhält das Lesen des Ports den Status des Logikstatus. Zum Lesen eines Ports muss dieser jedoch in einen Eingabemodus versetzt werden.
Einfaches GPIO-Steuerungsprogramm für N76E003
Das vollständige Programm, das in diesem Tutorial verwendet wird, finden Sie am Ende dieser Seite. Die Erklärung des Codes lautet wie folgt.
Pin als Eingang einstellen
Beginnen wir zuerst mit der Eingabe. Wie bereits erwähnt, muss ein Port als Eingabe festgelegt werden, um den Status zu lesen. Da wir P1.6 als Eingangsschalter-Pin ausgewählt haben, haben wir es daher durch die folgende Zeile des Code-Snippets gekennzeichnet.
# SW P16 definieren
Der gleiche Pin muss als Eingang gesetzt werden. Daher wird bei der Setup-Funktion der Pin über die folgende Zeile als Eingang gesetzt.
void setup (void) {P14_Quasi_Mode; P15_Quasi_Mode; P16_Input_Mode; }}
Diese Zeile P16_Input_Mode; wird in der Header-Datei Function_define.h in der „BSP-Include-Bibliothek“ definiert, die das Pin-Bit auf P1M1- = SET_BIT6 setzt. P1M2 & = ~ SET_BIT6 . Das SET_BIT6 ist auch in derselben Header-Datei definiert wie
#define SET_BIT6 0x40
Einstellen der Pins als Ausgang
Wie der Eingangspin wird auch der Ausgangspin, der von der integrierten Test-LED und der externen LED1 verwendet wird, im ersten Abschnitt des Codes mit den entsprechenden PINs definiert.
#define Test_LED P14 #define LED1 P15
Diese Pins werden in der Setup-Funktion mit den folgenden Zeilen als Ausgang gesetzt.
void setup (void) { P14_Quasi_Mode; // Ausgabe P15_Quasi_Mode; // Ausgabe P16_Input_Mode; }}
Diese Zeilen werden auch in der Header-Datei Function_define.h definiert, in der das Pin-Bit als P1M1 & = ~ SET_BIT4; P1M2 & = ~ SET_BIT4 . Das SET_BIT6 ist auch in derselben Header-Datei definiert wie
#define SET_BIT4 0x10
Endlos-While-Schleife
Eine Hardware, die an die Stromversorgung angeschlossen ist und einwandfrei funktioniert und kontinuierlich eine Ausgabe liefern soll, stoppt die Anwendung nie. Es macht das Gleiche für unendliche Zeiten. Hier kommt die Funktion einer Endlosschleife. Die Anwendung innerhalb der while-Schleife läuft unendlich.
während (1) { Test_LED = 0; sw_delay (150); Test_LED = 1; sw_delay (150); if (SW == 1) {LED1 = 0; } else {LED1 = 1; }}}
Die obige while-Schleife blinkt die LED gemäß dem Wert sw_delay und überprüft auch den Status der SW. Wenn der Schalter gedrückt wird, ist P1.6 hoch, und wenn er gedrückt wird, ist der Lesestatus 1. In dieser Situation wird für die Zeit der Schalter gedrückt und der Port P1.6 bleibt hoch LED1 leuchtet.
N76E003 programmieren und Ausgabe überprüfen
In unseren ersten Schritten mit dem N76E003- Tutorial haben wir bereits gelernt, wie man den N76E003 programmiert. Daher wiederholen wir hier die gleichen Schritte, um unser Board zu programmieren. Der Code wurde erfolgreich kompiliert und gab 0 Warnungen und 0 Fehler zurück und wurde mit der Standard-Flash-Methode von Keil geflasht.
Wie Sie im obigen Bild sehen können, leuchtet unsere externe LED auf, wenn ich den Druckknopf drücke. Die vollständige Arbeitsweise des Projekts finden Sie im unten verlinkten Video. Ich hoffe, Ihnen hat das Tutorial gefallen und Sie haben etwas Nützliches gelernt, wenn Sie Fragen haben. Lassen Sie diese im Kommentarbereich unten. Sie können auch unsere Foren nutzen, um andere technische Fragen zu stellen.