1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#![no_std]
pub use imxrt_ral as ral;
pub mod ccm;
pub mod dma;
pub mod gpio;
pub mod gpt;
pub mod i2c;
pub mod iomuxc;
pub mod pit;
pub mod pwm;
pub mod spi;
pub mod uart;
pub mod dcdc {
use imxrt_ral as ral;
pub struct DCDC(pub(crate) ral::dcdc::Instance);
impl DCDC {
pub fn raw(&mut self) -> &ral::dcdc::Instance {
&self.0
}
}
}
pub struct Peripherals {
pub iomuxc: iomuxc::IOMUXC,
pub ccm: ccm::CCM,
pub pit: pit::UnclockedPIT,
pub dcdc: dcdc::DCDC,
pub pwm1: pwm::Unclocked<pwm::module::_1>,
pub pwm2: pwm::Unclocked<pwm::module::_2>,
pub pwm3: pwm::Unclocked<pwm::module::_3>,
pub pwm4: pwm::Unclocked<pwm::module::_4>,
pub i2c: i2c::Unclocked,
pub uart: uart::Unclocked,
pub spi: spi::Unclocked,
pub gpt1: gpt::Unclocked,
pub gpt2: gpt::Unclocked,
pub dma: dma::Unclocked,
}
impl Peripherals {
pub fn take() -> Option<Self> {
let p = Peripherals {
iomuxc: iomuxc::IOMUXC::new(ral::iomuxc::IOMUXC::take()?),
ccm: ccm::CCM::new(ral::ccm::CCM::take()?, ral::ccm_analog::CCM_ANALOG::take()?),
pit: pit::UnclockedPIT::new(ral::pit::PIT::take()?),
dcdc: dcdc::DCDC(ral::dcdc::DCDC::take()?),
pwm1: pwm::Unclocked::new(ral::pwm::PWM1::take()?),
pwm2: pwm::Unclocked::new(ral::pwm::PWM2::take()?),
pwm3: pwm::Unclocked::new(ral::pwm::PWM3::take()?),
pwm4: pwm::Unclocked::new(ral::pwm::PWM4::take()?),
i2c: i2c::Unclocked {
i2c1: ral::lpi2c::LPI2C1::take()?,
i2c2: ral::lpi2c::LPI2C2::take()?,
i2c3: ral::lpi2c::LPI2C3::take()?,
i2c4: ral::lpi2c::LPI2C4::take()?,
},
uart: uart::Unclocked {
uart1: ral::lpuart::LPUART1::take()?,
uart2: ral::lpuart::LPUART2::take()?,
uart3: ral::lpuart::LPUART3::take()?,
uart4: ral::lpuart::LPUART4::take()?,
uart5: ral::lpuart::LPUART5::take()?,
uart6: ral::lpuart::LPUART6::take()?,
uart7: ral::lpuart::LPUART7::take()?,
uart8: ral::lpuart::LPUART8::take()?,
},
spi: spi::Unclocked {
spi1: ral::lpspi::LPSPI1::take()?,
spi2: ral::lpspi::LPSPI2::take()?,
spi3: ral::lpspi::LPSPI3::take()?,
spi4: ral::lpspi::LPSPI4::take()?,
},
gpt1: gpt::Unclocked::one(ral::gpt::GPT1::take()?),
gpt2: gpt::Unclocked::two(ral::gpt::GPT2::take()?),
dma: dma::Unclocked::new(ral::dma0::DMA0::take()?, ral::dmamux::DMAMUX::take()?),
};
Some(p)
}
}