11. Arduino for Production!! How to Receive Push Button Input on the ARM Microcontroller Part 2

11. Arduino für die Produktion!! Wie man Push-Button-Eingaben auf dem ARM-Mikrocontroller empfängt Teil 2


Der Schalter wird mit dem Eingangs-Pin verbunden. Wir müssen herausfinden, wie wir die Informationen vom Eingangs-Pin erhalten. Wir müssen wissen, ob an diesem Pin eine 1 oder eine 0 anliegt. Da der Mikrocontroller agieren soll, wenn der Pin auf 1 ist, müssen wir herausfinden, wie das geht. Eine Möglichkeit ist das Abfragen (Polling), wodurch der Pin bei jedem Durchlauf der Schleife getestet wird. Die andere Möglichkeit wäre die Verwendung eines Interrupts. Bei Verwendung eines Interrupts teilt uns der Mikrocontroller automatisch mit, dass ein anderer Teil des Programms gestartet wird.

In diesem Video werden wir die Polling-Methode verwenden. Zuerst rufen wir CoIDE auf. Wir gehen zu „Neues Projekt“. Suchen Sie den STM32F030R8T6 und klicken Sie auf „Neues Projekt“. Wir nennen das Projekt GPIOSimpleInput. Klicken Sie auf „Fertig stellen“ und gehen Sie zur nächsten Seite, um die Boot-Bibliothek hinzuzufügen. Jetzt können wir das Projekt sehen. Nun müssen wir den Code erstellen. Zuerst müssen wir die STM-Datei in die richtige Datei verschieben. Suchen Sie die conf-Datei im Boot-Ordner und kopieren Sie sie in den neuen Ordner, den wir gerade erstellt haben.

Jetzt beginnen wir mit der Erstellung des Pseudocodes. Zuerst werden wir die Bibliothek einbinden. Da wir Skelettcode haben, weiß er nicht, wie der Chip gesteuert wird, also binden wir die Bibliothek dafür ein. Im Hauptabschnitt müssen wir die Steuerregister für den LED-Ausgang einrichten. Wir müssen auch die Steuerregister für den Drucktasteneingang einrichten. Dann fügen wir Code hinzu, um die LED einzuschalten, wenn die Taste gedrückt wird.
In der Schleife werden wir testen, ob die Taste gedrückt wird, also fügen wir Code hinzu, um die LED einzuschalten, wenn die Taste gedrückt wird, und die LED auszuschalten, wenn die Taste nicht gedrückt wird.

Als Nächstes stellen wir die Modusregister für Ausgang, Geschwindigkeit und Pull-up/Pull-down ein. Für den Eingang richten wir ein Modusregister und den Pull-up/Pull-down ein. Wir verwenden das BSRR zum Einschalten der LED und das BRR zum Ausschalten. Das Tastenregister (Eingabedaten) wird IDR sein.

Als Nächstes fügen wir die Reset-Uhr und -Steuerung ein, die den GPIO aktiviert, den wir für Port C Pin 6 und Port B Pin 1 benötigen. Jetzt müssen wir die Bibliothek einbinden, damit sie versteht, worauf wir uns beziehen. Als Nächstes verwenden wir das AHBENR-Hochleistungsbusregister. Dies werden wir auch für Port B tun. Denken Sie daran, dass Pseudocode sehr nützlich ist, da er Anmerkungen erstellt, sodass Sie wissen, was der Code tut.
Wir werden nun zu den Steuerregistern übergehen. Das Modusregister wird unter GPIOC liegen.

Das Datenblatt zeigt, dass wir den Allzweck-Ausgangsmodus benötigen, der eine 01 am 6. Pin ist. Wir setzen die 1 an die 0. Stelle und eine 0 an die 1. Stelle, daher verwenden wir das „and-not“, um die Null an der Stelle sicherzustellen. Als Nächstes setzen wir den Push-Pull am Ausgangstyp-Register und die Hochgeschwindigkeitsregister.

