std.hardware.gpio_pin

Typsichere Pin-Wrapper. Ein GpioOutputPin kennt nur Write, ein GpioInputPin nur Read — der Compiler weist jeden Versuch ab, einen Eingang zu beschreiben oder einen Ausgang zu lesen. Das ist der Unterschied zwischen einem Fehler beim Übersetzen und einem stillen Fehlverhalten in der Anlage.

Beide Wrapper sind 16 Byte groß und halten den GPIO-Kontext plus die Pin-Nummer. Der Ablauf ist immer derselbe: AllocInit (mit Pull-Modus) → beliebig oft Read/WriteFree. Der zugrunde liegende Kontext aus std.hardware.gpio_mmio muss dabei offen bleiben.

std.hardware.gpio — Übersicht · GPIO-Guide · Standard Library


Schnittstelle

Signatur
GpioOutputPinAlloc(gpio_ctx: int64, pin_nr: int64): int64
GpioOutputPinInit(pin_ctx: int64, pull: int64): int64
GpioOutputPinWrite(pin_ctx: int64, state: int64): int64
GpioOutputPinFree(pin_ctx: int64)
GpioInputPinAlloc(gpio_ctx: int64, pin_nr: int64): int64
GpioInputPinInit(pin_ctx: int64, pull: int64): int64
GpioInputPinRead(pin_ctx: int64): int64
GpioInputPinFree(pin_ctx: int64)
Konstante Wert Bedeutung
GPIO_PIN_CTX_SIZE 16

Beispiel

import std.hardware.gpio_mmio;
import std.hardware.gpio_pin;

fn main(): int64 {
    var ctx := GpioCtxAlloc();
    GpioInit(ctx);

    var led := GpioOutputPinAlloc(ctx, 18);
    GpioOutputPinInit(led, GPIO_PULL_NONE);
    GpioOutputPinWrite(led, GPIO_PIN_HIGH);

    var btn := GpioInputPinAlloc(ctx, 17);
    GpioInputPinInit(btn, GPIO_PULL_UP);
    var gedrueckt: int64 := GpioInputPinRead(btn);

    GpioInputPinFree(btn);
    GpioOutputPinFree(led);
    GpioClose(ctx);
    GpioCtxFree(ctx);
    return 0;
}

Quelle: std/hardware/gpio_pin.lyx · geprüft mit lyxc 1.0.21A · Stand 2026-08-12

Codebeispiele geprüft: gegen lyxc 1.2.5C übersetzt (Prüflauf 2026-09-08 über die gesamte Doku: 574 Vollprogramme, 0 echte Fehler; zusätzlich 5159 Aufrufe gegen die pub fn-Signaturen in aurum/std gehalten, 0 Abweichungen).


Letzte Aktualisierung: 2026-08-30 (Dateistand)