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
99
100
101
102
103
#![no_std]
use core::{
panic::PanicInfo,
sync::atomic::{self, Ordering},
};
use cortex_m::asm;
pub use embedded_hal::*;
use log::Log;
pub use nrf52810_hal as hal;
use nrf52810_hal::gpio::*;
pub use nrf52810_pac as pac;
pub use nrf52810_pac::{interrupt, Interrupt, Peripherals, NVIC_PRIO_BITS};
use rtt_target::rprintln;
pub struct Logger;
impl Log for Logger {
fn enabled(&self, metadata: &log::Metadata) -> bool {
metadata.level() <= log::STATIC_MAX_LEVEL
}
fn log(&self, record: &log::Record) {
if !self.enabled(record.metadata()) {
return;
}
rprintln!(
"{}:{} -- {}",
record.level(),
record.target(),
record.args()
);
}
fn flush(&self) {}
}
pub fn exit() -> ! {
log::info!("`Завершение программы ...`");
atomic::compiler_fence(Ordering::SeqCst);
loop {
asm::bkpt()
}
}
#[panic_handler]
fn panic(info: &PanicInfo) -> ! {
rprintln!("{}", info);
asm::udf()
}
pub struct CrabikPins {
pub d1: p0::P0_09<Disconnected>,
pub d2: p0::P0_10<Disconnected>,
pub d3: p0::P0_12<Disconnected>,
pub d4: p0::P0_14<Disconnected>,
pub d5: p0::P0_15<Disconnected>,
pub d6: p0::P0_16<Disconnected>,
pub d7: p0::P0_18<Disconnected>,
pub d8: p0::P0_20<Disconnected>,
pub d9: p0::P0_25<Disconnected>,
pub d10: p0::P0_00<Disconnected>,
pub d11: p0::P0_01<Disconnected>,
pub d12: p0::P0_06<Disconnected>,
pub a0: p0::P0_05<Disconnected>,
pub a1: p0::P0_04<Disconnected>,
pub a2: p0::P0_30<Disconnected>,
pub a3: p0::P0_28<Disconnected>,
}
#[macro_export]
macro_rules! rename_pins {
(
$PX:ident
) => {
CrabikPins {
d1: $PX.p0_09,
d2: $PX.p0_10,
d3: $PX.p0_12,
d4: $PX.p0_14,
d5: $PX.p0_15,
d6: $PX.p0_16,
d7: $PX.p0_18,
d8: $PX.p0_20,
d9: $PX.p0_25,
d10: $PX.p0_00,
d11: $PX.p0_01,
d12: $PX.p0_06,
a0: $PX.p0_05,
a1: $PX.p0_04,
a2: $PX.p0_30,
a3: $PX.p0_28,
}
};
}