macro_rules! bind_interrupts {
($(#[$outer:meta])* $vis:vis struct $name:ident {
$(
$(#[doc = $doc:literal])*
$(#[cfg($cond_irq:meta)])?
$irq:ident => $(
$(#[cfg($cond_handler:meta)])?
$handler:ty
),*;
)*
}) => { ... };
(@inner $($t:tt)*) => { ... };
}Expand description
Macro to bind interrupts to interrupt handlers.
For example:
ⓘ
use ra_hal::{bind_interrupts, peripherals::SCI1, uart};
bind_interrupts!(struct Irqs {
IEL2 => uart::RxInterruptHandler<SCI1>;
IEL3 => uart::TxInterruptHandler<SCI1>;
IEL4 => uart::TeInterruptHandler<SCI1>;
});Any interrupt IEL2..=IEL31 can be assigned to any one handler.
Note that IEL0 and IEL1 are used by the time driver and are unavailable for general use.