efm32pg12_pac/cmu/
ctrl.rs

1#[doc = "Reader of register CTRL"]
2pub type R = crate::R<u32, super::CTRL>;
3#[doc = "Writer for register CTRL"]
4pub type W = crate::W<u32, super::CTRL>;
5#[doc = "Register CTRL `reset()`'s with value 0x0030_0000"]
6impl crate::ResetValue for super::CTRL {
7    type Type = u32;
8    #[inline(always)]
9    fn reset_value() -> Self::Type {
10        0x0030_0000
11    }
12}
13#[doc = "Clock Output Select 0\n\nValue on reset: 0"]
14#[derive(Clone, Copy, Debug, PartialEq)]
15#[repr(u8)]
16pub enum CLKOUTSEL0_A {
17    #[doc = "0: Disabled"]
18    DISABLED = 0,
19    #[doc = "1: ULFRCO (directly from oscillator)"]
20    ULFRCO = 1,
21    #[doc = "2: LFRCO (directly from oscillator)"]
22    LFRCO = 2,
23    #[doc = "3: LFXO (directly from oscillator)"]
24    LFXO = 3,
25    #[doc = "6: HFXO (directly from oscillator)"]
26    HFXO = 6,
27    #[doc = "7: HFEXPCLK"]
28    HFEXPCLK = 7,
29    #[doc = "9: ULFRCO (qualified)"]
30    ULFRCOQ = 9,
31    #[doc = "10: LFRCO (qualified)"]
32    LFRCOQ = 10,
33    #[doc = "11: LFXO (qualified)"]
34    LFXOQ = 11,
35    #[doc = "12: HFRCO (qualified)"]
36    HFRCOQ = 12,
37    #[doc = "13: AUXHFRCO (qualified)"]
38    AUXHFRCOQ = 13,
39    #[doc = "14: HFXO (qualified)"]
40    HFXOQ = 14,
41    #[doc = "15: HFSRCCLK"]
42    HFSRCCLK = 15,
43}
44impl From<CLKOUTSEL0_A> for u8 {
45    #[inline(always)]
46    fn from(variant: CLKOUTSEL0_A) -> Self {
47        variant as _
48    }
49}
50#[doc = "Reader of field `CLKOUTSEL0`"]
51pub type CLKOUTSEL0_R = crate::R<u8, CLKOUTSEL0_A>;
52impl CLKOUTSEL0_R {
53    #[doc = r"Get enumerated values variant"]
54    #[inline(always)]
55    pub fn variant(&self) -> crate::Variant<u8, CLKOUTSEL0_A> {
56        use crate::Variant::*;
57        match self.bits {
58            0 => Val(CLKOUTSEL0_A::DISABLED),
59            1 => Val(CLKOUTSEL0_A::ULFRCO),
60            2 => Val(CLKOUTSEL0_A::LFRCO),
61            3 => Val(CLKOUTSEL0_A::LFXO),
62            6 => Val(CLKOUTSEL0_A::HFXO),
63            7 => Val(CLKOUTSEL0_A::HFEXPCLK),
64            9 => Val(CLKOUTSEL0_A::ULFRCOQ),
65            10 => Val(CLKOUTSEL0_A::LFRCOQ),
66            11 => Val(CLKOUTSEL0_A::LFXOQ),
67            12 => Val(CLKOUTSEL0_A::HFRCOQ),
68            13 => Val(CLKOUTSEL0_A::AUXHFRCOQ),
69            14 => Val(CLKOUTSEL0_A::HFXOQ),
70            15 => Val(CLKOUTSEL0_A::HFSRCCLK),
71            i => Res(i),
72        }
73    }
74    #[doc = "Checks if the value of the field is `DISABLED`"]
75    #[inline(always)]
76    pub fn is_disabled(&self) -> bool {
77        *self == CLKOUTSEL0_A::DISABLED
78    }
79    #[doc = "Checks if the value of the field is `ULFRCO`"]
80    #[inline(always)]
81    pub fn is_ulfrco(&self) -> bool {
82        *self == CLKOUTSEL0_A::ULFRCO
83    }
84    #[doc = "Checks if the value of the field is `LFRCO`"]
85    #[inline(always)]
86    pub fn is_lfrco(&self) -> bool {
87        *self == CLKOUTSEL0_A::LFRCO
88    }
89    #[doc = "Checks if the value of the field is `LFXO`"]
90    #[inline(always)]
91    pub fn is_lfxo(&self) -> bool {
92        *self == CLKOUTSEL0_A::LFXO
93    }
94    #[doc = "Checks if the value of the field is `HFXO`"]
95    #[inline(always)]
96    pub fn is_hfxo(&self) -> bool {
97        *self == CLKOUTSEL0_A::HFXO
98    }
99    #[doc = "Checks if the value of the field is `HFEXPCLK`"]
100    #[inline(always)]
101    pub fn is_hfexpclk(&self) -> bool {
102        *self == CLKOUTSEL0_A::HFEXPCLK
103    }
104    #[doc = "Checks if the value of the field is `ULFRCOQ`"]
105    #[inline(always)]
106    pub fn is_ulfrcoq(&self) -> bool {
107        *self == CLKOUTSEL0_A::ULFRCOQ
108    }
109    #[doc = "Checks if the value of the field is `LFRCOQ`"]
110    #[inline(always)]
111    pub fn is_lfrcoq(&self) -> bool {
112        *self == CLKOUTSEL0_A::LFRCOQ
113    }
114    #[doc = "Checks if the value of the field is `LFXOQ`"]
115    #[inline(always)]
116    pub fn is_lfxoq(&self) -> bool {
117        *self == CLKOUTSEL0_A::LFXOQ
118    }
119    #[doc = "Checks if the value of the field is `HFRCOQ`"]
120    #[inline(always)]
121    pub fn is_hfrcoq(&self) -> bool {
122        *self == CLKOUTSEL0_A::HFRCOQ
123    }
124    #[doc = "Checks if the value of the field is `AUXHFRCOQ`"]
125    #[inline(always)]
126    pub fn is_auxhfrcoq(&self) -> bool {
127        *self == CLKOUTSEL0_A::AUXHFRCOQ
128    }
129    #[doc = "Checks if the value of the field is `HFXOQ`"]
130    #[inline(always)]
131    pub fn is_hfxoq(&self) -> bool {
132        *self == CLKOUTSEL0_A::HFXOQ
133    }
134    #[doc = "Checks if the value of the field is `HFSRCCLK`"]
135    #[inline(always)]
136    pub fn is_hfsrcclk(&self) -> bool {
137        *self == CLKOUTSEL0_A::HFSRCCLK
138    }
139}
140#[doc = "Write proxy for field `CLKOUTSEL0`"]
141pub struct CLKOUTSEL0_W<'a> {
142    w: &'a mut W,
143}
144impl<'a> CLKOUTSEL0_W<'a> {
145    #[doc = r"Writes `variant` to the field"]
146    #[inline(always)]
147    pub fn variant(self, variant: CLKOUTSEL0_A) -> &'a mut W {
148        unsafe { self.bits(variant.into()) }
149    }
150    #[doc = "Disabled"]
151    #[inline(always)]
152    pub fn disabled(self) -> &'a mut W {
153        self.variant(CLKOUTSEL0_A::DISABLED)
154    }
155    #[doc = "ULFRCO (directly from oscillator)"]
156    #[inline(always)]
157    pub fn ulfrco(self) -> &'a mut W {
158        self.variant(CLKOUTSEL0_A::ULFRCO)
159    }
160    #[doc = "LFRCO (directly from oscillator)"]
161    #[inline(always)]
162    pub fn lfrco(self) -> &'a mut W {
163        self.variant(CLKOUTSEL0_A::LFRCO)
164    }
165    #[doc = "LFXO (directly from oscillator)"]
166    #[inline(always)]
167    pub fn lfxo(self) -> &'a mut W {
168        self.variant(CLKOUTSEL0_A::LFXO)
169    }
170    #[doc = "HFXO (directly from oscillator)"]
171    #[inline(always)]
172    pub fn hfxo(self) -> &'a mut W {
173        self.variant(CLKOUTSEL0_A::HFXO)
174    }
175    #[doc = "HFEXPCLK"]
176    #[inline(always)]
177    pub fn hfexpclk(self) -> &'a mut W {
178        self.variant(CLKOUTSEL0_A::HFEXPCLK)
179    }
180    #[doc = "ULFRCO (qualified)"]
181    #[inline(always)]
182    pub fn ulfrcoq(self) -> &'a mut W {
183        self.variant(CLKOUTSEL0_A::ULFRCOQ)
184    }
185    #[doc = "LFRCO (qualified)"]
186    #[inline(always)]
187    pub fn lfrcoq(self) -> &'a mut W {
188        self.variant(CLKOUTSEL0_A::LFRCOQ)
189    }
190    #[doc = "LFXO (qualified)"]
191    #[inline(always)]
192    pub fn lfxoq(self) -> &'a mut W {
193        self.variant(CLKOUTSEL0_A::LFXOQ)
194    }
195    #[doc = "HFRCO (qualified)"]
196    #[inline(always)]
197    pub fn hfrcoq(self) -> &'a mut W {
198        self.variant(CLKOUTSEL0_A::HFRCOQ)
199    }
200    #[doc = "AUXHFRCO (qualified)"]
201    #[inline(always)]
202    pub fn auxhfrcoq(self) -> &'a mut W {
203        self.variant(CLKOUTSEL0_A::AUXHFRCOQ)
204    }
205    #[doc = "HFXO (qualified)"]
206    #[inline(always)]
207    pub fn hfxoq(self) -> &'a mut W {
208        self.variant(CLKOUTSEL0_A::HFXOQ)
209    }
210    #[doc = "HFSRCCLK"]
211    #[inline(always)]
212    pub fn hfsrcclk(self) -> &'a mut W {
213        self.variant(CLKOUTSEL0_A::HFSRCCLK)
214    }
215    #[doc = r"Writes raw bits to the field"]
216    #[inline(always)]
217    pub unsafe fn bits(self, value: u8) -> &'a mut W {
218        self.w.bits = (self.w.bits & !0x0f) | ((value as u32) & 0x0f);
219        self.w
220    }
221}
222#[doc = "Clock Output Select 1\n\nValue on reset: 0"]
223#[derive(Clone, Copy, Debug, PartialEq)]
224#[repr(u8)]
225pub enum CLKOUTSEL1_A {
226    #[doc = "0: Disabled"]
227    DISABLED = 0,
228    #[doc = "1: ULFRCO (directly from oscillator)"]
229    ULFRCO = 1,
230    #[doc = "2: LFRCO (directly from oscillator)"]
231    LFRCO = 2,
232    #[doc = "3: LFXO (directly from oscillator)"]
233    LFXO = 3,
234    #[doc = "6: HFXO (directly from oscillator)"]
235    HFXO = 6,
236    #[doc = "7: HFEXPCLK"]
237    HFEXPCLK = 7,
238    #[doc = "9: ULFRCO (qualified)"]
239    ULFRCOQ = 9,
240    #[doc = "10: LFRCO (qualified)"]
241    LFRCOQ = 10,
242    #[doc = "11: LFXO (qualified)"]
243    LFXOQ = 11,
244    #[doc = "12: HFRCO (qualified)"]
245    HFRCOQ = 12,
246    #[doc = "13: AUXHFRCO (qualified)"]
247    AUXHFRCOQ = 13,
248    #[doc = "14: HFXO (qualified)"]
249    HFXOQ = 14,
250    #[doc = "15: HFSRCCLK"]
251    HFSRCCLK = 15,
252}
253impl From<CLKOUTSEL1_A> for u8 {
254    #[inline(always)]
255    fn from(variant: CLKOUTSEL1_A) -> Self {
256        variant as _
257    }
258}
259#[doc = "Reader of field `CLKOUTSEL1`"]
260pub type CLKOUTSEL1_R = crate::R<u8, CLKOUTSEL1_A>;
261impl CLKOUTSEL1_R {
262    #[doc = r"Get enumerated values variant"]
263    #[inline(always)]
264    pub fn variant(&self) -> crate::Variant<u8, CLKOUTSEL1_A> {
265        use crate::Variant::*;
266        match self.bits {
267            0 => Val(CLKOUTSEL1_A::DISABLED),
268            1 => Val(CLKOUTSEL1_A::ULFRCO),
269            2 => Val(CLKOUTSEL1_A::LFRCO),
270            3 => Val(CLKOUTSEL1_A::LFXO),
271            6 => Val(CLKOUTSEL1_A::HFXO),
272            7 => Val(CLKOUTSEL1_A::HFEXPCLK),
273            9 => Val(CLKOUTSEL1_A::ULFRCOQ),
274            10 => Val(CLKOUTSEL1_A::LFRCOQ),
275            11 => Val(CLKOUTSEL1_A::LFXOQ),
276            12 => Val(CLKOUTSEL1_A::HFRCOQ),
277            13 => Val(CLKOUTSEL1_A::AUXHFRCOQ),
278            14 => Val(CLKOUTSEL1_A::HFXOQ),
279            15 => Val(CLKOUTSEL1_A::HFSRCCLK),
280            i => Res(i),
281        }
282    }
283    #[doc = "Checks if the value of the field is `DISABLED`"]
284    #[inline(always)]
285    pub fn is_disabled(&self) -> bool {
286        *self == CLKOUTSEL1_A::DISABLED
287    }
288    #[doc = "Checks if the value of the field is `ULFRCO`"]
289    #[inline(always)]
290    pub fn is_ulfrco(&self) -> bool {
291        *self == CLKOUTSEL1_A::ULFRCO
292    }
293    #[doc = "Checks if the value of the field is `LFRCO`"]
294    #[inline(always)]
295    pub fn is_lfrco(&self) -> bool {
296        *self == CLKOUTSEL1_A::LFRCO
297    }
298    #[doc = "Checks if the value of the field is `LFXO`"]
299    #[inline(always)]
300    pub fn is_lfxo(&self) -> bool {
301        *self == CLKOUTSEL1_A::LFXO
302    }
303    #[doc = "Checks if the value of the field is `HFXO`"]
304    #[inline(always)]
305    pub fn is_hfxo(&self) -> bool {
306        *self == CLKOUTSEL1_A::HFXO
307    }
308    #[doc = "Checks if the value of the field is `HFEXPCLK`"]
309    #[inline(always)]
310    pub fn is_hfexpclk(&self) -> bool {
311        *self == CLKOUTSEL1_A::HFEXPCLK
312    }
313    #[doc = "Checks if the value of the field is `ULFRCOQ`"]
314    #[inline(always)]
315    pub fn is_ulfrcoq(&self) -> bool {
316        *self == CLKOUTSEL1_A::ULFRCOQ
317    }
318    #[doc = "Checks if the value of the field is `LFRCOQ`"]
319    #[inline(always)]
320    pub fn is_lfrcoq(&self) -> bool {
321        *self == CLKOUTSEL1_A::LFRCOQ
322    }
323    #[doc = "Checks if the value of the field is `LFXOQ`"]
324    #[inline(always)]
325    pub fn is_lfxoq(&self) -> bool {
326        *self == CLKOUTSEL1_A::LFXOQ
327    }
328    #[doc = "Checks if the value of the field is `HFRCOQ`"]
329    #[inline(always)]
330    pub fn is_hfrcoq(&self) -> bool {
331        *self == CLKOUTSEL1_A::HFRCOQ
332    }
333    #[doc = "Checks if the value of the field is `AUXHFRCOQ`"]
334    #[inline(always)]
335    pub fn is_auxhfrcoq(&self) -> bool {
336        *self == CLKOUTSEL1_A::AUXHFRCOQ
337    }
338    #[doc = "Checks if the value of the field is `HFXOQ`"]
339    #[inline(always)]
340    pub fn is_hfxoq(&self) -> bool {
341        *self == CLKOUTSEL1_A::HFXOQ
342    }
343    #[doc = "Checks if the value of the field is `HFSRCCLK`"]
344    #[inline(always)]
345    pub fn is_hfsrcclk(&self) -> bool {
346        *self == CLKOUTSEL1_A::HFSRCCLK
347    }
348}
349#[doc = "Write proxy for field `CLKOUTSEL1`"]
350pub struct CLKOUTSEL1_W<'a> {
351    w: &'a mut W,
352}
353impl<'a> CLKOUTSEL1_W<'a> {
354    #[doc = r"Writes `variant` to the field"]
355    #[inline(always)]
356    pub fn variant(self, variant: CLKOUTSEL1_A) -> &'a mut W {
357        unsafe { self.bits(variant.into()) }
358    }
359    #[doc = "Disabled"]
360    #[inline(always)]
361    pub fn disabled(self) -> &'a mut W {
362        self.variant(CLKOUTSEL1_A::DISABLED)
363    }
364    #[doc = "ULFRCO (directly from oscillator)"]
365    #[inline(always)]
366    pub fn ulfrco(self) -> &'a mut W {
367        self.variant(CLKOUTSEL1_A::ULFRCO)
368    }
369    #[doc = "LFRCO (directly from oscillator)"]
370    #[inline(always)]
371    pub fn lfrco(self) -> &'a mut W {
372        self.variant(CLKOUTSEL1_A::LFRCO)
373    }
374    #[doc = "LFXO (directly from oscillator)"]
375    #[inline(always)]
376    pub fn lfxo(self) -> &'a mut W {
377        self.variant(CLKOUTSEL1_A::LFXO)
378    }
379    #[doc = "HFXO (directly from oscillator)"]
380    #[inline(always)]
381    pub fn hfxo(self) -> &'a mut W {
382        self.variant(CLKOUTSEL1_A::HFXO)
383    }
384    #[doc = "HFEXPCLK"]
385    #[inline(always)]
386    pub fn hfexpclk(self) -> &'a mut W {
387        self.variant(CLKOUTSEL1_A::HFEXPCLK)
388    }
389    #[doc = "ULFRCO (qualified)"]
390    #[inline(always)]
391    pub fn ulfrcoq(self) -> &'a mut W {
392        self.variant(CLKOUTSEL1_A::ULFRCOQ)
393    }
394    #[doc = "LFRCO (qualified)"]
395    #[inline(always)]
396    pub fn lfrcoq(self) -> &'a mut W {
397        self.variant(CLKOUTSEL1_A::LFRCOQ)
398    }
399    #[doc = "LFXO (qualified)"]
400    #[inline(always)]
401    pub fn lfxoq(self) -> &'a mut W {
402        self.variant(CLKOUTSEL1_A::LFXOQ)
403    }
404    #[doc = "HFRCO (qualified)"]
405    #[inline(always)]
406    pub fn hfrcoq(self) -> &'a mut W {
407        self.variant(CLKOUTSEL1_A::HFRCOQ)
408    }
409    #[doc = "AUXHFRCO (qualified)"]
410    #[inline(always)]
411    pub fn auxhfrcoq(self) -> &'a mut W {
412        self.variant(CLKOUTSEL1_A::AUXHFRCOQ)
413    }
414    #[doc = "HFXO (qualified)"]
415    #[inline(always)]
416    pub fn hfxoq(self) -> &'a mut W {
417        self.variant(CLKOUTSEL1_A::HFXOQ)
418    }
419    #[doc = "HFSRCCLK"]
420    #[inline(always)]
421    pub fn hfsrcclk(self) -> &'a mut W {
422        self.variant(CLKOUTSEL1_A::HFSRCCLK)
423    }
424    #[doc = r"Writes raw bits to the field"]
425    #[inline(always)]
426    pub unsafe fn bits(self, value: u8) -> &'a mut W {
427        self.w.bits = (self.w.bits & !(0x0f << 5)) | (((value as u32) & 0x0f) << 5);
428        self.w
429    }
430}
431#[doc = "Reader of field `WSHFLE`"]
432pub type WSHFLE_R = crate::R<bool, bool>;
433#[doc = "Write proxy for field `WSHFLE`"]
434pub struct WSHFLE_W<'a> {
435    w: &'a mut W,
436}
437impl<'a> WSHFLE_W<'a> {
438    #[doc = r"Sets the field bit"]
439    #[inline(always)]
440    pub fn set_bit(self) -> &'a mut W {
441        self.bit(true)
442    }
443    #[doc = r"Clears the field bit"]
444    #[inline(always)]
445    pub fn clear_bit(self) -> &'a mut W {
446        self.bit(false)
447    }
448    #[doc = r"Writes raw bits to the field"]
449    #[inline(always)]
450    pub fn bit(self, value: bool) -> &'a mut W {
451        self.w.bits = (self.w.bits & !(0x01 << 16)) | (((value as u32) & 0x01) << 16);
452        self.w
453    }
454}
455#[doc = "Reader of field `HFPERCLKEN`"]
456pub type HFPERCLKEN_R = crate::R<bool, bool>;
457#[doc = "Write proxy for field `HFPERCLKEN`"]
458pub struct HFPERCLKEN_W<'a> {
459    w: &'a mut W,
460}
461impl<'a> HFPERCLKEN_W<'a> {
462    #[doc = r"Sets the field bit"]
463    #[inline(always)]
464    pub fn set_bit(self) -> &'a mut W {
465        self.bit(true)
466    }
467    #[doc = r"Clears the field bit"]
468    #[inline(always)]
469    pub fn clear_bit(self) -> &'a mut W {
470        self.bit(false)
471    }
472    #[doc = r"Writes raw bits to the field"]
473    #[inline(always)]
474    pub fn bit(self, value: bool) -> &'a mut W {
475        self.w.bits = (self.w.bits & !(0x01 << 20)) | (((value as u32) & 0x01) << 20);
476        self.w
477    }
478}
479impl R {
480    #[doc = "Bits 0:3 - Clock Output Select 0"]
481    #[inline(always)]
482    pub fn clkoutsel0(&self) -> CLKOUTSEL0_R {
483        CLKOUTSEL0_R::new((self.bits & 0x0f) as u8)
484    }
485    #[doc = "Bits 5:8 - Clock Output Select 1"]
486    #[inline(always)]
487    pub fn clkoutsel1(&self) -> CLKOUTSEL1_R {
488        CLKOUTSEL1_R::new(((self.bits >> 5) & 0x0f) as u8)
489    }
490    #[doc = "Bit 16 - Wait State for High-Frequency LE Interface"]
491    #[inline(always)]
492    pub fn wshfle(&self) -> WSHFLE_R {
493        WSHFLE_R::new(((self.bits >> 16) & 0x01) != 0)
494    }
495    #[doc = "Bit 20 - HFPERCLK Enable"]
496    #[inline(always)]
497    pub fn hfperclken(&self) -> HFPERCLKEN_R {
498        HFPERCLKEN_R::new(((self.bits >> 20) & 0x01) != 0)
499    }
500}
501impl W {
502    #[doc = "Bits 0:3 - Clock Output Select 0"]
503    #[inline(always)]
504    pub fn clkoutsel0(&mut self) -> CLKOUTSEL0_W {
505        CLKOUTSEL0_W { w: self }
506    }
507    #[doc = "Bits 5:8 - Clock Output Select 1"]
508    #[inline(always)]
509    pub fn clkoutsel1(&mut self) -> CLKOUTSEL1_W {
510        CLKOUTSEL1_W { w: self }
511    }
512    #[doc = "Bit 16 - Wait State for High-Frequency LE Interface"]
513    #[inline(always)]
514    pub fn wshfle(&mut self) -> WSHFLE_W {
515        WSHFLE_W { w: self }
516    }
517    #[doc = "Bit 20 - HFPERCLK Enable"]
518    #[inline(always)]
519    pub fn hfperclken(&mut self) -> HFPERCLKEN_W {
520        HFPERCLKEN_W { w: self }
521    }
522}