stm32f3_staging/stm32f373/exti/
imr.rs

1///Register `IMR` reader
2pub type R = crate::R<IMRrs>;
3///Register `IMR` writer
4pub type W = crate::W<IMRrs>;
5/**Interrupt Mask on line 0
6
7Value on reset: 0*/
8#[cfg_attr(feature = "defmt", derive(defmt::Format))]
9#[derive(Clone, Copy, Debug, PartialEq, Eq)]
10pub enum MR0 {
11    ///0: Interrupt request line is masked
12    Masked = 0,
13    ///1: Interrupt request line is unmasked
14    Unmasked = 1,
15}
16impl From<MR0> for bool {
17    #[inline(always)]
18    fn from(variant: MR0) -> Self {
19        variant as u8 != 0
20    }
21}
22///Field `MR0` reader - Interrupt Mask on line 0
23pub type MR0_R = crate::BitReader<MR0>;
24impl MR0_R {
25    ///Get enumerated values variant
26    #[inline(always)]
27    pub const fn variant(&self) -> MR0 {
28        match self.bits {
29            false => MR0::Masked,
30            true => MR0::Unmasked,
31        }
32    }
33    ///Interrupt request line is masked
34    #[inline(always)]
35    pub fn is_masked(&self) -> bool {
36        *self == MR0::Masked
37    }
38    ///Interrupt request line is unmasked
39    #[inline(always)]
40    pub fn is_unmasked(&self) -> bool {
41        *self == MR0::Unmasked
42    }
43}
44///Field `MR0` writer - Interrupt Mask on line 0
45pub type MR0_W<'a, REG> = crate::BitWriter<'a, REG, MR0>;
46impl<'a, REG> MR0_W<'a, REG>
47where
48    REG: crate::Writable + crate::RegisterSpec,
49{
50    ///Interrupt request line is masked
51    #[inline(always)]
52    pub fn masked(self) -> &'a mut crate::W<REG> {
53        self.variant(MR0::Masked)
54    }
55    ///Interrupt request line is unmasked
56    #[inline(always)]
57    pub fn unmasked(self) -> &'a mut crate::W<REG> {
58        self.variant(MR0::Unmasked)
59    }
60}
61///Field `MR1` reader - Interrupt Mask on line 1
62pub use MR0_R as MR1_R;
63///Field `MR2` reader - Interrupt Mask on line 2
64pub use MR0_R as MR2_R;
65///Field `MR3` reader - Interrupt Mask on line 3
66pub use MR0_R as MR3_R;
67///Field `MR4` reader - Interrupt Mask on line 4
68pub use MR0_R as MR4_R;
69///Field `MR5` reader - Interrupt Mask on line 5
70pub use MR0_R as MR5_R;
71///Field `MR6` reader - Interrupt Mask on line 6
72pub use MR0_R as MR6_R;
73///Field `MR7` reader - Interrupt Mask on line 7
74pub use MR0_R as MR7_R;
75///Field `MR8` reader - Interrupt Mask on line 8
76pub use MR0_R as MR8_R;
77///Field `MR9` reader - Interrupt Mask on line 9
78pub use MR0_R as MR9_R;
79///Field `MR10` reader - Interrupt Mask on line 10
80pub use MR0_R as MR10_R;
81///Field `MR11` reader - Interrupt Mask on line 11
82pub use MR0_R as MR11_R;
83///Field `MR12` reader - Interrupt Mask on line 12
84pub use MR0_R as MR12_R;
85///Field `MR13` reader - Interrupt Mask on line 13
86pub use MR0_R as MR13_R;
87///Field `MR14` reader - Interrupt Mask on line 14
88pub use MR0_R as MR14_R;
89///Field `MR15` reader - Interrupt Mask on line 15
90pub use MR0_R as MR15_R;
91///Field `MR16` reader - Interrupt Mask on line 16
92pub use MR0_R as MR16_R;
93///Field `MR17` reader - Interrupt Mask on line 17
94pub use MR0_R as MR17_R;
95///Field `MR18` reader - Interrupt Mask on line 18
96pub use MR0_R as MR18_R;
97///Field `MR19` reader - Interrupt Mask on line 19
98pub use MR0_R as MR19_R;
99///Field `MR20` reader - Interrupt Mask on line 20
100pub use MR0_R as MR20_R;
101///Field `MR21` reader - Interrupt Mask on line 21
102pub use MR0_R as MR21_R;
103///Field `MR22` reader - Interrupt Mask on line 22
104pub use MR0_R as MR22_R;
105///Field `MR23` reader - Interrupt Mask on line 23
106pub use MR0_R as MR23_R;
107///Field `MR24` reader - Interrupt Mask on line 24
108pub use MR0_R as MR24_R;
109///Field `MR25` reader - Interrupt Mask on line 25
110pub use MR0_R as MR25_R;
111///Field `MR26` reader - Interrupt Mask on line 26
112pub use MR0_R as MR26_R;
113///Field `MR27` reader - Interrupt Mask on line 27
114pub use MR0_R as MR27_R;
115///Field `MR28` reader - Interrupt Mask on line 28
116pub use MR0_R as MR28_R;
117///Field `MR1` writer - Interrupt Mask on line 1
118pub use MR0_W as MR1_W;
119///Field `MR2` writer - Interrupt Mask on line 2
120pub use MR0_W as MR2_W;
121///Field `MR3` writer - Interrupt Mask on line 3
122pub use MR0_W as MR3_W;
123///Field `MR4` writer - Interrupt Mask on line 4
124pub use MR0_W as MR4_W;
125///Field `MR5` writer - Interrupt Mask on line 5
126pub use MR0_W as MR5_W;
127///Field `MR6` writer - Interrupt Mask on line 6
128pub use MR0_W as MR6_W;
129///Field `MR7` writer - Interrupt Mask on line 7
130pub use MR0_W as MR7_W;
131///Field `MR8` writer - Interrupt Mask on line 8
132pub use MR0_W as MR8_W;
133///Field `MR9` writer - Interrupt Mask on line 9
134pub use MR0_W as MR9_W;
135///Field `MR10` writer - Interrupt Mask on line 10
136pub use MR0_W as MR10_W;
137///Field `MR11` writer - Interrupt Mask on line 11
138pub use MR0_W as MR11_W;
139///Field `MR12` writer - Interrupt Mask on line 12
140pub use MR0_W as MR12_W;
141///Field `MR13` writer - Interrupt Mask on line 13
142pub use MR0_W as MR13_W;
143///Field `MR14` writer - Interrupt Mask on line 14
144pub use MR0_W as MR14_W;
145///Field `MR15` writer - Interrupt Mask on line 15
146pub use MR0_W as MR15_W;
147///Field `MR16` writer - Interrupt Mask on line 16
148pub use MR0_W as MR16_W;
149///Field `MR17` writer - Interrupt Mask on line 17
150pub use MR0_W as MR17_W;
151///Field `MR18` writer - Interrupt Mask on line 18
152pub use MR0_W as MR18_W;
153///Field `MR19` writer - Interrupt Mask on line 19
154pub use MR0_W as MR19_W;
155///Field `MR20` writer - Interrupt Mask on line 20
156pub use MR0_W as MR20_W;
157///Field `MR21` writer - Interrupt Mask on line 21
158pub use MR0_W as MR21_W;
159///Field `MR22` writer - Interrupt Mask on line 22
160pub use MR0_W as MR22_W;
161///Field `MR23` writer - Interrupt Mask on line 23
162pub use MR0_W as MR23_W;
163///Field `MR24` writer - Interrupt Mask on line 24
164pub use MR0_W as MR24_W;
165///Field `MR25` writer - Interrupt Mask on line 25
166pub use MR0_W as MR25_W;
167///Field `MR26` writer - Interrupt Mask on line 26
168pub use MR0_W as MR26_W;
169///Field `MR27` writer - Interrupt Mask on line 27
170pub use MR0_W as MR27_W;
171///Field `MR28` writer - Interrupt Mask on line 28
172pub use MR0_W as MR28_W;
173impl R {
174    ///Bit 0 - Interrupt Mask on line 0
175    #[inline(always)]
176    pub fn mr0(&self) -> MR0_R {
177        MR0_R::new((self.bits & 1) != 0)
178    }
179    ///Bit 1 - Interrupt Mask on line 1
180    #[inline(always)]
181    pub fn mr1(&self) -> MR1_R {
182        MR1_R::new(((self.bits >> 1) & 1) != 0)
183    }
184    ///Bit 2 - Interrupt Mask on line 2
185    #[inline(always)]
186    pub fn mr2(&self) -> MR2_R {
187        MR2_R::new(((self.bits >> 2) & 1) != 0)
188    }
189    ///Bit 3 - Interrupt Mask on line 3
190    #[inline(always)]
191    pub fn mr3(&self) -> MR3_R {
192        MR3_R::new(((self.bits >> 3) & 1) != 0)
193    }
194    ///Bit 4 - Interrupt Mask on line 4
195    #[inline(always)]
196    pub fn mr4(&self) -> MR4_R {
197        MR4_R::new(((self.bits >> 4) & 1) != 0)
198    }
199    ///Bit 5 - Interrupt Mask on line 5
200    #[inline(always)]
201    pub fn mr5(&self) -> MR5_R {
202        MR5_R::new(((self.bits >> 5) & 1) != 0)
203    }
204    ///Bit 6 - Interrupt Mask on line 6
205    #[inline(always)]
206    pub fn mr6(&self) -> MR6_R {
207        MR6_R::new(((self.bits >> 6) & 1) != 0)
208    }
209    ///Bit 7 - Interrupt Mask on line 7
210    #[inline(always)]
211    pub fn mr7(&self) -> MR7_R {
212        MR7_R::new(((self.bits >> 7) & 1) != 0)
213    }
214    ///Bit 8 - Interrupt Mask on line 8
215    #[inline(always)]
216    pub fn mr8(&self) -> MR8_R {
217        MR8_R::new(((self.bits >> 8) & 1) != 0)
218    }
219    ///Bit 9 - Interrupt Mask on line 9
220    #[inline(always)]
221    pub fn mr9(&self) -> MR9_R {
222        MR9_R::new(((self.bits >> 9) & 1) != 0)
223    }
224    ///Bit 10 - Interrupt Mask on line 10
225    #[inline(always)]
226    pub fn mr10(&self) -> MR10_R {
227        MR10_R::new(((self.bits >> 10) & 1) != 0)
228    }
229    ///Bit 11 - Interrupt Mask on line 11
230    #[inline(always)]
231    pub fn mr11(&self) -> MR11_R {
232        MR11_R::new(((self.bits >> 11) & 1) != 0)
233    }
234    ///Bit 12 - Interrupt Mask on line 12
235    #[inline(always)]
236    pub fn mr12(&self) -> MR12_R {
237        MR12_R::new(((self.bits >> 12) & 1) != 0)
238    }
239    ///Bit 13 - Interrupt Mask on line 13
240    #[inline(always)]
241    pub fn mr13(&self) -> MR13_R {
242        MR13_R::new(((self.bits >> 13) & 1) != 0)
243    }
244    ///Bit 14 - Interrupt Mask on line 14
245    #[inline(always)]
246    pub fn mr14(&self) -> MR14_R {
247        MR14_R::new(((self.bits >> 14) & 1) != 0)
248    }
249    ///Bit 15 - Interrupt Mask on line 15
250    #[inline(always)]
251    pub fn mr15(&self) -> MR15_R {
252        MR15_R::new(((self.bits >> 15) & 1) != 0)
253    }
254    ///Bit 16 - Interrupt Mask on line 16
255    #[inline(always)]
256    pub fn mr16(&self) -> MR16_R {
257        MR16_R::new(((self.bits >> 16) & 1) != 0)
258    }
259    ///Bit 17 - Interrupt Mask on line 17
260    #[inline(always)]
261    pub fn mr17(&self) -> MR17_R {
262        MR17_R::new(((self.bits >> 17) & 1) != 0)
263    }
264    ///Bit 18 - Interrupt Mask on line 18
265    #[inline(always)]
266    pub fn mr18(&self) -> MR18_R {
267        MR18_R::new(((self.bits >> 18) & 1) != 0)
268    }
269    ///Bit 19 - Interrupt Mask on line 19
270    #[inline(always)]
271    pub fn mr19(&self) -> MR19_R {
272        MR19_R::new(((self.bits >> 19) & 1) != 0)
273    }
274    ///Bit 20 - Interrupt Mask on line 20
275    #[inline(always)]
276    pub fn mr20(&self) -> MR20_R {
277        MR20_R::new(((self.bits >> 20) & 1) != 0)
278    }
279    ///Bit 21 - Interrupt Mask on line 21
280    #[inline(always)]
281    pub fn mr21(&self) -> MR21_R {
282        MR21_R::new(((self.bits >> 21) & 1) != 0)
283    }
284    ///Bit 22 - Interrupt Mask on line 22
285    #[inline(always)]
286    pub fn mr22(&self) -> MR22_R {
287        MR22_R::new(((self.bits >> 22) & 1) != 0)
288    }
289    ///Bit 23 - Interrupt Mask on line 23
290    #[inline(always)]
291    pub fn mr23(&self) -> MR23_R {
292        MR23_R::new(((self.bits >> 23) & 1) != 0)
293    }
294    ///Bit 24 - Interrupt Mask on line 24
295    #[inline(always)]
296    pub fn mr24(&self) -> MR24_R {
297        MR24_R::new(((self.bits >> 24) & 1) != 0)
298    }
299    ///Bit 25 - Interrupt Mask on line 25
300    #[inline(always)]
301    pub fn mr25(&self) -> MR25_R {
302        MR25_R::new(((self.bits >> 25) & 1) != 0)
303    }
304    ///Bit 26 - Interrupt Mask on line 26
305    #[inline(always)]
306    pub fn mr26(&self) -> MR26_R {
307        MR26_R::new(((self.bits >> 26) & 1) != 0)
308    }
309    ///Bit 27 - Interrupt Mask on line 27
310    #[inline(always)]
311    pub fn mr27(&self) -> MR27_R {
312        MR27_R::new(((self.bits >> 27) & 1) != 0)
313    }
314    ///Bit 28 - Interrupt Mask on line 28
315    #[inline(always)]
316    pub fn mr28(&self) -> MR28_R {
317        MR28_R::new(((self.bits >> 28) & 1) != 0)
318    }
319}
320impl core::fmt::Debug for R {
321    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
322        f.debug_struct("IMR")
323            .field("mr0", &self.mr0())
324            .field("mr1", &self.mr1())
325            .field("mr2", &self.mr2())
326            .field("mr3", &self.mr3())
327            .field("mr4", &self.mr4())
328            .field("mr5", &self.mr5())
329            .field("mr6", &self.mr6())
330            .field("mr7", &self.mr7())
331            .field("mr8", &self.mr8())
332            .field("mr9", &self.mr9())
333            .field("mr10", &self.mr10())
334            .field("mr11", &self.mr11())
335            .field("mr12", &self.mr12())
336            .field("mr13", &self.mr13())
337            .field("mr14", &self.mr14())
338            .field("mr15", &self.mr15())
339            .field("mr16", &self.mr16())
340            .field("mr17", &self.mr17())
341            .field("mr18", &self.mr18())
342            .field("mr19", &self.mr19())
343            .field("mr20", &self.mr20())
344            .field("mr21", &self.mr21())
345            .field("mr22", &self.mr22())
346            .field("mr23", &self.mr23())
347            .field("mr24", &self.mr24())
348            .field("mr25", &self.mr25())
349            .field("mr26", &self.mr26())
350            .field("mr27", &self.mr27())
351            .field("mr28", &self.mr28())
352            .finish()
353    }
354}
355impl W {
356    ///Bit 0 - Interrupt Mask on line 0
357    #[inline(always)]
358    pub fn mr0(&mut self) -> MR0_W<IMRrs> {
359        MR0_W::new(self, 0)
360    }
361    ///Bit 1 - Interrupt Mask on line 1
362    #[inline(always)]
363    pub fn mr1(&mut self) -> MR1_W<IMRrs> {
364        MR1_W::new(self, 1)
365    }
366    ///Bit 2 - Interrupt Mask on line 2
367    #[inline(always)]
368    pub fn mr2(&mut self) -> MR2_W<IMRrs> {
369        MR2_W::new(self, 2)
370    }
371    ///Bit 3 - Interrupt Mask on line 3
372    #[inline(always)]
373    pub fn mr3(&mut self) -> MR3_W<IMRrs> {
374        MR3_W::new(self, 3)
375    }
376    ///Bit 4 - Interrupt Mask on line 4
377    #[inline(always)]
378    pub fn mr4(&mut self) -> MR4_W<IMRrs> {
379        MR4_W::new(self, 4)
380    }
381    ///Bit 5 - Interrupt Mask on line 5
382    #[inline(always)]
383    pub fn mr5(&mut self) -> MR5_W<IMRrs> {
384        MR5_W::new(self, 5)
385    }
386    ///Bit 6 - Interrupt Mask on line 6
387    #[inline(always)]
388    pub fn mr6(&mut self) -> MR6_W<IMRrs> {
389        MR6_W::new(self, 6)
390    }
391    ///Bit 7 - Interrupt Mask on line 7
392    #[inline(always)]
393    pub fn mr7(&mut self) -> MR7_W<IMRrs> {
394        MR7_W::new(self, 7)
395    }
396    ///Bit 8 - Interrupt Mask on line 8
397    #[inline(always)]
398    pub fn mr8(&mut self) -> MR8_W<IMRrs> {
399        MR8_W::new(self, 8)
400    }
401    ///Bit 9 - Interrupt Mask on line 9
402    #[inline(always)]
403    pub fn mr9(&mut self) -> MR9_W<IMRrs> {
404        MR9_W::new(self, 9)
405    }
406    ///Bit 10 - Interrupt Mask on line 10
407    #[inline(always)]
408    pub fn mr10(&mut self) -> MR10_W<IMRrs> {
409        MR10_W::new(self, 10)
410    }
411    ///Bit 11 - Interrupt Mask on line 11
412    #[inline(always)]
413    pub fn mr11(&mut self) -> MR11_W<IMRrs> {
414        MR11_W::new(self, 11)
415    }
416    ///Bit 12 - Interrupt Mask on line 12
417    #[inline(always)]
418    pub fn mr12(&mut self) -> MR12_W<IMRrs> {
419        MR12_W::new(self, 12)
420    }
421    ///Bit 13 - Interrupt Mask on line 13
422    #[inline(always)]
423    pub fn mr13(&mut self) -> MR13_W<IMRrs> {
424        MR13_W::new(self, 13)
425    }
426    ///Bit 14 - Interrupt Mask on line 14
427    #[inline(always)]
428    pub fn mr14(&mut self) -> MR14_W<IMRrs> {
429        MR14_W::new(self, 14)
430    }
431    ///Bit 15 - Interrupt Mask on line 15
432    #[inline(always)]
433    pub fn mr15(&mut self) -> MR15_W<IMRrs> {
434        MR15_W::new(self, 15)
435    }
436    ///Bit 16 - Interrupt Mask on line 16
437    #[inline(always)]
438    pub fn mr16(&mut self) -> MR16_W<IMRrs> {
439        MR16_W::new(self, 16)
440    }
441    ///Bit 17 - Interrupt Mask on line 17
442    #[inline(always)]
443    pub fn mr17(&mut self) -> MR17_W<IMRrs> {
444        MR17_W::new(self, 17)
445    }
446    ///Bit 18 - Interrupt Mask on line 18
447    #[inline(always)]
448    pub fn mr18(&mut self) -> MR18_W<IMRrs> {
449        MR18_W::new(self, 18)
450    }
451    ///Bit 19 - Interrupt Mask on line 19
452    #[inline(always)]
453    pub fn mr19(&mut self) -> MR19_W<IMRrs> {
454        MR19_W::new(self, 19)
455    }
456    ///Bit 20 - Interrupt Mask on line 20
457    #[inline(always)]
458    pub fn mr20(&mut self) -> MR20_W<IMRrs> {
459        MR20_W::new(self, 20)
460    }
461    ///Bit 21 - Interrupt Mask on line 21
462    #[inline(always)]
463    pub fn mr21(&mut self) -> MR21_W<IMRrs> {
464        MR21_W::new(self, 21)
465    }
466    ///Bit 22 - Interrupt Mask on line 22
467    #[inline(always)]
468    pub fn mr22(&mut self) -> MR22_W<IMRrs> {
469        MR22_W::new(self, 22)
470    }
471    ///Bit 23 - Interrupt Mask on line 23
472    #[inline(always)]
473    pub fn mr23(&mut self) -> MR23_W<IMRrs> {
474        MR23_W::new(self, 23)
475    }
476    ///Bit 24 - Interrupt Mask on line 24
477    #[inline(always)]
478    pub fn mr24(&mut self) -> MR24_W<IMRrs> {
479        MR24_W::new(self, 24)
480    }
481    ///Bit 25 - Interrupt Mask on line 25
482    #[inline(always)]
483    pub fn mr25(&mut self) -> MR25_W<IMRrs> {
484        MR25_W::new(self, 25)
485    }
486    ///Bit 26 - Interrupt Mask on line 26
487    #[inline(always)]
488    pub fn mr26(&mut self) -> MR26_W<IMRrs> {
489        MR26_W::new(self, 26)
490    }
491    ///Bit 27 - Interrupt Mask on line 27
492    #[inline(always)]
493    pub fn mr27(&mut self) -> MR27_W<IMRrs> {
494        MR27_W::new(self, 27)
495    }
496    ///Bit 28 - Interrupt Mask on line 28
497    #[inline(always)]
498    pub fn mr28(&mut self) -> MR28_W<IMRrs> {
499        MR28_W::new(self, 28)
500    }
501}
502/**Interrupt mask register (EXTI_IMR)
503
504You can [`read`](crate::Reg::read) this register and get [`imr::R`](R). You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`imr::W`](W). You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).
505
506See register [structure](https://stm32-rs.github.io/stm32-rs/STM32F373.html#EXTI:IMR)*/
507pub struct IMRrs;
508impl crate::RegisterSpec for IMRrs {
509    type Ux = u32;
510}
511///`read()` method returns [`imr::R`](R) reader structure
512impl crate::Readable for IMRrs {}
513///`write(|w| ..)` method takes [`imr::W`](W) writer structure
514impl crate::Writable for IMRrs {
515    type Safety = crate::Unsafe;
516    const ZERO_TO_MODIFY_FIELDS_BITMAP: u32 = 0;
517    const ONE_TO_MODIFY_FIELDS_BITMAP: u32 = 0;
518}
519///`reset()` method sets IMR to value 0x1f80_0000
520impl crate::Resettable for IMRrs {
521    const RESET_VALUE: u32 = 0x1f80_0000;
522}