Crates.io | embedded-asyncdelay-rp2040 |
lib.rs | embedded-asyncdelay-rp2040 |
version | 0.1.0 |
source | src |
created_at | 2024-11-12 19:50:48.183963 |
updated_at | 2024-11-12 19:50:48.183963 |
description | A hardware-based, asynchronous delay that can be used with async/await runtimes |
homepage | |
repository | https://github.com/KizzyCode/embedded-asyncdelay-rust-rp2040 |
max_upload_size | |
id | 1445457 |
size | 22,826 |
embedded-asyncdelay-rp2040
A hardware-based, asynchronous delay that can be used with async/await runtimes. The implementation uses one of the
underlying hardware alarms (Alarm0
to Alarm3
) to trigger an interrupt, which in turn wakes the future's associated
waker.
To use this crate, you must specify which hardware alarm to use for the underlying interrupt scheduler. This is done by
setting the appropriate alarm
feature. By default, alarm0
is selected.
Since we need to wake the async wakers from the interrupt callback, we need some stack-allocated shared storage. By
default, this crate automatically allocates enough space for 16 slots by default. To override this, you must disable the
init16
feature, and call the setup_waker_slots!
macro once with your desired number of slots manually.
IMPORTANT: If you disable the init16
feature, but don't call setup_waker_slots!
, this will yield a rather
cryptic linker error and compilation will fail.