with RP2040_SVD.RESETS; use RP2040_SVD.RESETS;
with RP2040_SVD.IO_BANK0; use RP2040_SVD.IO_BANK0;
with RP2040_SVD.PADS_BANK0; use RP2040_SVD.PADS_BANK0;
with RP2040_SVD.SIO; use RP2040_SVD.SIO;
with RP2040_SVD.PPB; use RP2040_SVD.PPB;
with Ada.Real_Time; use Ada.Real_Time;
procedure Main is
Pin_Mask : constant GPIO_OUT_GPIO_OUT_Field := 16#0200_0000#;
Next_Blink : Time := Clock;
begin
RESETS_Periph.RESET.io_bank0 := False;
RESETS_Periph.RESET.pads_bank0 := False;
while not RESETS_Periph.RESET_DONE.io_bank0 or else
not RESETS_Periph.RESET_DONE.pads_bank0 loop
null;
end loop;
-- output disable off
PADS_BANK0_Periph.GPIO25.OD := False;
-- input enable off
PADS_BANK0_Periph.GPIO25.IE := False;
-- function select
IO_BANK0_Periph.GPIO25_CTRL.FUNCSEL := sio_25;
-- output enable
SIO_Periph.GPIO_OE_SET.GPIO_OE_SET := Pin_Mask;
loop
SIO_Periph.GPIO_OUT_XOR.GPIO_OUT_XOR := Pin_Mask;
delay until Next_Blink;
Next_Blink := Next_Blink + Seconds (1);
end loop;
end Main;