stm32ral/stm32f1/peripherals/pwr.rs
1#![allow(non_snake_case, non_upper_case_globals)]
2#![allow(non_camel_case_types)]
3//! Power control
4//!
5//! Used by: stm32f100, stm32f101, stm32f102, stm32f103, stm32f107
6
7use crate::RWRegister;
8#[cfg(not(feature = "nosync"))]
9use core::marker::PhantomData;
10
11/// Power control register (PWR_CR)
12pub mod CR {
13
14 /// Low Power Deep Sleep
15 pub mod LPDS {
16 /// Offset (0 bits)
17 pub const offset: u32 = 0;
18 /// Mask (1 bit: 1 << 0)
19 pub const mask: u32 = 1 << offset;
20 /// Read-only values (empty)
21 pub mod R {}
22 /// Write-only values (empty)
23 pub mod W {}
24 /// Read-write values (empty)
25 pub mod RW {}
26 }
27
28 /// Power Down Deep Sleep
29 pub mod PDDS {
30 /// Offset (1 bits)
31 pub const offset: u32 = 1;
32 /// Mask (1 bit: 1 << 1)
33 pub const mask: u32 = 1 << offset;
34 /// Read-only values (empty)
35 pub mod R {}
36 /// Write-only values (empty)
37 pub mod W {}
38 /// Read-write values
39 pub mod RW {
40
41 /// 0b0: Enter Stop mode when the CPU enters deepsleep
42 pub const STOP_MODE: u32 = 0b0;
43
44 /// 0b1: Enter Standby mode when the CPU enters deepsleep
45 pub const STANDBY_MODE: u32 = 0b1;
46 }
47 }
48
49 /// Clear Wake-up Flag
50 pub mod CWUF {
51 /// Offset (2 bits)
52 pub const offset: u32 = 2;
53 /// Mask (1 bit: 1 << 2)
54 pub const mask: u32 = 1 << offset;
55 /// Read-only values (empty)
56 pub mod R {}
57 /// Write-only values (empty)
58 pub mod W {}
59 /// Read-write values (empty)
60 pub mod RW {}
61 }
62
63 /// Clear STANDBY Flag
64 pub mod CSBF {
65 /// Offset (3 bits)
66 pub const offset: u32 = 3;
67 /// Mask (1 bit: 1 << 3)
68 pub const mask: u32 = 1 << offset;
69 /// Read-only values (empty)
70 pub mod R {}
71 /// Write-only values (empty)
72 pub mod W {}
73 /// Read-write values (empty)
74 pub mod RW {}
75 }
76
77 /// Power Voltage Detector Enable
78 pub mod PVDE {
79 /// Offset (4 bits)
80 pub const offset: u32 = 4;
81 /// Mask (1 bit: 1 << 4)
82 pub const mask: u32 = 1 << offset;
83 /// Read-only values (empty)
84 pub mod R {}
85 /// Write-only values (empty)
86 pub mod W {}
87 /// Read-write values (empty)
88 pub mod RW {}
89 }
90
91 /// PVD Level Selection
92 pub mod PLS {
93 /// Offset (5 bits)
94 pub const offset: u32 = 5;
95 /// Mask (3 bits: 0b111 << 5)
96 pub const mask: u32 = 0b111 << offset;
97 /// Read-only values (empty)
98 pub mod R {}
99 /// Write-only values (empty)
100 pub mod W {}
101 /// Read-write values (empty)
102 pub mod RW {}
103 }
104
105 /// Disable Backup Domain write protection
106 pub mod DBP {
107 /// Offset (8 bits)
108 pub const offset: u32 = 8;
109 /// Mask (1 bit: 1 << 8)
110 pub const mask: u32 = 1 << offset;
111 /// Read-only values (empty)
112 pub mod R {}
113 /// Write-only values (empty)
114 pub mod W {}
115 /// Read-write values (empty)
116 pub mod RW {}
117 }
118}
119
120/// Power control register (PWR_CR)
121pub mod CSR {
122
123 /// Wake-Up Flag
124 pub mod WUF {
125 /// Offset (0 bits)
126 pub const offset: u32 = 0;
127 /// Mask (1 bit: 1 << 0)
128 pub const mask: u32 = 1 << offset;
129 /// Read-only values (empty)
130 pub mod R {}
131 /// Write-only values (empty)
132 pub mod W {}
133 /// Read-write values (empty)
134 pub mod RW {}
135 }
136
137 /// STANDBY Flag
138 pub mod SBF {
139 /// Offset (1 bits)
140 pub const offset: u32 = 1;
141 /// Mask (1 bit: 1 << 1)
142 pub const mask: u32 = 1 << offset;
143 /// Read-only values (empty)
144 pub mod R {}
145 /// Write-only values (empty)
146 pub mod W {}
147 /// Read-write values (empty)
148 pub mod RW {}
149 }
150
151 /// PVD Output
152 pub mod PVDO {
153 /// Offset (2 bits)
154 pub const offset: u32 = 2;
155 /// Mask (1 bit: 1 << 2)
156 pub const mask: u32 = 1 << offset;
157 /// Read-only values (empty)
158 pub mod R {}
159 /// Write-only values (empty)
160 pub mod W {}
161 /// Read-write values (empty)
162 pub mod RW {}
163 }
164
165 /// Enable WKUP pin
166 pub mod EWUP {
167 /// Offset (8 bits)
168 pub const offset: u32 = 8;
169 /// Mask (1 bit: 1 << 8)
170 pub const mask: u32 = 1 << offset;
171 /// Read-only values (empty)
172 pub mod R {}
173 /// Write-only values (empty)
174 pub mod W {}
175 /// Read-write values (empty)
176 pub mod RW {}
177 }
178}
179#[repr(C)]
180pub struct RegisterBlock {
181 /// Power control register (PWR_CR)
182 pub CR: RWRegister<u32>,
183
184 /// Power control register (PWR_CR)
185 pub CSR: RWRegister<u32>,
186}
187pub struct ResetValues {
188 pub CR: u32,
189 pub CSR: u32,
190}
191#[cfg(not(feature = "nosync"))]
192pub struct Instance {
193 pub(crate) addr: u32,
194 pub(crate) _marker: PhantomData<*const RegisterBlock>,
195}
196#[cfg(not(feature = "nosync"))]
197impl ::core::ops::Deref for Instance {
198 type Target = RegisterBlock;
199 #[inline(always)]
200 fn deref(&self) -> &RegisterBlock {
201 unsafe { &*(self.addr as *const _) }
202 }
203}
204#[cfg(feature = "rtic")]
205unsafe impl Send for Instance {}