py32f0/py32f002a/gpioa/
pupdr.rs

1///Register `PUPDR` reader
2pub struct R(crate::R<PUPDR_SPEC>);
3impl core::ops::Deref for R {
4    type Target = crate::R<PUPDR_SPEC>;
5    #[inline(always)]
6    fn deref(&self) -> &Self::Target {
7        &self.0
8    }
9}
10impl From<crate::R<PUPDR_SPEC>> for R {
11    #[inline(always)]
12    fn from(reader: crate::R<PUPDR_SPEC>) -> Self {
13        R(reader)
14    }
15}
16///Register `PUPDR` writer
17pub struct W(crate::W<PUPDR_SPEC>);
18impl core::ops::Deref for W {
19    type Target = crate::W<PUPDR_SPEC>;
20    #[inline(always)]
21    fn deref(&self) -> &Self::Target {
22        &self.0
23    }
24}
25impl core::ops::DerefMut for W {
26    #[inline(always)]
27    fn deref_mut(&mut self) -> &mut Self::Target {
28        &mut self.0
29    }
30}
31impl From<crate::W<PUPDR_SPEC>> for W {
32    #[inline(always)]
33    fn from(writer: crate::W<PUPDR_SPEC>) -> Self {
34        W(writer)
35    }
36}
37///Field `PUPD0` reader - Port x configuration bits (y = 0..15)
38pub type PUPD0_R = crate::FieldReader<u8, PUPD0_A>;
39/**Port x configuration bits (y = 0..15)
40
41Value on reset: 0*/
42#[derive(Clone, Copy, Debug, PartialEq, Eq)]
43#[repr(u8)]
44pub enum PUPD0_A {
45    ///0: No pull-up, pull-down
46    Floating = 0,
47    ///1: Pull-up
48    PullUp = 1,
49    ///2: Pull-down
50    PullDown = 2,
51}
52impl From<PUPD0_A> for u8 {
53    #[inline(always)]
54    fn from(variant: PUPD0_A) -> Self {
55        variant as _
56    }
57}
58impl PUPD0_R {
59    ///Get enumerated values variant
60    #[inline(always)]
61    pub fn variant(&self) -> Option<PUPD0_A> {
62        match self.bits {
63            0 => Some(PUPD0_A::Floating),
64            1 => Some(PUPD0_A::PullUp),
65            2 => Some(PUPD0_A::PullDown),
66            _ => None,
67        }
68    }
69    ///Checks if the value of the field is `Floating`
70    #[inline(always)]
71    pub fn is_floating(&self) -> bool {
72        *self == PUPD0_A::Floating
73    }
74    ///Checks if the value of the field is `PullUp`
75    #[inline(always)]
76    pub fn is_pull_up(&self) -> bool {
77        *self == PUPD0_A::PullUp
78    }
79    ///Checks if the value of the field is `PullDown`
80    #[inline(always)]
81    pub fn is_pull_down(&self) -> bool {
82        *self == PUPD0_A::PullDown
83    }
84}
85///Field `PUPD0` writer - Port x configuration bits (y = 0..15)
86pub type PUPD0_W<'a, const O: u8> = crate::FieldWriter<'a, u32, PUPDR_SPEC, u8, PUPD0_A, 2, O>;
87impl<'a, const O: u8> PUPD0_W<'a, O> {
88    ///No pull-up, pull-down
89    #[inline(always)]
90    pub fn floating(self) -> &'a mut W {
91        self.variant(PUPD0_A::Floating)
92    }
93    ///Pull-up
94    #[inline(always)]
95    pub fn pull_up(self) -> &'a mut W {
96        self.variant(PUPD0_A::PullUp)
97    }
98    ///Pull-down
99    #[inline(always)]
100    pub fn pull_down(self) -> &'a mut W {
101        self.variant(PUPD0_A::PullDown)
102    }
103}
104///Field `PUPD1` reader - Port x configuration bits (y = 0..15)
105pub use PUPD0_R as PUPD1_R;
106///Field `PUPD2` reader - Port x configuration bits (y = 0..15)
107pub use PUPD0_R as PUPD2_R;
108///Field `PUPD3` reader - Port x configuration bits (y = 0..15)
109pub use PUPD0_R as PUPD3_R;
110///Field `PUPD4` reader - Port x configuration bits (y = 0..15)
111pub use PUPD0_R as PUPD4_R;
112///Field `PUPD5` reader - Port x configuration bits (y = 0..15)
113pub use PUPD0_R as PUPD5_R;
114///Field `PUPD6` reader - Port x configuration bits (y = 0..15)
115pub use PUPD0_R as PUPD6_R;
116///Field `PUPD7` reader - Port x configuration bits (y = 0..15)
117pub use PUPD0_R as PUPD7_R;
118///Field `PUPD8` reader - Port x configuration bits (y = 0..15)
119pub use PUPD0_R as PUPD8_R;
120///Field `PUPD9` reader - Port x configuration bits (y = 0..15)
121pub use PUPD0_R as PUPD9_R;
122///Field `PUPD10` reader - Port x configuration bits (y = 0..15)
123pub use PUPD0_R as PUPD10_R;
124///Field `PUPD11` reader - Port x configuration bits (y = 0..15)
125pub use PUPD0_R as PUPD11_R;
126///Field `PUPD12` reader - Port x configuration bits (y = 0..15)
127pub use PUPD0_R as PUPD12_R;
128///Field `PUPD13` reader - Port x configuration bits (y = 0..15)
129pub use PUPD0_R as PUPD13_R;
130///Field `PUPD14` reader - Port x configuration bits (y = 0..15)
131pub use PUPD0_R as PUPD14_R;
132///Field `PUPD15` reader - Port x configuration bits (y = 0..15)
133pub use PUPD0_R as PUPD15_R;
134///Field `PUPD1` writer - Port x configuration bits (y = 0..15)
135pub use PUPD0_W as PUPD1_W;
136///Field `PUPD2` writer - Port x configuration bits (y = 0..15)
137pub use PUPD0_W as PUPD2_W;
138///Field `PUPD3` writer - Port x configuration bits (y = 0..15)
139pub use PUPD0_W as PUPD3_W;
140///Field `PUPD4` writer - Port x configuration bits (y = 0..15)
141pub use PUPD0_W as PUPD4_W;
142///Field `PUPD5` writer - Port x configuration bits (y = 0..15)
143pub use PUPD0_W as PUPD5_W;
144///Field `PUPD6` writer - Port x configuration bits (y = 0..15)
145pub use PUPD0_W as PUPD6_W;
146///Field `PUPD7` writer - Port x configuration bits (y = 0..15)
147pub use PUPD0_W as PUPD7_W;
148///Field `PUPD8` writer - Port x configuration bits (y = 0..15)
149pub use PUPD0_W as PUPD8_W;
150///Field `PUPD9` writer - Port x configuration bits (y = 0..15)
151pub use PUPD0_W as PUPD9_W;
152///Field `PUPD10` writer - Port x configuration bits (y = 0..15)
153pub use PUPD0_W as PUPD10_W;
154///Field `PUPD11` writer - Port x configuration bits (y = 0..15)
155pub use PUPD0_W as PUPD11_W;
156///Field `PUPD12` writer - Port x configuration bits (y = 0..15)
157pub use PUPD0_W as PUPD12_W;
158///Field `PUPD13` writer - Port x configuration bits (y = 0..15)
159pub use PUPD0_W as PUPD13_W;
160///Field `PUPD14` writer - Port x configuration bits (y = 0..15)
161pub use PUPD0_W as PUPD14_W;
162///Field `PUPD15` writer - Port x configuration bits (y = 0..15)
163pub use PUPD0_W as PUPD15_W;
164impl R {
165    ///Bits 0:1 - Port x configuration bits (y = 0..15)
166    #[inline(always)]
167    pub fn pupd0(&self) -> PUPD0_R {
168        PUPD0_R::new((self.bits & 3) as u8)
169    }
170    ///Bits 2:3 - Port x configuration bits (y = 0..15)
171    #[inline(always)]
172    pub fn pupd1(&self) -> PUPD1_R {
173        PUPD1_R::new(((self.bits >> 2) & 3) as u8)
174    }
175    ///Bits 4:5 - Port x configuration bits (y = 0..15)
176    #[inline(always)]
177    pub fn pupd2(&self) -> PUPD2_R {
178        PUPD2_R::new(((self.bits >> 4) & 3) as u8)
179    }
180    ///Bits 6:7 - Port x configuration bits (y = 0..15)
181    #[inline(always)]
182    pub fn pupd3(&self) -> PUPD3_R {
183        PUPD3_R::new(((self.bits >> 6) & 3) as u8)
184    }
185    ///Bits 8:9 - Port x configuration bits (y = 0..15)
186    #[inline(always)]
187    pub fn pupd4(&self) -> PUPD4_R {
188        PUPD4_R::new(((self.bits >> 8) & 3) as u8)
189    }
190    ///Bits 10:11 - Port x configuration bits (y = 0..15)
191    #[inline(always)]
192    pub fn pupd5(&self) -> PUPD5_R {
193        PUPD5_R::new(((self.bits >> 10) & 3) as u8)
194    }
195    ///Bits 12:13 - Port x configuration bits (y = 0..15)
196    #[inline(always)]
197    pub fn pupd6(&self) -> PUPD6_R {
198        PUPD6_R::new(((self.bits >> 12) & 3) as u8)
199    }
200    ///Bits 14:15 - Port x configuration bits (y = 0..15)
201    #[inline(always)]
202    pub fn pupd7(&self) -> PUPD7_R {
203        PUPD7_R::new(((self.bits >> 14) & 3) as u8)
204    }
205    ///Bits 16:17 - Port x configuration bits (y = 0..15)
206    #[inline(always)]
207    pub fn pupd8(&self) -> PUPD8_R {
208        PUPD8_R::new(((self.bits >> 16) & 3) as u8)
209    }
210    ///Bits 18:19 - Port x configuration bits (y = 0..15)
211    #[inline(always)]
212    pub fn pupd9(&self) -> PUPD9_R {
213        PUPD9_R::new(((self.bits >> 18) & 3) as u8)
214    }
215    ///Bits 20:21 - Port x configuration bits (y = 0..15)
216    #[inline(always)]
217    pub fn pupd10(&self) -> PUPD10_R {
218        PUPD10_R::new(((self.bits >> 20) & 3) as u8)
219    }
220    ///Bits 22:23 - Port x configuration bits (y = 0..15)
221    #[inline(always)]
222    pub fn pupd11(&self) -> PUPD11_R {
223        PUPD11_R::new(((self.bits >> 22) & 3) as u8)
224    }
225    ///Bits 24:25 - Port x configuration bits (y = 0..15)
226    #[inline(always)]
227    pub fn pupd12(&self) -> PUPD12_R {
228        PUPD12_R::new(((self.bits >> 24) & 3) as u8)
229    }
230    ///Bits 26:27 - Port x configuration bits (y = 0..15)
231    #[inline(always)]
232    pub fn pupd13(&self) -> PUPD13_R {
233        PUPD13_R::new(((self.bits >> 26) & 3) as u8)
234    }
235    ///Bits 28:29 - Port x configuration bits (y = 0..15)
236    #[inline(always)]
237    pub fn pupd14(&self) -> PUPD14_R {
238        PUPD14_R::new(((self.bits >> 28) & 3) as u8)
239    }
240    ///Bits 30:31 - Port x configuration bits (y = 0..15)
241    #[inline(always)]
242    pub fn pupd15(&self) -> PUPD15_R {
243        PUPD15_R::new(((self.bits >> 30) & 3) as u8)
244    }
245}
246impl W {
247    ///Bits 0:1 - Port x configuration bits (y = 0..15)
248    #[inline(always)]
249    #[must_use]
250    pub fn pupd0(&mut self) -> PUPD0_W<0> {
251        PUPD0_W::new(self)
252    }
253    ///Bits 2:3 - Port x configuration bits (y = 0..15)
254    #[inline(always)]
255    #[must_use]
256    pub fn pupd1(&mut self) -> PUPD1_W<2> {
257        PUPD1_W::new(self)
258    }
259    ///Bits 4:5 - Port x configuration bits (y = 0..15)
260    #[inline(always)]
261    #[must_use]
262    pub fn pupd2(&mut self) -> PUPD2_W<4> {
263        PUPD2_W::new(self)
264    }
265    ///Bits 6:7 - Port x configuration bits (y = 0..15)
266    #[inline(always)]
267    #[must_use]
268    pub fn pupd3(&mut self) -> PUPD3_W<6> {
269        PUPD3_W::new(self)
270    }
271    ///Bits 8:9 - Port x configuration bits (y = 0..15)
272    #[inline(always)]
273    #[must_use]
274    pub fn pupd4(&mut self) -> PUPD4_W<8> {
275        PUPD4_W::new(self)
276    }
277    ///Bits 10:11 - Port x configuration bits (y = 0..15)
278    #[inline(always)]
279    #[must_use]
280    pub fn pupd5(&mut self) -> PUPD5_W<10> {
281        PUPD5_W::new(self)
282    }
283    ///Bits 12:13 - Port x configuration bits (y = 0..15)
284    #[inline(always)]
285    #[must_use]
286    pub fn pupd6(&mut self) -> PUPD6_W<12> {
287        PUPD6_W::new(self)
288    }
289    ///Bits 14:15 - Port x configuration bits (y = 0..15)
290    #[inline(always)]
291    #[must_use]
292    pub fn pupd7(&mut self) -> PUPD7_W<14> {
293        PUPD7_W::new(self)
294    }
295    ///Bits 16:17 - Port x configuration bits (y = 0..15)
296    #[inline(always)]
297    #[must_use]
298    pub fn pupd8(&mut self) -> PUPD8_W<16> {
299        PUPD8_W::new(self)
300    }
301    ///Bits 18:19 - Port x configuration bits (y = 0..15)
302    #[inline(always)]
303    #[must_use]
304    pub fn pupd9(&mut self) -> PUPD9_W<18> {
305        PUPD9_W::new(self)
306    }
307    ///Bits 20:21 - Port x configuration bits (y = 0..15)
308    #[inline(always)]
309    #[must_use]
310    pub fn pupd10(&mut self) -> PUPD10_W<20> {
311        PUPD10_W::new(self)
312    }
313    ///Bits 22:23 - Port x configuration bits (y = 0..15)
314    #[inline(always)]
315    #[must_use]
316    pub fn pupd11(&mut self) -> PUPD11_W<22> {
317        PUPD11_W::new(self)
318    }
319    ///Bits 24:25 - Port x configuration bits (y = 0..15)
320    #[inline(always)]
321    #[must_use]
322    pub fn pupd12(&mut self) -> PUPD12_W<24> {
323        PUPD12_W::new(self)
324    }
325    ///Bits 26:27 - Port x configuration bits (y = 0..15)
326    #[inline(always)]
327    #[must_use]
328    pub fn pupd13(&mut self) -> PUPD13_W<26> {
329        PUPD13_W::new(self)
330    }
331    ///Bits 28:29 - Port x configuration bits (y = 0..15)
332    #[inline(always)]
333    #[must_use]
334    pub fn pupd14(&mut self) -> PUPD14_W<28> {
335        PUPD14_W::new(self)
336    }
337    ///Bits 30:31 - Port x configuration bits (y = 0..15)
338    #[inline(always)]
339    #[must_use]
340    pub fn pupd15(&mut self) -> PUPD15_W<30> {
341        PUPD15_W::new(self)
342    }
343    ///Writes raw bits to the register.
344    #[inline(always)]
345    pub unsafe fn bits(&mut self, bits: u32) -> &mut Self {
346        self.0.bits(bits);
347        self
348    }
349}
350/**GPIO port pull-up/pull-down register
351
352This register you can [`read`](crate::generic::Reg::read), [`write_with_zero`](crate::generic::Reg::write_with_zero), [`reset`](crate::generic::Reg::reset), [`write`](crate::generic::Reg::write), [`modify`](crate::generic::Reg::modify). See [API](https://docs.rs/svd2rust/#read--modify--write-api).
353
354For information about available fields see [pupdr](index.html) module*/
355pub struct PUPDR_SPEC;
356impl crate::RegisterSpec for PUPDR_SPEC {
357    type Ux = u32;
358}
359///`read()` method returns [pupdr::R](R) reader structure
360impl crate::Readable for PUPDR_SPEC {
361    type Reader = R;
362}
363///`write(|w| ..)` method takes [pupdr::W](W) writer structure
364impl crate::Writable for PUPDR_SPEC {
365    type Writer = W;
366    const ZERO_TO_MODIFY_FIELDS_BITMAP: Self::Ux = 0;
367    const ONE_TO_MODIFY_FIELDS_BITMAP: Self::Ux = 0;
368}
369///`reset()` method sets PUPDR to value 0x2400_0000
370impl crate::Resettable for PUPDR_SPEC {
371    const RESET_VALUE: Self::Ux = 0x2400_0000;
372}