#7016·embassy

[RP235x PIO] Using GPIO32+ require to change `gpiobase`

Author: ConaclosCreated Sep 16, 2026Updated Sep 16, 2026

Hi!

I tried to generate a clock on GPIO35 using PIO:

rust
let p = embassy_rp::init(Config::default());

let embassy_rp::pio::Pio {
    mut common, sm0, ..
} = embassy_rp::pio::Pio::new(pinout.codec_pio, Irqs);

let program = embassy_rp::pio_programs::clk::PioClkProgram::new(&mut common);
let mut clk = embassy_rp::pio_programs::clk::PioClk::new(
    &mut common,
    sm0,
    p.PIN_35,
    &program,
    FREQ, // Hz
);
clk.start();

Unfortunately this doesn't work. Except if I manually change the GPIO base:

rust
embassy_rp::pac::PIO0
    .gpiobase()
    .write(|w| w.set_gpiobase(true));

Is this expected?