stm32l4/stm32l4x1/gpioa/
pupdr.rs1pub type R = crate::R<PUPDRrs>;
3pub type W = crate::W<PUPDRrs>;
5#[cfg_attr(feature = "defmt", derive(defmt::Format))]
9#[derive(Clone, Copy, Debug, PartialEq, Eq)]
10#[repr(u8)]
11pub enum PULL {
12 Floating = 0,
14 PullUp = 1,
16 PullDown = 2,
18}
19impl From<PULL> for u8 {
20 #[inline(always)]
21 fn from(variant: PULL) -> Self {
22 variant as _
23 }
24}
25impl crate::FieldSpec for PULL {
26 type Ux = u8;
27}
28impl crate::IsEnum for PULL {}
29pub type PUPDR_R = crate::FieldReader<PULL>;
31impl PUPDR_R {
32 #[inline(always)]
34 pub const fn variant(&self) -> Option<PULL> {
35 match self.bits {
36 0 => Some(PULL::Floating),
37 1 => Some(PULL::PullUp),
38 2 => Some(PULL::PullDown),
39 _ => None,
40 }
41 }
42 #[inline(always)]
44 pub fn is_floating(&self) -> bool {
45 *self == PULL::Floating
46 }
47 #[inline(always)]
49 pub fn is_pull_up(&self) -> bool {
50 *self == PULL::PullUp
51 }
52 #[inline(always)]
54 pub fn is_pull_down(&self) -> bool {
55 *self == PULL::PullDown
56 }
57}
58pub type PUPDR_W<'a, REG> = crate::FieldWriter<'a, REG, 2, PULL>;
60impl<'a, REG> PUPDR_W<'a, REG>
61where
62 REG: crate::Writable + crate::RegisterSpec,
63 REG::Ux: From<u8>,
64{
65 #[inline(always)]
67 pub fn floating(self) -> &'a mut crate::W<REG> {
68 self.variant(PULL::Floating)
69 }
70 #[inline(always)]
72 pub fn pull_up(self) -> &'a mut crate::W<REG> {
73 self.variant(PULL::PullUp)
74 }
75 #[inline(always)]
77 pub fn pull_down(self) -> &'a mut crate::W<REG> {
78 self.variant(PULL::PullDown)
79 }
80}
81impl R {
82 #[inline(always)]
86 pub fn pupdr(&self, n: u8) -> PUPDR_R {
87 #[allow(clippy::no_effect)]
88 [(); 16][n as usize];
89 PUPDR_R::new(((self.bits >> (n * 2)) & 3) as u8)
90 }
91 #[inline(always)]
94 pub fn pupdr_iter(&self) -> impl Iterator<Item = PUPDR_R> + '_ {
95 (0..16).map(move |n| PUPDR_R::new(((self.bits >> (n * 2)) & 3) as u8))
96 }
97 #[inline(always)]
99 pub fn pupdr0(&self) -> PUPDR_R {
100 PUPDR_R::new((self.bits & 3) as u8)
101 }
102 #[inline(always)]
104 pub fn pupdr1(&self) -> PUPDR_R {
105 PUPDR_R::new(((self.bits >> 2) & 3) as u8)
106 }
107 #[inline(always)]
109 pub fn pupdr2(&self) -> PUPDR_R {
110 PUPDR_R::new(((self.bits >> 4) & 3) as u8)
111 }
112 #[inline(always)]
114 pub fn pupdr3(&self) -> PUPDR_R {
115 PUPDR_R::new(((self.bits >> 6) & 3) as u8)
116 }
117 #[inline(always)]
119 pub fn pupdr4(&self) -> PUPDR_R {
120 PUPDR_R::new(((self.bits >> 8) & 3) as u8)
121 }
122 #[inline(always)]
124 pub fn pupdr5(&self) -> PUPDR_R {
125 PUPDR_R::new(((self.bits >> 10) & 3) as u8)
126 }
127 #[inline(always)]
129 pub fn pupdr6(&self) -> PUPDR_R {
130 PUPDR_R::new(((self.bits >> 12) & 3) as u8)
131 }
132 #[inline(always)]
134 pub fn pupdr7(&self) -> PUPDR_R {
135 PUPDR_R::new(((self.bits >> 14) & 3) as u8)
136 }
137 #[inline(always)]
139 pub fn pupdr8(&self) -> PUPDR_R {
140 PUPDR_R::new(((self.bits >> 16) & 3) as u8)
141 }
142 #[inline(always)]
144 pub fn pupdr9(&self) -> PUPDR_R {
145 PUPDR_R::new(((self.bits >> 18) & 3) as u8)
146 }
147 #[inline(always)]
149 pub fn pupdr10(&self) -> PUPDR_R {
150 PUPDR_R::new(((self.bits >> 20) & 3) as u8)
151 }
152 #[inline(always)]
154 pub fn pupdr11(&self) -> PUPDR_R {
155 PUPDR_R::new(((self.bits >> 22) & 3) as u8)
156 }
157 #[inline(always)]
159 pub fn pupdr12(&self) -> PUPDR_R {
160 PUPDR_R::new(((self.bits >> 24) & 3) as u8)
161 }
162 #[inline(always)]
164 pub fn pupdr13(&self) -> PUPDR_R {
165 PUPDR_R::new(((self.bits >> 26) & 3) as u8)
166 }
167 #[inline(always)]
169 pub fn pupdr14(&self) -> PUPDR_R {
170 PUPDR_R::new(((self.bits >> 28) & 3) as u8)
171 }
172 #[inline(always)]
174 pub fn pupdr15(&self) -> PUPDR_R {
175 PUPDR_R::new(((self.bits >> 30) & 3) as u8)
176 }
177}
178impl core::fmt::Debug for R {
179 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
180 f.debug_struct("PUPDR")
181 .field("pupdr0", &self.pupdr0())
182 .field("pupdr1", &self.pupdr1())
183 .field("pupdr2", &self.pupdr2())
184 .field("pupdr3", &self.pupdr3())
185 .field("pupdr4", &self.pupdr4())
186 .field("pupdr5", &self.pupdr5())
187 .field("pupdr6", &self.pupdr6())
188 .field("pupdr7", &self.pupdr7())
189 .field("pupdr8", &self.pupdr8())
190 .field("pupdr9", &self.pupdr9())
191 .field("pupdr10", &self.pupdr10())
192 .field("pupdr11", &self.pupdr11())
193 .field("pupdr12", &self.pupdr12())
194 .field("pupdr13", &self.pupdr13())
195 .field("pupdr14", &self.pupdr14())
196 .field("pupdr15", &self.pupdr15())
197 .finish()
198 }
199}
200impl W {
201 #[inline(always)]
205 pub fn pupdr(&mut self, n: u8) -> PUPDR_W<PUPDRrs> {
206 #[allow(clippy::no_effect)]
207 [(); 16][n as usize];
208 PUPDR_W::new(self, n * 2)
209 }
210 #[inline(always)]
212 pub fn pupdr0(&mut self) -> PUPDR_W<PUPDRrs> {
213 PUPDR_W::new(self, 0)
214 }
215 #[inline(always)]
217 pub fn pupdr1(&mut self) -> PUPDR_W<PUPDRrs> {
218 PUPDR_W::new(self, 2)
219 }
220 #[inline(always)]
222 pub fn pupdr2(&mut self) -> PUPDR_W<PUPDRrs> {
223 PUPDR_W::new(self, 4)
224 }
225 #[inline(always)]
227 pub fn pupdr3(&mut self) -> PUPDR_W<PUPDRrs> {
228 PUPDR_W::new(self, 6)
229 }
230 #[inline(always)]
232 pub fn pupdr4(&mut self) -> PUPDR_W<PUPDRrs> {
233 PUPDR_W::new(self, 8)
234 }
235 #[inline(always)]
237 pub fn pupdr5(&mut self) -> PUPDR_W<PUPDRrs> {
238 PUPDR_W::new(self, 10)
239 }
240 #[inline(always)]
242 pub fn pupdr6(&mut self) -> PUPDR_W<PUPDRrs> {
243 PUPDR_W::new(self, 12)
244 }
245 #[inline(always)]
247 pub fn pupdr7(&mut self) -> PUPDR_W<PUPDRrs> {
248 PUPDR_W::new(self, 14)
249 }
250 #[inline(always)]
252 pub fn pupdr8(&mut self) -> PUPDR_W<PUPDRrs> {
253 PUPDR_W::new(self, 16)
254 }
255 #[inline(always)]
257 pub fn pupdr9(&mut self) -> PUPDR_W<PUPDRrs> {
258 PUPDR_W::new(self, 18)
259 }
260 #[inline(always)]
262 pub fn pupdr10(&mut self) -> PUPDR_W<PUPDRrs> {
263 PUPDR_W::new(self, 20)
264 }
265 #[inline(always)]
267 pub fn pupdr11(&mut self) -> PUPDR_W<PUPDRrs> {
268 PUPDR_W::new(self, 22)
269 }
270 #[inline(always)]
272 pub fn pupdr12(&mut self) -> PUPDR_W<PUPDRrs> {
273 PUPDR_W::new(self, 24)
274 }
275 #[inline(always)]
277 pub fn pupdr13(&mut self) -> PUPDR_W<PUPDRrs> {
278 PUPDR_W::new(self, 26)
279 }
280 #[inline(always)]
282 pub fn pupdr14(&mut self) -> PUPDR_W<PUPDRrs> {
283 PUPDR_W::new(self, 28)
284 }
285 #[inline(always)]
287 pub fn pupdr15(&mut self) -> PUPDR_W<PUPDRrs> {
288 PUPDR_W::new(self, 30)
289 }
290}
291pub struct PUPDRrs;
297impl crate::RegisterSpec for PUPDRrs {
298 type Ux = u32;
299}
300impl crate::Readable for PUPDRrs {}
302impl crate::Writable for PUPDRrs {
304 type Safety = crate::Unsafe;
305}
306impl crate::Resettable for PUPDRrs {
308 const RESET_VALUE: u32 = 0x6400_0000;
309}