Als Nächstes stellen wir das Pull-up/Pull-down-Register ein. Wir verwenden hier das „and-not“, um sicherzustellen, dass wir beide Nullen haben.
Auf der Eingangsseite verwenden wir nun das GPIOB für Port B. Das Modus-R-Register wird nun verwendet. Wir werden wieder das „and-not“ verwenden. Der Pull-up/Pull-down wird derselbe sein wie für den Ausgang.

Zusammenfassend stellen wir unseren Modus für den LED-Ausgang, den Ausgangstyp als Push-Pull, die Geschwindigkeit als Hochgeschwindigkeit und den Pull-up/Pull-down als „keinen“ ein. Für den Eingang stellen wir den Modus für den Eingang ein und setzen den Pull-up/Pull-down auf „keinen“.

In der Endlosschleife verwenden wir die Polling-Methode. Wir werden sagen: „Wenn die Taste gedrückt wird“, soll etwas geschehen, in diesem Fall die LED eingeschaltet werden. Wir verwenden das „else“ für den Fall, dass die Taste ausgeschaltet ist. Jetzt müssen wir bitweise Arithmetik verwenden. Das IDR-Register hat 16 Bits. Jedes Bit repräsentiert einen einzelnen Pin. Wenn an einem der Pins ein hoher digitaler Pegel anliegt, befindet sich an einer der Bitpositionen eine 1. Wir haben unseren an Port B Pin 1. Wenn wir die Taste drücken und ein hohes Signal an diesen Pin anlegen, befindet sich hier eine 1. Wenn wir keine anderen Schalter an den anderen Bits haben, sind alle anderen 0.

Jetzt müssen wir testen, ob der Pin 1 oder 0 sein wird. Wir werden die bitweise UND-Operation verwenden. Wir beginnen mit dem IDR-Register, das 16 Bit hat. Als Nächstes verwenden wir eine Maske, die das GPIO_IDR_IDR1-Register ist. Da wir dort eine 1 haben, haben wir eine 1 an der 1-Bit-Stelle. Im nicht gedrückten Zustand der Taste wird hier eine 0 stehen, wenn wir die Taste drücken, wird eine 1 stehen. Dies wäre eine falsche Aussage unter Verwendung bitweiser Arithmetik. Durch die Verwendung der Maske machen wir an beiden 1-Bit-Stellen eine 1. Dadurch können wir Code verwenden, um diesen speziellen Pin zu testen und festzustellen, ob der Drucktaster gedrückt ist oder nicht.

Das eigentliche Tastenregister, das auf die Pins 0 oder 1 lauschen wird, ist GPIOB->IDR. Dann fügen wir die Maske GPIO_IDR_1 hinzu. Die Maske hat eine 1 an dieser Stelle. Jetzt verwenden wir das BSRR, um die LED einzuschalten. Wir verwenden die bitweise OR-Operation mit GPIO_BSRR_BS_6. Als Nächstes müssen wir die LED ausschalten, wenn dies eine falsche Aussage ist. Wir verwenden das BSRR und setzen eine 1 an diese Stelle für das Bit-Reset für Nummer 6.

In dieser einfachen Codeimplementierung werden wir keine Entprellung nutzen. Dies ist eine sehr einfache Implementierung der Tastenverwendung. Komplexere Situationen werden wir später betrachten. Nun werden wir den Code testen, um zu sehen, ob er kompiliert wird. Nachdem der Code korrekt kompiliert wurde, schließen wir den Programmer an und programmieren den Mikrocontroller. Zuerst schließen wir den SWDIO an, den zweiten Pin am Programmer. SWCLK ist der erste Pin, der orange ist. Wir sehen Masse und VCC und schließen diese ebenfalls an.

Nachdem der Programmer angeschlossen ist, haben wir den Mikrocontroller programmiert. Wenn wir die Taste drücken, leuchtet die LED auf. Zur Wiederholung: Wir haben die LED für den Ausgang eingerichtet, den Port B Pin 1 für den Eingang, den Drucktastenschalter installiert und Code erstellt, um den Port B Pin 1 von der Software lesen zu lassen. Im nächsten Video werden wir die Entprellung des Drucktasters untersuchen.

[[TUTORIALMENU(tutorial-arm" frameborder="0" allowfullscreen>
Zurück zum Blog

Hinterlasse einen Kommentar