Expand description
A Hardware Abstraction Layer for the Raspberry Pi Pico.
This crate serves as a HAL (Hardware Abstraction Layer) for the Raspberry Pi Pico. Since the Raspberry Pi Pico is based on the RP2040 chip, it re-exports the rp2040_hal crate which contains the tooling to work with the rp2040 chip.
§Examples:
The following example turns on the onboard LED. Note that most of the logic works through the rp2040_hal crate.
ⓘ
#![no_main]
use rp_pico::entry;
use panic_halt as _;
use embedded_hal::digital::v2::OutputPin;
use rp_pico::hal::pac;
use rp_pico::hal;
#[entry]
fn does_not_have_to_be_main() -> ! {
let mut pac = pac::Peripherals::take().unwrap();
let sio = hal::Sio::new(pac.SIO);
let pins = rp_pico::Pins::new(
pac.IO_BANK0,
pac.PADS_BANK0,
sio.gpio_bank0,
&mut pac.RESETS,
);
let mut led_pin = pins.led.into_push_pull_output();
led_pin.set_high().unwrap();
loop {
}
}
Re-exports§
pub extern crate rp2040_hal as hal;
pub use hal::pac;
Structs§
Constants§
Statics§
- BOOT2_
FIRMWARE - The linker will place this boot block at the start of our program image. We need this to help the ROM bootloader get our code up and running.
Type Aliases§
- Gp0I2
C0Sda - I2C Function alias for pin crate::Pins::gpio0.
Alias for a configured
Pin
- Gp0Pio0
- PIO0 Function alias for pin crate::Pins::gpio0.
Alias for a configured
Pin
- Gp0Pio1
- PIO1 Function alias for pin crate::Pins::gpio0.
Alias for a configured
Pin
- Gp0Pwm0A
- PWM Function alias for pin crate::Pins::gpio0.
Alias for a configured
Pin
- Gp0Spi0
Rx - SPI Function alias for pin crate::Pins::gpio0.
Alias for a configured
Pin
- Gp0Uart0
Tx - UART Function alias for pin crate::Pins::gpio0.
Alias for a configured
Pin
- Gp1I2
C0Scl - I2C Function alias for pin crate::Pins::gpio1.
Alias for a configured
Pin
- Gp1Pio0
- PIO0 Function alias for pin crate::Pins::gpio1.
Alias for a configured
Pin
- Gp1Pio1
- PIO1 Function alias for pin crate::Pins::gpio1.
Alias for a configured
Pin
- Gp1Pwm0B
- PWM Function alias for pin crate::Pins::gpio1.
Alias for a configured
Pin
- Gp1Spi0
Csn - SPI Function alias for pin crate::Pins::gpio1.
Alias for a configured
Pin
- Gp1Uart0
Rx - UART Function alias for pin crate::Pins::gpio1.
Alias for a configured
Pin
- Gp2I2
C1Sda - I2C Function alias for pin crate::Pins::gpio2.
Alias for a configured
Pin
- Gp2Pio0
- PIO0 Function alias for pin crate::Pins::gpio2.
Alias for a configured
Pin
- Gp2Pio1
- PIO1 Function alias for pin crate::Pins::gpio2.
Alias for a configured
Pin
- Gp2Pwm1A
- PWM Function alias for pin crate::Pins::gpio2.
Alias for a configured
Pin
- Gp2Spi0
Sck - SPI Function alias for pin crate::Pins::gpio2.
Alias for a configured
Pin
- Gp2Uart0
Cts - UART Function alias for pin crate::Pins::gpio2.
Alias for a configured
Pin
- Gp3I2
C1Scl - I2C Function alias for pin crate::Pins::gpio3.
Alias for a configured
Pin
- Gp3Pio0
- PIO0 Function alias for pin crate::Pins::gpio3.
Alias for a configured
Pin
- Gp3Pio1
- PIO1 Function alias for pin crate::Pins::gpio3.
Alias for a configured
Pin
- Gp3Pwm1B
- PWM Function alias for pin crate::Pins::gpio3.
Alias for a configured
Pin
- Gp3Spi0
Tx - SPI Function alias for pin crate::Pins::gpio3.
Alias for a configured
Pin
- Gp3Uart0
Rts - UART Function alias for pin crate::Pins::gpio3.
Alias for a configured
Pin
- Gp4I2
C0Sda - I2C Function alias for pin crate::Pins::gpio4.
Alias for a configured
Pin
- Gp4Pio0
- PIO0 Function alias for pin crate::Pins::gpio4.
Alias for a configured
Pin
- Gp4Pio1
- PIO1 Function alias for pin crate::Pins::gpio4.
Alias for a configured
Pin
- Gp4Pwm2A
- PWM Function alias for pin crate::Pins::gpio4.
Alias for a configured
Pin
- Gp4Spi0
Rx - SPI Function alias for pin crate::Pins::gpio4.
Alias for a configured
Pin
- Gp4Uart1
Tx - UART Function alias for pin crate::Pins::gpio4.
Alias for a configured
Pin
- Gp5I2
C0Scl - I2C Function alias for pin crate::Pins::gpio5.
Alias for a configured
Pin
- Gp5Pio0
- PIO0 Function alias for pin crate::Pins::gpio5.
Alias for a configured
Pin
- Gp5Pio1
- PIO1 Function alias for pin crate::Pins::gpio5.
Alias for a configured
Pin
- Gp5Pwm2B
- PWM Function alias for pin crate::Pins::gpio5.
Alias for a configured
Pin
- Gp5Spi0
Csn - SPI Function alias for pin crate::Pins::gpio5.
Alias for a configured
Pin
- Gp5Uart1
Rx - UART Function alias for pin crate::Pins::gpio5.
Alias for a configured
Pin
- Gp6I2
C1Sda - I2C Function alias for pin crate::Pins::gpio6.
Alias for a configured
Pin
- Gp6Pio0
- PIO0 Function alias for pin crate::Pins::gpio6.
Alias for a configured
Pin
- Gp6Pio1
- PIO1 Function alias for pin crate::Pins::gpio6.
Alias for a configured
Pin
- Gp6Pwm3A
- PWM Function alias for pin crate::Pins::gpio6.
Alias for a configured
Pin
- Gp6Spi0
Sck - SPI Function alias for pin crate::Pins::gpio6.
Alias for a configured
Pin
- Gp6Uart1
Cts - UART Function alias for pin crate::Pins::gpio6.
Alias for a configured
Pin
- Gp7I2
C1Scl - I2C Function alias for pin crate::Pins::gpio7.
Alias for a configured
Pin
- Gp7Pio0
- PIO0 Function alias for pin crate::Pins::gpio7.
Alias for a configured
Pin
- Gp7Pio1
- PIO1 Function alias for pin crate::Pins::gpio7.
Alias for a configured
Pin
- Gp7Pwm3B
- PWM Function alias for pin crate::Pins::gpio7.
Alias for a configured
Pin
- Gp7Spi0
Tx - SPI Function alias for pin crate::Pins::gpio7.
Alias for a configured
Pin
- Gp7Uart1
Rts - UART Function alias for pin crate::Pins::gpio7.
Alias for a configured
Pin
- Gp8I2
C0Sda - I2C Function alias for pin crate::Pins::gpio8.
Alias for a configured
Pin
- Gp8Pio0
- PIO0 Function alias for pin crate::Pins::gpio8.
Alias for a configured
Pin
- Gp8Pio1
- PIO1 Function alias for pin crate::Pins::gpio8.
Alias for a configured
Pin
- Gp8Pwm4A
- PWM Function alias for pin crate::Pins::gpio8.
Alias for a configured
Pin
- Gp8Spi1
Rx - SPI Function alias for pin crate::Pins::gpio8.
Alias for a configured
Pin
- Gp8Uart1
Tx - UART Function alias for pin crate::Pins::gpio8.
Alias for a configured
Pin
- Gp9I2
C0Scl - I2C Function alias for pin crate::Pins::gpio9.
Alias for a configured
Pin
- Gp9Pio0
- PIO0 Function alias for pin crate::Pins::gpio9.
Alias for a configured
Pin
- Gp9Pio1
- PIO1 Function alias for pin crate::Pins::gpio9.
Alias for a configured
Pin
- Gp9Pwm4B
- PWM Function alias for pin crate::Pins::gpio9.
Alias for a configured
Pin
- Gp9Spi1
Csn - SPI Function alias for pin crate::Pins::gpio9.
Alias for a configured
Pin
- Gp9Uart1
Rx - UART Function alias for pin crate::Pins::gpio9.
Alias for a configured
Pin
- Gp10
I2C1 Sda - I2C Function alias for pin crate::Pins::gpio10.
Alias for a configured
Pin
- Gp10
Pio0 - PIO0 Function alias for pin crate::Pins::gpio10.
Alias for a configured
Pin
- Gp10
Pio1 - PIO1 Function alias for pin crate::Pins::gpio10.
Alias for a configured
Pin
- Gp10
Pwm5A - PWM Function alias for pin crate::Pins::gpio10.
Alias for a configured
Pin
- Gp10
Spi1 Sck - SPI Function alias for pin crate::Pins::gpio10.
Alias for a configured
Pin
- Gp10
Uart1 Cts - UART Function alias for pin crate::Pins::gpio10.
Alias for a configured
Pin
- Gp11
I2C1 Scl - I2C Function alias for pin crate::Pins::gpio11.
Alias for a configured
Pin
- Gp11
Pio0 - PIO0 Function alias for pin crate::Pins::gpio11.
Alias for a configured
Pin
- Gp11
Pio1 - PIO1 Function alias for pin crate::Pins::gpio11.
Alias for a configured
Pin
- Gp11
Pwm5B - PWM Function alias for pin crate::Pins::gpio11.
Alias for a configured
Pin
- Gp11
Spi1 Tx - SPI Function alias for pin crate::Pins::gpio11.
Alias for a configured
Pin
- Gp11
Uart1 Rts - UART Function alias for pin crate::Pins::gpio11.
Alias for a configured
Pin
- Gp12
I2C0 Sda - I2C Function alias for pin crate::Pins::gpio12.
Alias for a configured
Pin
- Gp12
Pio0 - PIO0 Function alias for pin crate::Pins::gpio12.
Alias for a configured
Pin
- Gp12
Pio1 - PIO1 Function alias for pin crate::Pins::gpio12.
Alias for a configured
Pin
- Gp12
Pwm6A - PWM Function alias for pin crate::Pins::gpio12.
Alias for a configured
Pin
- Gp12
Spi1 Rx - SPI Function alias for pin crate::Pins::gpio12.
Alias for a configured
Pin
- Gp12
Uart0 Tx - UART Function alias for pin crate::Pins::gpio12.
Alias for a configured
Pin
- Gp13
I2C0 Scl - I2C Function alias for pin crate::Pins::gpio13.
Alias for a configured
Pin
- Gp13
Pio0 - PIO0 Function alias for pin crate::Pins::gpio13.
Alias for a configured
Pin
- Gp13
Pio1 - PIO1 Function alias for pin crate::Pins::gpio13.
Alias for a configured
Pin
- Gp13
Pwm6B - PWM Function alias for pin crate::Pins::gpio13.
Alias for a configured
Pin
- Gp13
Spi1 Csn - SPI Function alias for pin crate::Pins::gpio13.
Alias for a configured
Pin
- Gp13
Uart0 Rx - UART Function alias for pin crate::Pins::gpio13.
Alias for a configured
Pin
- Gp14
I2C1 Sda - I2C Function alias for pin crate::Pins::gpio14.
Alias for a configured
Pin
- Gp14
Pio0 - PIO0 Function alias for pin crate::Pins::gpio14.
Alias for a configured
Pin
- Gp14
Pio1 - PIO1 Function alias for pin crate::Pins::gpio14.
Alias for a configured
Pin
- Gp14
Pwm7A - PWM Function alias for pin crate::Pins::gpio14.
Alias for a configured
Pin
- Gp14
Spi1 Sck - SPI Function alias for pin crate::Pins::gpio14.
Alias for a configured
Pin
- Gp14
Uart0 Cts - UART Function alias for pin crate::Pins::gpio14.
Alias for a configured
Pin
- Gp15
I2C1 Scl - I2C Function alias for pin crate::Pins::gpio15.
Alias for a configured
Pin
- Gp15
Pio0 - PIO0 Function alias for pin crate::Pins::gpio15.
Alias for a configured
Pin
- Gp15
Pio1 - PIO1 Function alias for pin crate::Pins::gpio15.
Alias for a configured
Pin
- Gp15
Pwm7B - PWM Function alias for pin crate::Pins::gpio15.
Alias for a configured
Pin
- Gp15
Spi1 Tx - SPI Function alias for pin crate::Pins::gpio15.
Alias for a configured
Pin
- Gp15
Uart0 Rts - UART Function alias for pin crate::Pins::gpio15.
Alias for a configured
Pin
- Gp16
I2C0 Sda - I2C Function alias for pin crate::Pins::gpio16.
Alias for a configured
Pin
- Gp16
Pio0 - PIO0 Function alias for pin crate::Pins::gpio16.
Alias for a configured
Pin
- Gp16
Pio1 - PIO1 Function alias for pin crate::Pins::gpio16.
Alias for a configured
Pin
- Gp16
Pwm0A - PWM Function alias for pin crate::Pins::gpio16.
Alias for a configured
Pin
- Gp16
Spi0 Rx - SPI Function alias for pin crate::Pins::gpio16.
Alias for a configured
Pin
- Gp16
Uart0 Tx - UART Function alias for pin crate::Pins::gpio16.
Alias for a configured
Pin
- Gp17
I2C0 Scl - I2C Function alias for pin crate::Pins::gpio17.
Alias for a configured
Pin
- Gp17
Pio0 - PIO0 Function alias for pin crate::Pins::gpio17.
Alias for a configured
Pin
- Gp17
Pio1 - PIO1 Function alias for pin crate::Pins::gpio17.
Alias for a configured
Pin
- Gp17
Pwm0B - PWM Function alias for pin crate::Pins::gpio17.
Alias for a configured
Pin
- Gp17
Spi0 Csn - SPI Function alias for pin crate::Pins::gpio17.
Alias for a configured
Pin
- Gp17
Uart0 Rx - UART Function alias for pin crate::Pins::gpio17.
Alias for a configured
Pin
- Gp18
I2C1 Sda - I2C Function alias for pin crate::Pins::gpio18.
Alias for a configured
Pin
- Gp18
Pio0 - PIO0 Function alias for pin crate::Pins::gpio18.
Alias for a configured
Pin
- Gp18
Pio1 - PIO1 Function alias for pin crate::Pins::gpio18.
Alias for a configured
Pin
- Gp18
Pwm1A - PWM Function alias for pin crate::Pins::gpio18.
Alias for a configured
Pin
- Gp18
Spi0 Sck - SPI Function alias for pin crate::Pins::gpio18.
Alias for a configured
Pin
- Gp18
Uart0 Cts - UART Function alias for pin crate::Pins::gpio18.
Alias for a configured
Pin
- Gp19
I2C1 Scl - I2C Function alias for pin crate::Pins::gpio19.
Alias for a configured
Pin
- Gp19
Pio0 - PIO0 Function alias for pin crate::Pins::gpio19.
Alias for a configured
Pin
- Gp19
Pio1 - PIO1 Function alias for pin crate::Pins::gpio19.
Alias for a configured
Pin
- Gp19
Pwm1B - PWM Function alias for pin crate::Pins::gpio19.
Alias for a configured
Pin
- Gp19
Spi0 Tx - SPI Function alias for pin crate::Pins::gpio19.
Alias for a configured
Pin
- Gp19
Uart0 Rts - UART Function alias for pin crate::Pins::gpio19.
Alias for a configured
Pin
- Gp20
I2C0 Sda - I2C Function alias for pin crate::Pins::gpio20.
Alias for a configured
Pin
- Gp20
Pio0 - PIO0 Function alias for pin crate::Pins::gpio20.
Alias for a configured
Pin
- Gp20
Pio1 - PIO1 Function alias for pin crate::Pins::gpio20.
Alias for a configured
Pin
- Gp20
Pwm2A - PWM Function alias for pin crate::Pins::gpio20.
Alias for a configured
Pin
- Gp20
Spi0 Rx - SPI Function alias for pin crate::Pins::gpio20.
Alias for a configured
Pin
- Gp20
Uart1 Tx - UART Function alias for pin crate::Pins::gpio20.
Alias for a configured
Pin
- Gp21
I2C0 Scl - I2C Function alias for pin crate::Pins::gpio21.
Alias for a configured
Pin
- Gp21
Pio0 - PIO0 Function alias for pin crate::Pins::gpio21.
Alias for a configured
Pin
- Gp21
Pio1 - PIO1 Function alias for pin crate::Pins::gpio21.
Alias for a configured
Pin
- Gp21
Pwm2B - PWM Function alias for pin crate::Pins::gpio21.
Alias for a configured
Pin
- Gp21
Spi0 Csn - SPI Function alias for pin crate::Pins::gpio21.
Alias for a configured
Pin
- Gp21
Uart1 Rx - UART Function alias for pin crate::Pins::gpio21.
Alias for a configured
Pin
- Gp22
I2C1 Sda - I2C Function alias for pin crate::Pins::gpio22.
Alias for a configured
Pin
- Gp22
Pio0 - PIO0 Function alias for pin crate::Pins::gpio22.
Alias for a configured
Pin
- Gp22
Pio1 - PIO1 Function alias for pin crate::Pins::gpio22.
Alias for a configured
Pin
- Gp22
Pwm3A - PWM Function alias for pin crate::Pins::gpio22.
Alias for a configured
Pin
- Gp22
Spi0 Sck - SPI Function alias for pin crate::Pins::gpio22.
Alias for a configured
Pin
- Gp22
Uart1 Cts - UART Function alias for pin crate::Pins::gpio22.
Alias for a configured
Pin
- Gp26
I2C1 Sda - I2C Function alias for pin crate::Pins::gpio26.
Alias for a configured
Pin
- Gp26
Pio0 - PIO0 Function alias for pin crate::Pins::gpio26.
Alias for a configured
Pin
- Gp26
Pio1 - PIO1 Function alias for pin crate::Pins::gpio26.
Alias for a configured
Pin
- Gp26
Pwm5A - PWM Function alias for pin crate::Pins::gpio26.
Alias for a configured
Pin
- Gp26
Spi1 Sck - SPI Function alias for pin crate::Pins::gpio26.
Alias for a configured
Pin
- Gp26
Uart1 Cts - UART Function alias for pin crate::Pins::gpio26.
Alias for a configured
Pin
- Gp27
I2C1 Scl - I2C Function alias for pin crate::Pins::gpio27.
Alias for a configured
Pin
- Gp27
Pio0 - PIO0 Function alias for pin crate::Pins::gpio27.
Alias for a configured
Pin
- Gp27
Pio1 - PIO1 Function alias for pin crate::Pins::gpio27.
Alias for a configured
Pin
- Gp27
Pwm5B - PWM Function alias for pin crate::Pins::gpio27.
Alias for a configured
Pin
- Gp27
Spi1 Tx - SPI Function alias for pin crate::Pins::gpio27.
Alias for a configured
Pin
- Gp27
Uart1 Rts - UART Function alias for pin crate::Pins::gpio27.
Alias for a configured
Pin
- Gp28
I2C0 Sda - I2C Function alias for pin crate::Pins::gpio28.
Alias for a configured
Pin
- Gp28
Pio0 - PIO0 Function alias for pin crate::Pins::gpio28.
Alias for a configured
Pin
- Gp28
Pio1 - PIO1 Function alias for pin crate::Pins::gpio28.
Alias for a configured
Pin
- Gp28
Pwm6A - PWM Function alias for pin crate::Pins::gpio28.
Alias for a configured
Pin
- Gp28
Spi1 Rx - SPI Function alias for pin crate::Pins::gpio28.
Alias for a configured
Pin
- Gp28
Uart0 Tx - UART Function alias for pin crate::Pins::gpio28.
Alias for a configured
Pin
Attribute Macros§
- entry
- The
entry
macro declares the starting function to the linker. This is similar to themain
function in console applications.