soc_rp2040::ctrl
Typed RP2040 peripheral identities and cross-core ownership claims.
Structs
Section titled “Structs”GpioPort
Section titled “GpioPort”struct GpioPort { pub pin: u8,}Implements: Clone, Copy, Debug, Eq, PartialEq, StructuralPartialEq
I2cPort
Section titled “I2cPort”struct I2cPort { pub ctrl: I2cCtrl, pub cfg: hal::bus::I2cConfig,}Implements: Clone, Copy, Debug, Eq, PartialEq, StructuralPartialEq
References: I2cConfig, I2cCtrl
PioLease
Section titled “PioLease”struct PioLease { /* private fields */ }An exclusive PIO block and pin bundle. Claims bits 2/3, beside UART 0/1 and USB 7. No public constructor, Clone or forced release is available.
Implements: Drop
SpiPort
Section titled “SpiPort”struct SpiPort { pub ctrl: SpiCtrl, pub cfg: hal::bus::SpiConfig,}Implements: Clone, Copy, Debug, Eq, PartialEq, StructuralPartialEq
References: SpiConfig, SpiCtrl
UartPort
Section titled “UartPort”struct UartPort { pub ctrl: UartCtrl, pub cfg: hal::bus::UartConfig,}Implements: Clone, Copy, Debug, Eq, PartialEq, StructuralPartialEq
References: UartConfig, UartCtrl
I2cCtrl
Section titled “I2cCtrl”enum I2cCtrl { I2c0, I2c1,}Implements: Clone, Copy, Debug, Eq, PartialEq, StructuralPartialEq
SpiCtrl
Section titled “SpiCtrl”enum SpiCtrl { Spi0, Spi1,}Implements: Clone, Copy, Debug, Eq, PartialEq, StructuralPartialEq
UartCtrl
Section titled “UartCtrl”enum UartCtrl { Uart0, Uart1,}Implements: Clone, Copy, Debug, Eq, PartialEq, StructuralPartialEq
Functions
Section titled “Functions”claim_gpio
Section titled “claim_gpio”fn claim_gpio(pin: u8) -> boolclaim_uart
Section titled “claim_uart”fn claim_uart(ctrl: UartCtrl) -> boolReferences: UartCtrl
claim_usb
Section titled “claim_usb”fn claim_usb() -> boolUSB uses bit 7 of the peripheral ownership word; UARTs occupy bits 0/1.
release_gpio
Section titled “release_gpio”fn release_gpio(pin: u8)release_uart
Section titled “release_uart”fn release_uart(ctrl: UartCtrl)References: UartCtrl
release_usb
Section titled “release_usb”fn release_usb()try_claim_pio
Section titled “try_claim_pio”fn try_claim_pio(block: u8, pins: u32) -> Option<PioLease>Single-attempt acquisition: a busy claim lock is Busy, never an ISR spin.
References: PioLease