stm32f429zi/
pwr.rs
1use kernel::utilities::registers::interfaces::ReadWriteable;
6use kernel::utilities::registers::{register_bitfields, register_structs, ReadWrite};
7use kernel::utilities::StaticRef;
8use kernel::ErrorCode;
9
10register_structs! {
11 PwrRegisters {
13 (0x000 => cr: ReadWrite<u32, CR::Register>),
15 (0x004 => csr: ReadWrite<u32, CSR::Register>),
17 (0x008 => @END),
18 }
19}
20register_bitfields![u32,
21CR [
22 LPDS OFFSET(0) NUMBITS(1) [],
24 PDDS OFFSET(1) NUMBITS(1) [],
26 CWUF OFFSET(2) NUMBITS(1) [],
28 CSBF OFFSET(3) NUMBITS(1) [],
30 PVDE OFFSET(4) NUMBITS(1) [],
33 PLS OFFSET(5) NUMBITS(3) [],
35 DBP OFFSET(8) NUMBITS(1) [],
38 FPDS OFFSET(9) NUMBITS(1) [],
41 LPLUDS OFFSET(10) NUMBITS(1) [],
44 MRUDS OFFSET(11) NUMBITS(1) [],
47
48 ADCDC1 OFFSET(13) NUMBITS(1) [],
49 VOS OFFSET(14) NUMBITS(2) [
52 Scale3 = 0b01,
53 Scale2 = 0b10,
54 Scale1 = 0b11,
55 ],
56 ODEN OFFSET(16) NUMBITS(1) [],
58 ODSWEN OFFSET(17) NUMBITS(1) [],
61 UDEN OFFSET(18) NUMBITS(2) []
64],
65CSR [
66 WUF OFFSET(0) NUMBITS(1) [],
68 SBF OFFSET(1) NUMBITS(1) [],
70 PVDO OFFSET(2) NUMBITS(1) [],
72 BRR OFFSET(3) NUMBITS(1) [],
74 EWUP OFFSET(8) NUMBITS(1) [],
76 BRE OFFSET(9) NUMBITS(1) [],
78 VOSRDY OFFSET(14) NUMBITS(1) [],
81 ODRDY OFFSET(16) NUMBITS(1) [],
83 ODSWRDY OFFSET(17) NUMBITS(1) [],
86 UDRDY OFFSET(18) NUMBITS(2) []
88]
89];
90const PWR_BASE: StaticRef<PwrRegisters> =
91 unsafe { StaticRef::new(0x40007000 as *const PwrRegisters) };
92
93#[inline(never)]
94pub fn enable_backup_access() -> Result<(), ErrorCode> {
95 PWR_BASE.cr.modify(CR::DBP::SET);
96 Ok(())
97}