#![no_std]
pub mod prelude {
pub use nrf52840_hal::prelude::*;
}
use nrf52840_hal::{
gpio::{p0, p1, Floating, Input},
prelude::*,
target::{self as pac, CorePeripherals, Peripherals},
};
#[allow(non_snake_case)]
pub struct Board {
pub pins: Pins,
pub CBP: pac::CBP,
pub CPUID: pac::CPUID,
pub DCB: pac::DCB,
pub DWT: pac::DWT,
pub FPB: pac::FPB,
pub FPU: pac::FPU,
pub ITM: pac::ITM,
pub MPU: pac::MPU,
pub NVIC: pac::NVIC,
pub SCB: pac::SCB,
pub SYST: pac::SYST,
pub TPIU: pac::TPIU,
pub FICR: pac::FICR,
pub UICR: pac::UICR,
pub POWER: pac::POWER,
pub CLOCK: pac::CLOCK,
pub RADIO: pac::RADIO,
pub UART0: pac::UART0,
pub SPIM0: pac::SPIM0,
pub SPIS0: pac::SPIS0,
pub TWIM0: pac::TWIM0,
pub TWIS0: pac::TWIS0,
pub SPI0: pac::SPI0,
pub TWI0: pac::TWI0,
pub SPIM1: pac::SPIM1,
pub SPIS1: pac::SPIS1,
pub TWIS1: pac::TWIS1,
pub SPI1: pac::SPI1,
pub TWI1: pac::TWI1,
pub NFCT: pac::NFCT,
pub GPIOTE: pac::GPIOTE,
pub SAADC: pac::SAADC,
pub TIMER0: pac::TIMER0,
pub TIMER1: pac::TIMER1,
pub TIMER2: pac::TIMER2,
pub RTC0: pac::RTC0,
pub TEMP: pac::TEMP,
pub RNG: pac::RNG,
pub ECB: pac::ECB,
pub CCM: pac::CCM,
pub AAR: pac::AAR,
pub WDT: pac::WDT,
pub RTC1: pac::RTC1,
pub QDEC: pac::QDEC,
pub COMP: pac::COMP,
pub LPCOMP: pac::LPCOMP,
pub SWI0: pac::SWI0,
pub EGU0: pac::EGU0,
pub SWI1: pac::SWI1,
pub EGU1: pac::EGU1,
pub SWI2: pac::SWI2,
pub EGU2: pac::EGU2,
pub SWI3: pac::SWI3,
pub EGU3: pac::EGU3,
pub SWI4: pac::SWI4,
pub EGU4: pac::EGU4,
pub SWI5: pac::SWI5,
pub EGU5: pac::EGU5,
pub TIMER3: pac::TIMER3,
pub TIMER4: pac::TIMER4,
pub PWM0: pac::PWM0,
pub PDM: pac::PDM,
pub NVMC: pac::NVMC,
pub PPI: pac::PPI,
pub MWU: pac::MWU,
pub PWM1: pac::PWM1,
pub PWM2: pac::PWM2,
pub RTC2: pac::RTC2,
pub I2S: pac::I2S,
}
impl Board {
pub fn take() -> Option<Self> {
Some(Self::new(CorePeripherals::take()?, Peripherals::take()?))
}
pub unsafe fn steal() -> Self {
Self::new(CorePeripherals::steal(), Peripherals::steal())
}
pub fn new(cp: CorePeripherals, p: Peripherals) -> Self {
let pins0 = p.P0.split();
let pins1 = p.P1.split();
Self {
pins: Pins {
rst: pins0.p0_18,
mode: pins0.p0_11,
a0: pins0.p0_03,
a1: pins0.p0_04,
a2: pins0.p0_28,
a3: pins0.p0_29,
a4: pins0.p0_30,
a5: pins0.p0_31,
sck: pins1.p1_15,
mosi: pins1.p1_13,
miso: pins1.p1_14,
rx: pins0.p0_08,
tx: pins0.p0_06,
d0: pins0.p0_26,
d1: pins0.p0_27,
d2: pins1.p1_01,
d3: pins1.p1_02,
d4: pins1.p1_08,
d5: pins1.p1_10,
d6: pins1.p1_11,
d7: pins1.p1_12,
d8: pins1.p1_03,
},
CBP: cp.CBP,
CPUID: cp.CPUID,
DCB: cp.DCB,
DWT: cp.DWT,
FPB: cp.FPB,
FPU: cp.FPU,
ITM: cp.ITM,
MPU: cp.MPU,
NVIC: cp.NVIC,
SCB: cp.SCB,
SYST: cp.SYST,
TPIU: cp.TPIU,
FICR: p.FICR,
UICR: p.UICR,
POWER: p.POWER,
CLOCK: p.CLOCK,
RADIO: p.RADIO,
UART0: p.UART0,
SPIM0: p.SPIM0,
SPIS0: p.SPIS0,
TWIM0: p.TWIM0,
TWIS0: p.TWIS0,
SPI0: p.SPI0,
TWI0: p.TWI0,
SPIM1: p.SPIM1,
SPIS1: p.SPIS1,
TWIS1: p.TWIS1,
SPI1: p.SPI1,
TWI1: p.TWI1,
NFCT: p.NFCT,
GPIOTE: p.GPIOTE,
SAADC: p.SAADC,
TIMER0: p.TIMER0,
TIMER1: p.TIMER1,
TIMER2: p.TIMER2,
RTC0: p.RTC0,
TEMP: p.TEMP,
RNG: p.RNG,
ECB: p.ECB,
CCM: p.CCM,
AAR: p.AAR,
WDT: p.WDT,
RTC1: p.RTC1,
QDEC: p.QDEC,
COMP: p.COMP,
LPCOMP: p.LPCOMP,
SWI0: p.SWI0,
EGU0: p.EGU0,
SWI1: p.SWI1,
EGU1: p.EGU1,
SWI2: p.SWI2,
EGU2: p.EGU2,
SWI3: p.SWI3,
EGU3: p.EGU3,
SWI4: p.SWI4,
EGU4: p.EGU4,
SWI5: p.SWI5,
EGU5: p.EGU5,
TIMER3: p.TIMER3,
TIMER4: p.TIMER4,
PWM0: p.PWM0,
PDM: p.PDM,
NVMC: p.NVMC,
PPI: p.PPI,
MWU: p.MWU,
PWM1: p.PWM1,
PWM2: p.PWM2,
RTC2: p.RTC2,
I2S: p.I2S,
}
}
}
pub struct Pins {
pub rst: p0::P0_18<Input<Floating>>,
pub mode: p0::P0_11<Input<Floating>>,
pub a0: p0::P0_03<Input<Floating>>,
pub a1: p0::P0_04<Input<Floating>>,
pub a2: p0::P0_28<Input<Floating>>,
pub a3: p0::P0_29<Input<Floating>>,
pub a4: p0::P0_30<Input<Floating>>,
pub a5: p0::P0_31<Input<Floating>>,
pub sck: p1::P1_15<Input<Floating>>,
pub mosi: p1::P1_13<Input<Floating>>,
pub miso: p1::P1_14<Input<Floating>>,
pub rx: p0::P0_08<Input<Floating>>,
pub tx: p0::P0_06<Input<Floating>>,
pub d0: p0::P0_26<Input<Floating>>,
pub d1: p0::P0_27<Input<Floating>>,
pub d2: p1::P1_01<Input<Floating>>,
pub d3: p1::P1_02<Input<Floating>>,
pub d4: p1::P1_08<Input<Floating>>,
pub d5: p1::P1_10<Input<Floating>>,
pub d6: p1::P1_11<Input<Floating>>,
pub d7: p1::P1_12<Input<Floating>>,
pub d8: p1::P1_03<Input<Floating>>,
}