Technische Informatik; Hardwarenahe Programmierung

You are viewing an older revision! See the latest version

InterruptIn

Inhalt

Die mbed Boards verfügen über folgende Interrupt-fähigen Pins:

  • mbed NXP LPC1768: mbed NXP LPC1768: Mit Ausnahme von p19 und p20 kann jeder der nummerierten mbed-Pins als InterruptIn verwendet werden.
  • ST-Nucleo-L432KC: Alle 20 blauen GPIO Pins

Information

Der Simulator verwendet als Taster den Reset-Knopf des LPC1768 Boards, der in der realen Hardware allerdings wirklich einen Rest des Boards auslöst. Deshalb sollten Sie, wenn Sie Programme aus dem Simulator in der Online IDE verwenden, folgende Zeile an den Anfang Ihres Programmes kopieren:

#define BUTTON1 p14  // push joystick pin

Beim NUCLEO-Board NUClight ist es:

#define BUTTON1 A1  // Taster A1

Die InterruptIn-Schnittstelle wird verwendet, um ein Ereignis auszulösen, wenn sich ein digitaler Eingangspin ändert (kopiere das Programm in den mbed-Simulator):

#include "mbed.h"
//#define BUTTON1 p14  // push joystick pin mbed PC1768
//#define BUTTON1 A1   // Taster A1 NUCLEO-L432KC
 
InterruptIn button(BUTTON1);
DigitalOut led(LED1);
DigitalOut heartbeat(LED4); // D2 NUCLEO-L432KC

void toggle() {
    led = !led;
}

int main() {
    button.rise(&toggle);  // call toggle function on the rising edge
    while(1) {             // wait around, interrupts will interrupt this!
        heartbeat = !heartbeat;
        wait(0.25);
    }
}

ACHTUNG

  1. In der ISR (oben flip()) darf keine wait-Funktionen, Endlosschleifen oder blockierende System Calls verwendet werden.
  2. No printf, malloc, or new in ISR
    Keine Bibliotheksfunktionen, die nicht re-entrant sind.

All wikipages