What problem does it solve?
Embassy helps solve the challenge of asynchronous programming in embedded systems, particularly when working with no_std environments and task executors.
Core Features & Use Cases
- Async Executor: Enables no-alloc, no-heap task execution with a single stack, and replaces kernel context switching.
- Low Power Management: Auto-sleeps during idle times, wakes via interrupts, ideal for battery-powered devices.
- Key Crates: Offers crates like embassy-executor, embassy-time, and embassy-sync for async task runtime, timers, and synchronization primitives.
- HAL Support: Compatible with STM32, nRF, RP, MSPM0, ESP32, and RISC-V for various embedded platforms.
Quick Start
To initialize an embassy executor in Rust, run: ```rust
use embassy_executor::Spawner;
#[embassy_executor::main]
async fn main(spawner: Spawner) {
spawner.spawn(background_task()).unwrap();
// Main task continues...
}