Skip to content

Commit

Permalink
Use embassy-executor in rp235x examples
Browse files Browse the repository at this point in the history
  • Loading branch information
jannic committed Sep 14, 2024
1 parent a87830d commit 9377c4a
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 11 deletions.
8 changes: 7 additions & 1 deletion rp235x-hal-examples/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,16 @@ futures = {version = "0.3.30", default-features = false, features = ["async-awai
hd44780-driver = "0.4.0"
heapless = "0.8.0"
nb = "1.0"
nostd_async = {version = "0.6.1", features = ["cortex_m"]}
panic-halt = "0.2.0"
pio = "0.2.0"
pio-proc = "0.2.0"
rp235x-hal = {path = "../rp235x-hal", version = "0.2.0", features = ["binary-info", "critical-section-impl", "rt", "defmt"]}
usb-device = "0.3.2"
usbd-serial = "0.2.2"
static_cell = "2.1.0"

[target.'cfg( target_arch = "arm" )'.dependencies]
embassy-executor = {version = "0.6", features = ["arch-cortex-m", "executor-thread"]}

[target.'cfg( target_arch = "riscv32" )'.dependencies]
embassy-executor = {version = "0.6", features = ["arch-riscv32", "executor-thread"]}
11 changes: 6 additions & 5 deletions rp235x-hal-examples/src/bin/i2c_async.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#![no_std]
#![no_main]

use embassy_executor::Executor;
// Ensure we halt the program on panic (if we don't mention this crate it won't
// be linked)
use panic_halt as _;
Expand All @@ -29,6 +30,7 @@ use hal::{

// Import required types & traits.
use embedded_hal_async::i2c::I2c;
use static_cell::StaticCell;

/// Tell the Boot ROM about our application
#[link_section = ".start_block"]
Expand All @@ -48,6 +50,7 @@ unsafe fn I2C0_IRQ() {

/// The function configures the RP235x peripherals, then performs a single I²C
/// write to a fixed address.
#[embassy_executor::task]
async fn demo() {
let mut pac = hal::pac::Peripherals::take().unwrap();

Expand Down Expand Up @@ -112,11 +115,9 @@ async fn demo() {
/// Entry point to our bare-metal application.
#[hal::entry]
fn main() -> ! {
let runtime = nostd_async::Runtime::new();
let mut task = nostd_async::Task::new(demo());
let handle = task.spawn(&runtime);
handle.join();
unreachable!()
static EXECUTOR: StaticCell<Executor> = StaticCell::new();
let executor = EXECUTOR.init(Executor::new());
executor.run(|spawner| spawner.spawn(demo()).unwrap());
}

/// Program metadata for `picotool info`
Expand Down
11 changes: 6 additions & 5 deletions rp235x-hal-examples/src/bin/i2c_async_cancelled.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
use panic_halt as _;

use core::task::Poll;
use embassy_executor::Executor;
use embedded_hal_async::i2c::I2c;
use futures::FutureExt;

Expand All @@ -32,6 +33,7 @@ use hal::{
};

use defmt_rtt as _;
use static_cell::StaticCell;

/// Tell the Boot ROM about our application
#[link_section = ".start_block"]
Expand All @@ -50,6 +52,7 @@ unsafe fn I2C0_IRQ() {

/// The function configures the RP235x peripherals, then performs a single I²C
/// write to a fixed address.
#[embassy_executor::task]
async fn demo() {
let mut pac = hal::pac::Peripherals::take().unwrap();

Expand Down Expand Up @@ -132,11 +135,9 @@ async fn demo() {
/// Entry point to our bare-metal application.
#[hal::entry]
fn main() -> ! {
let runtime = nostd_async::Runtime::new();
let mut task = nostd_async::Task::new(demo());
let handle = task.spawn(&runtime);
handle.join();
unreachable!()
static EXECUTOR: StaticCell<Executor> = StaticCell::new();
let executor = EXECUTOR.init(Executor::new());
executor.run(|spawner| spawner.spawn(demo()).unwrap());
}

/// Program metadata for `picotool info`
Expand Down

0 comments on commit 9377c4a

Please sign in to comment.