Add init fn. Initializes hw and returns Peripherals.

This commit is contained in:
Dario Nieuwenhuis
2021-05-12 01:57:01 +02:00
parent bfc7f52e6d
commit 0310e4d458
24 changed files with 217 additions and 258 deletions

View File

@ -17,8 +17,7 @@ use embassy_nrf::Peripherals;
use embedded_hal::digital::v2::OutputPin;
#[embassy::main]
async fn main(spawner: Spawner) {
let p = Peripherals::take().unwrap();
async fn main(spawner: Spawner, p: Peripherals) {
let mut led = Output::new(p.P0_13, Level::Low, OutputDrive::Standard);
loop {

View File

@ -17,9 +17,7 @@ use example_common::*;
use futures::pin_mut;
#[embassy::main]
async fn main(spawner: Spawner) {
let p = Peripherals::take().unwrap();
async fn main(spawner: Spawner, p: Peripherals) {
let mut config = uarte::Config::default();
config.parity = uarte::Parity::EXCLUDED;
config.baudrate = uarte::Baudrate::BAUD115200;

View File

@ -13,7 +13,7 @@ use core::task::Poll;
use defmt::panic;
use embassy::executor::Spawner;
use embassy::time::{Duration, Instant, Timer};
use embassy_nrf::interrupt;
use embassy_nrf::{interrupt, Peripherals};
#[embassy::task]
async fn run1() {
@ -40,7 +40,7 @@ async fn run3() {
}
#[embassy::main]
async fn main(spawner: Spawner) {
async fn main(spawner: Spawner, p: Peripherals) {
unwrap!(spawner.spawn(run1()));
unwrap!(spawner.spawn(run2()));
unwrap!(spawner.spawn(run3()));

View File

@ -12,13 +12,11 @@ use example_common::*;
use defmt::panic;
use embassy::executor::Spawner;
use embassy_nrf::gpio::{Input, Pull};
use embassy_nrf::gpiote::{self, InputChannel, InputChannelPolarity};
use embassy_nrf::gpiote::{InputChannel, InputChannelPolarity};
use embassy_nrf::{interrupt, Peripherals};
#[embassy::main]
async fn main(spawner: Spawner) {
let p = Peripherals::take().unwrap();
async fn main(spawner: Spawner, p: Peripherals) {
info!("Starting!");
let ch1 = InputChannel::new(

View File

@ -28,9 +28,7 @@ async fn button_task(n: usize, mut pin: PortInput<'static, AnyPin>) {
}
#[embassy::main]
async fn main(spawner: Spawner) {
let p = Peripherals::take().unwrap();
async fn main(spawner: Spawner, p: Peripherals) {
info!("Starting!");
let btn1 = PortInput::new(Input::new(p.P0_11.degrade(), Pull::Up));

View File

@ -126,9 +126,8 @@ static EXECUTOR_LOW: Forever<Executor> = Forever::new();
fn main() -> ! {
info!("Hello World!");
let p = unwrap!(embassy_nrf::Peripherals::take());
let p = embassy_nrf::init(Default::default());
unsafe { embassy_nrf::system::configure(Default::default()) };
let rtc = RTC.put(rtc::RTC::new(p.RTC1, interrupt::take!(RTC1)));
rtc.start();
unsafe { embassy::time::set_clock(rtc) };

View File

@ -19,9 +19,7 @@ use embassy_nrf::{interrupt, Peripherals};
use gpiote::{OutputChannel, OutputChannelPolarity};
#[embassy::main]
async fn main(spawner: Spawner) {
let p = Peripherals::take().unwrap();
async fn main(spawner: Spawner, p: Peripherals) {
info!("Starting!");
let button1 = InputChannel::new(

View File

@ -23,9 +23,7 @@ const PAGE_SIZE: usize = 4096;
struct AlignedBuf([u8; 4096]);
#[embassy::main]
async fn main(spawner: Spawner) {
let p = Peripherals::take().unwrap();
async fn main(spawner: Spawner, p: Peripherals) {
let csn = p.P0_17;
let sck = p.P0_19;
let io0 = p.P0_20;

View File

@ -37,9 +37,8 @@ static EXECUTOR: Forever<Executor> = Forever::new();
fn main() -> ! {
info!("Hello World!");
let p = unwrap!(embassy_nrf::Peripherals::take());
let p = embassy_nrf::init(Default::default());
unsafe { embassy_nrf::system::configure(Default::default()) };
let rtc = RTC.put(rtc::RTC::new(p.RTC1, interrupt::take!(RTC1)));
rtc.start();
unsafe { embassy::time::set_clock(rtc) };

View File

@ -19,11 +19,9 @@ use embedded_hal::digital::v2::*;
use example_common::*;
#[embassy::main]
async fn main(spawner: Spawner) {
async fn main(spawner: Spawner, p: Peripherals) {
info!("running!");
let p = unsafe { Peripherals::steal() };
let mut config = spim::Config::default();
config.frequency = spim::Frequency::M16;

View File

@ -7,6 +7,7 @@
#[path = "../example_common.rs"]
mod example_common;
use embassy_nrf::Peripherals;
use example_common::*;
use defmt::panic;
@ -30,7 +31,7 @@ async fn run2() {
}
#[embassy::main]
async fn main(spawner: Spawner) {
async fn main(spawner: Spawner, p: Peripherals) {
unwrap!(spawner.spawn(run1()));
unwrap!(spawner.spawn(run2()));
}

View File

@ -17,9 +17,7 @@ use embassy_nrf::gpio::NoPin;
use embassy_nrf::{interrupt, uarte, Peripherals};
#[embassy::main]
async fn main(spawner: Spawner) {
let p = unsafe { Peripherals::steal() };
async fn main(spawner: Spawner, p: Peripherals) {
let mut config = uarte::Config::default();
config.parity = uarte::Parity::EXCLUDED;
config.baudrate = uarte::Baudrate::BAUD115200;
@ -42,33 +40,5 @@ async fn main(spawner: Spawner) {
unwrap!(uart.read(&mut buf).await);
info!("writing...");
unwrap!(uart.write(&buf).await);
/*
// `receive()` doesn't return until the buffer has been completely filled with
// incoming data, which in this case is 8 bytes.
//
// This example shows how to use `select` to run an uart receive concurrently with a
// 1 second timer, effectively adding a timeout to the receive operation.
let recv_fut = uart.read(&mut buf);
let timer_fut = Timer::after(Duration::from_millis(1000));
let received_len = match select(recv_fut, timer_fut).await {
// recv_fut completed first, so we've received `buf_len` bytes.
Either::Left(_) => buf_len,
// timer_fut completed first. `select` gives us back the future that didn't complete, which
// is `recv_fut` in this case, so we can do further stuff with it.
//
// The recv_fut would stop the uart read automatically when dropped. However, we want to know how
// many bytes have been received, so we have to "gracefully stop" it with `.stop()`.
Either::Right((_, recv_fut)) => recv_fut.stop().await,
};
let received = &mut buf[..received_len];
if !received.is_empty() {
info!("read done, got {}", received);
// Echo back received data
unwrap!(uart.write(received).await);
}
*/
}
}

View File

@ -18,9 +18,7 @@ use embassy_nrf::gpio::NoPin;
use embassy_nrf::{interrupt, uarte, Peripherals};
#[embassy::main]
async fn main(spawner: Spawner) {
let p = unsafe { Peripherals::steal() };
async fn main(spawner: Spawner, p: Peripherals) {
let mut config = uarte::Config::default();
config.parity = uarte::Parity::EXCLUDED;
config.baudrate = uarte::Baudrate::BAUD115200;