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: Alloc → Init (mit Pull-Modus) → beliebig oft Read/Write → Free. 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)
