macro_rules! bind_multiple_interrupts {
($vis:vis struct $name:ident { $int_source:ident: [ $($irq:ident),+ ] => $handler:ty; }) => { ... };
}
Expand description
Bind multiple interrupt sources to the same interrupt handler.
This defines the right interrupt handlers, creates a unit struct (like
struct Irqs;
) and implements the right
Binding
s for it. You can pass
this struct to drivers to prove at compile-time that the right interrupts
have been bound.
Due to limitations in the macro’s implementation, only one binding per macro
call is supported. Call bind_multiple_interrupts
as many times as you
need multiple-interrupt bindings.
Refer to the module-level documentation for details on when to use
bind_interrupts
vs
bind_multiple_interrupts
.
§Example
atsamd_hal::bind_multiple_interrupts!(struct DmacIrqs {
DMAC: [DMAC_0, DMAC_1, DMAC_2, DMAC_OTHER] => atsamd_hal::dmac::InterruptHandler;
});
atsamd_hal::bind_multiple_interrupts!(struct SpiIrqs {
SERCOM0: [SERCOM0_0, SERCOM0_1, SERCOM0_2, SERCOM0_OTHER] => atsamd_hal::sercom::spi::InterruptHandler;
});