stm32l4/stm32l4x1/gpioa/
pupdr.rs

1///Register `PUPDR` reader
2pub type R = crate::R<PUPDRrs>;
3///Register `PUPDR` writer
4pub type W = crate::W<PUPDRrs>;
5/**Port x configuration pin %s
6
7Value on reset: 0*/
8#[cfg_attr(feature = "defmt", derive(defmt::Format))]
9#[derive(Clone, Copy, Debug, PartialEq, Eq)]
10#[repr(u8)]
11pub enum PULL {
12    ///0: No pull-up, pull-down
13    Floating = 0,
14    ///1: Pull-up
15    PullUp = 1,
16    ///2: Pull-down
17    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 {}
29///Field `PUPDR(0-15)` reader - Port x configuration pin %s
30pub type PUPDR_R = crate::FieldReader<PULL>;
31impl PUPDR_R {
32    ///Get enumerated values variant
33    #[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    ///No pull-up, pull-down
43    #[inline(always)]
44    pub fn is_floating(&self) -> bool {
45        *self == PULL::Floating
46    }
47    ///Pull-up
48    #[inline(always)]
49    pub fn is_pull_up(&self) -> bool {
50        *self == PULL::PullUp
51    }
52    ///Pull-down
53    #[inline(always)]
54    pub fn is_pull_down(&self) -> bool {
55        *self == PULL::PullDown
56    }
57}
58///Field `PUPDR(0-15)` writer - Port x configuration pin %s
59pub 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    ///No pull-up, pull-down
66    #[inline(always)]
67    pub fn floating(self) -> &'a mut crate::W<REG> {
68        self.variant(PULL::Floating)
69    }
70    ///Pull-up
71    #[inline(always)]
72    pub fn pull_up(self) -> &'a mut crate::W<REG> {
73        self.variant(PULL::PullUp)
74    }
75    ///Pull-down
76    #[inline(always)]
77    pub fn pull_down(self) -> &'a mut crate::W<REG> {
78        self.variant(PULL::PullDown)
79    }
80}
81impl R {
82    ///Port x configuration pin (0-15)
83    ///
84    ///<div class="warning">`n` is number of field in register. `n == 0` corresponds to `PUPDR0` field.</div>
85    #[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    ///Iterator for array of:
92    ///Port x configuration pin (0-15)
93    #[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    ///Bits 0:1 - Port x configuration pin 0
98    #[inline(always)]
99    pub fn pupdr0(&self) -> PUPDR_R {
100        PUPDR_R::new((self.bits & 3) as u8)
101    }
102    ///Bits 2:3 - Port x configuration pin 1
103    #[inline(always)]
104    pub fn pupdr1(&self) -> PUPDR_R {
105        PUPDR_R::new(((self.bits >> 2) & 3) as u8)
106    }
107    ///Bits 4:5 - Port x configuration pin 2
108    #[inline(always)]
109    pub fn pupdr2(&self) -> PUPDR_R {
110        PUPDR_R::new(((self.bits >> 4) & 3) as u8)
111    }
112    ///Bits 6:7 - Port x configuration pin 3
113    #[inline(always)]
114    pub fn pupdr3(&self) -> PUPDR_R {
115        PUPDR_R::new(((self.bits >> 6) & 3) as u8)
116    }
117    ///Bits 8:9 - Port x configuration pin 4
118    #[inline(always)]
119    pub fn pupdr4(&self) -> PUPDR_R {
120        PUPDR_R::new(((self.bits >> 8) & 3) as u8)
121    }
122    ///Bits 10:11 - Port x configuration pin 5
123    #[inline(always)]
124    pub fn pupdr5(&self) -> PUPDR_R {
125        PUPDR_R::new(((self.bits >> 10) & 3) as u8)
126    }
127    ///Bits 12:13 - Port x configuration pin 6
128    #[inline(always)]
129    pub fn pupdr6(&self) -> PUPDR_R {
130        PUPDR_R::new(((self.bits >> 12) & 3) as u8)
131    }
132    ///Bits 14:15 - Port x configuration pin 7
133    #[inline(always)]
134    pub fn pupdr7(&self) -> PUPDR_R {
135        PUPDR_R::new(((self.bits >> 14) & 3) as u8)
136    }
137    ///Bits 16:17 - Port x configuration pin 8
138    #[inline(always)]
139    pub fn pupdr8(&self) -> PUPDR_R {
140        PUPDR_R::new(((self.bits >> 16) & 3) as u8)
141    }
142    ///Bits 18:19 - Port x configuration pin 9
143    #[inline(always)]
144    pub fn pupdr9(&self) -> PUPDR_R {
145        PUPDR_R::new(((self.bits >> 18) & 3) as u8)
146    }
147    ///Bits 20:21 - Port x configuration pin 10
148    #[inline(always)]
149    pub fn pupdr10(&self) -> PUPDR_R {
150        PUPDR_R::new(((self.bits >> 20) & 3) as u8)
151    }
152    ///Bits 22:23 - Port x configuration pin 11
153    #[inline(always)]
154    pub fn pupdr11(&self) -> PUPDR_R {
155        PUPDR_R::new(((self.bits >> 22) & 3) as u8)
156    }
157    ///Bits 24:25 - Port x configuration pin 12
158    #[inline(always)]
159    pub fn pupdr12(&self) -> PUPDR_R {
160        PUPDR_R::new(((self.bits >> 24) & 3) as u8)
161    }
162    ///Bits 26:27 - Port x configuration pin 13
163    #[inline(always)]
164    pub fn pupdr13(&self) -> PUPDR_R {
165        PUPDR_R::new(((self.bits >> 26) & 3) as u8)
166    }
167    ///Bits 28:29 - Port x configuration pin 14
168    #[inline(always)]
169    pub fn pupdr14(&self) -> PUPDR_R {
170        PUPDR_R::new(((self.bits >> 28) & 3) as u8)
171    }
172    ///Bits 30:31 - Port x configuration pin 15
173    #[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    ///Port x configuration pin (0-15)
202    ///
203    ///<div class="warning">`n` is number of field in register. `n == 0` corresponds to `PUPDR0` field.</div>
204    #[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    ///Bits 0:1 - Port x configuration pin 0
211    #[inline(always)]
212    pub fn pupdr0(&mut self) -> PUPDR_W<PUPDRrs> {
213        PUPDR_W::new(self, 0)
214    }
215    ///Bits 2:3 - Port x configuration pin 1
216    #[inline(always)]
217    pub fn pupdr1(&mut self) -> PUPDR_W<PUPDRrs> {
218        PUPDR_W::new(self, 2)
219    }
220    ///Bits 4:5 - Port x configuration pin 2
221    #[inline(always)]
222    pub fn pupdr2(&mut self) -> PUPDR_W<PUPDRrs> {
223        PUPDR_W::new(self, 4)
224    }
225    ///Bits 6:7 - Port x configuration pin 3
226    #[inline(always)]
227    pub fn pupdr3(&mut self) -> PUPDR_W<PUPDRrs> {
228        PUPDR_W::new(self, 6)
229    }
230    ///Bits 8:9 - Port x configuration pin 4
231    #[inline(always)]
232    pub fn pupdr4(&mut self) -> PUPDR_W<PUPDRrs> {
233        PUPDR_W::new(self, 8)
234    }
235    ///Bits 10:11 - Port x configuration pin 5
236    #[inline(always)]
237    pub fn pupdr5(&mut self) -> PUPDR_W<PUPDRrs> {
238        PUPDR_W::new(self, 10)
239    }
240    ///Bits 12:13 - Port x configuration pin 6
241    #[inline(always)]
242    pub fn pupdr6(&mut self) -> PUPDR_W<PUPDRrs> {
243        PUPDR_W::new(self, 12)
244    }
245    ///Bits 14:15 - Port x configuration pin 7
246    #[inline(always)]
247    pub fn pupdr7(&mut self) -> PUPDR_W<PUPDRrs> {
248        PUPDR_W::new(self, 14)
249    }
250    ///Bits 16:17 - Port x configuration pin 8
251    #[inline(always)]
252    pub fn pupdr8(&mut self) -> PUPDR_W<PUPDRrs> {
253        PUPDR_W::new(self, 16)
254    }
255    ///Bits 18:19 - Port x configuration pin 9
256    #[inline(always)]
257    pub fn pupdr9(&mut self) -> PUPDR_W<PUPDRrs> {
258        PUPDR_W::new(self, 18)
259    }
260    ///Bits 20:21 - Port x configuration pin 10
261    #[inline(always)]
262    pub fn pupdr10(&mut self) -> PUPDR_W<PUPDRrs> {
263        PUPDR_W::new(self, 20)
264    }
265    ///Bits 22:23 - Port x configuration pin 11
266    #[inline(always)]
267    pub fn pupdr11(&mut self) -> PUPDR_W<PUPDRrs> {
268        PUPDR_W::new(self, 22)
269    }
270    ///Bits 24:25 - Port x configuration pin 12
271    #[inline(always)]
272    pub fn pupdr12(&mut self) -> PUPDR_W<PUPDRrs> {
273        PUPDR_W::new(self, 24)
274    }
275    ///Bits 26:27 - Port x configuration pin 13
276    #[inline(always)]
277    pub fn pupdr13(&mut self) -> PUPDR_W<PUPDRrs> {
278        PUPDR_W::new(self, 26)
279    }
280    ///Bits 28:29 - Port x configuration pin 14
281    #[inline(always)]
282    pub fn pupdr14(&mut self) -> PUPDR_W<PUPDRrs> {
283        PUPDR_W::new(self, 28)
284    }
285    ///Bits 30:31 - Port x configuration pin 15
286    #[inline(always)]
287    pub fn pupdr15(&mut self) -> PUPDR_W<PUPDRrs> {
288        PUPDR_W::new(self, 30)
289    }
290}
291/**GPIO port pull-up/pull-down register
292
293You can [`read`](crate::Reg::read) this register and get [`pupdr::R`](R). You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`pupdr::W`](W). You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).
294
295See register [structure](https://stm32-rs.github.io/stm32-rs/STM32L4x1.html#GPIOA:PUPDR)*/
296pub struct PUPDRrs;
297impl crate::RegisterSpec for PUPDRrs {
298    type Ux = u32;
299}
300///`read()` method returns [`pupdr::R`](R) reader structure
301impl crate::Readable for PUPDRrs {}
302///`write(|w| ..)` method takes [`pupdr::W`](W) writer structure
303impl crate::Writable for PUPDRrs {
304    type Safety = crate::Unsafe;
305}
306///`reset()` method sets PUPDR to value 0x6400_0000
307impl crate::Resettable for PUPDRrs {
308    const RESET_VALUE: u32 = 0x6400_0000;
309}