stm32-ada/source/stm32-f4-pwr.ads

130 lines
2.9 KiB
Ada

package STM32.F4.PWR is
Pragma Pure;
type PVD_Level is (
PVD_2_0_V,
PVD_2_1_V,
PVD_2_3_V,
PVD_2_5_V,
PVD_2_6_V,
PVD_2_7_V,
PVD_2_8_V,
PVD_2_9_V
) with Size => 3;
for PVD_Level use (
PVD_2_0_V => 2#000#,
PVD_2_1_V => 2#001#,
PVD_2_3_V => 2#010#,
PVD_2_5_V => 2#011#,
PVD_2_6_V => 2#100#,
PVD_2_7_V => 2#101#,
PVD_2_8_V => 2#110#,
PVD_2_9_V => 2#111#
);
type Voltage_Scaling is (
Scale_3,
Scale_2,
Scale_1
) with Size => 2;
for Voltage_Scaling use (
Scale_3 => 2#00#,
Scale_2 => 2#01#,
Scale_1 => 2#10#
);
type Underdrive_Mode is (
Underdrive_Off,
Underdrive_On
) with Size => 2;
for Underdrive_Mode use (
Underdrive_Off => 2#00#,
Underdrive_On => 2#11#
);
type Power_Control_Register is record
LPDS : Boolean;
PDDS : Boolean;
CWUF : Boolean;
CSBF : Boolean;
PVDE : Boolean;
PLS : PVD_Level;
DBP : Boolean;
FPDS : Boolean;
LPUDS : Boolean;
MRUDS : Boolean;
Reserved_12: Integer range 0 .. 1;
ADCDC1 : Boolean;
VOS : Voltage_Scaling;
ODEN : Boolean;
ODSWEN : Boolean;
UDEN : Underdrive_Mode;
Reserved_20 : Integer range 0 .. 2**12 - 1;
end record with Size => 32;
for Power_Control_Register use record
LPDS at 0 range 0 .. 0;
PDDS at 0 range 1 .. 1;
CWUF at 0 range 2 .. 2;
CSBF at 0 range 3 .. 3;
PVDE at 0 range 4 .. 4;
PLS at 0 range 5 .. 7;
DBP at 0 range 8 .. 8;
FPDS at 0 range 9 .. 9;
LPUDS at 0 range 10 .. 10;
MRUDS at 0 range 11 .. 11;
Reserved_12 at 0 range 12 .. 12;
ADCDC1 at 0 range 13 .. 13;
VOS at 0 range 14 .. 15;
ODEN at 0 range 16 .. 16;
ODSWEN at 0 range 17 .. 17;
UDEN at 0 range 18 .. 19;
Reserved_20 at 0 range 20 .. 31;
end record;
type Power_Control_Status_Register is record
WUF : Boolean;
SBF : Boolean;
PVDO : Boolean;
BRR : Boolean;
Reserved_4 : Integer range 0 .. 2**4 - 1;
EWUP : Boolean;
BRE : Boolean;
Reserved_10 : Integer range 0 .. 2**4 - 1;
VOSRDY : Boolean;
Reserved_15 : Integer range 0 .. 1;
ODRDY : Boolean;
ODSWRDY : Boolean;
UDRDY : Underdrive_Mode;
Reserved_20 : Integer range 0 .. 2**12 - 1;
end record with Size => 32;
for Power_Control_Status_Register use record
WUF at 0 range 0 .. 0;
SBF at 0 range 1 .. 1;
PVDO at 0 range 2 .. 2;
BRR at 0 range 3 .. 3;
Reserved_4 at 0 range 4 .. 7;
EWUP at 0 range 8 .. 8;
BRE at 0 range 9 .. 9;
Reserved_10 at 0 range 10 .. 13;
VOSRDY at 0 range 14 .. 14;
Reserved_15 at 0 range 15 .. 15;
ODRDY at 0 range 16 .. 16;
ODSWRDY at 0 range 17 .. 17;
UDRDY at 0 range 18 .. 19;
Reserved_20 at 0 range 20 .. 31;
end record;
type PWR_Registers is record
CR : Power_Control_Register with Volatile_Full_Access;
CSR : Power_Control_Status_Register with Volatile_Full_Access;
end record with Volatile;
for PWR_Registers use record
CR at 16#00# range 0 .. 31;
CSR at 16#04# range 0 .. 31;
end record;
end STM32.F4.PWR;