efm32pg12_pac/cmu/
ctrl.rs1#[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}