Merge pull request #2268 from embassy-rs/doc-bind-interrupts
Document how to bind multiple interrupts and handlers in `bind_interrupts!`.
This commit is contained in:
commit
a4d53c7cb1
@ -97,6 +97,28 @@ mod chip;
|
|||||||
/// This defines the right interrupt handlers, and creates a unit struct (like `struct Irqs;`)
|
/// This defines the right interrupt handlers, and creates a unit struct (like `struct Irqs;`)
|
||||||
/// and implements the right [`Binding`]s for it. You can pass this struct to drivers to
|
/// 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.
|
/// prove at compile-time that the right interrupts have been bound.
|
||||||
|
///
|
||||||
|
/// Example of how to bind one interrupt:
|
||||||
|
///
|
||||||
|
/// ```rust,ignore
|
||||||
|
/// use embassy_nrf::{bind_interrupts, spim, peripherals};
|
||||||
|
///
|
||||||
|
/// bind_interrupts!(struct Irqs {
|
||||||
|
/// SPIM3 => spim::InterruptHandler<peripherals::SPI3>;
|
||||||
|
/// });
|
||||||
|
/// ```
|
||||||
|
///
|
||||||
|
/// Example of how to bind multiple interrupts in a single macro invocation:
|
||||||
|
///
|
||||||
|
/// ```rust,ignore
|
||||||
|
/// use embassy_nrf::{bind_interrupts, spim, twim, peripherals};
|
||||||
|
///
|
||||||
|
/// bind_interrupts!(struct Irqs {
|
||||||
|
/// SPIM3 => spim::InterruptHandler<peripherals::SPI3>;
|
||||||
|
/// SPIM0_SPIS0_TWIM0_TWIS0_SPI0_TWI0 => twim::InterruptHandler<peripherals::TWISPI0>;
|
||||||
|
/// });
|
||||||
|
/// ```
|
||||||
|
|
||||||
// developer note: this macro can't be in `embassy-hal-internal` due to the use of `$crate`.
|
// developer note: this macro can't be in `embassy-hal-internal` due to the use of `$crate`.
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! bind_interrupts {
|
macro_rules! bind_interrupts {
|
||||||
|
@ -86,6 +86,17 @@ embassy_hal_internal::interrupt_mod!(
|
|||||||
/// This defines the right interrupt handlers, and creates a unit struct (like `struct Irqs;`)
|
/// This defines the right interrupt handlers, and creates a unit struct (like `struct Irqs;`)
|
||||||
/// and implements the right [`Binding`]s for it. You can pass this struct to drivers to
|
/// 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.
|
/// prove at compile-time that the right interrupts have been bound.
|
||||||
|
///
|
||||||
|
/// Example of how to bind one interrupt:
|
||||||
|
///
|
||||||
|
/// ```rust,ignore
|
||||||
|
/// use embassy_rp::{bind_interrupts, usb, peripherals};
|
||||||
|
///
|
||||||
|
/// bind_interrupts!(struct Irqs {
|
||||||
|
/// USBCTRL_IRQ => usb::InterruptHandler<peripherals::USB>;
|
||||||
|
/// });
|
||||||
|
/// ```
|
||||||
|
///
|
||||||
// developer note: this macro can't be in `embassy-hal-internal` due to the use of `$crate`.
|
// developer note: this macro can't be in `embassy-hal-internal` due to the use of `$crate`.
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! bind_interrupts {
|
macro_rules! bind_interrupts {
|
||||||
|
@ -90,6 +90,29 @@ pub use crate::_generated::interrupt;
|
|||||||
/// This defines the right interrupt handlers, and creates a unit struct (like `struct Irqs;`)
|
/// This defines the right interrupt handlers, and creates a unit struct (like `struct Irqs;`)
|
||||||
/// and implements the right [`Binding`]s for it. You can pass this struct to drivers to
|
/// 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.
|
/// prove at compile-time that the right interrupts have been bound.
|
||||||
|
///
|
||||||
|
/// Example of how to bind one interrupt:
|
||||||
|
///
|
||||||
|
/// ```rust,ignore
|
||||||
|
/// use embassy_stm32::{bind_interrupts, usb_otg, peripherals};
|
||||||
|
///
|
||||||
|
/// bind_interrupts!(struct Irqs {
|
||||||
|
/// OTG_FS => usb_otg::InterruptHandler<peripherals::USB_OTG_FS>;
|
||||||
|
/// });
|
||||||
|
/// ```
|
||||||
|
///
|
||||||
|
/// Example of how to bind multiple interrupts, and multiple handlers to each interrupt, in a single macro invocation:
|
||||||
|
///
|
||||||
|
/// ```rust,ignore
|
||||||
|
/// use embassy_stm32::{bind_interrupts, i2c, peripherals};
|
||||||
|
///
|
||||||
|
/// bind_interrupts!(struct Irqs {
|
||||||
|
/// I2C1 => i2c::EventInterruptHandler<peripherals::I2C1>, i2c::ErrorInterruptHandler<peripherals::I2C1>;
|
||||||
|
/// I2C2_3 => i2c::EventInterruptHandler<peripherals::I2C2>, i2c::ErrorInterruptHandler<peripherals::I2C2>,
|
||||||
|
/// i2c::EventInterruptHandler<peripherals::I2C3>, i2c::ErrorInterruptHandler<peripherals::I2C3>;
|
||||||
|
/// });
|
||||||
|
/// ```
|
||||||
|
|
||||||
// developer note: this macro can't be in `embassy-hal-internal` due to the use of `$crate`.
|
// developer note: this macro can't be in `embassy-hal-internal` due to the use of `$crate`.
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! bind_interrupts {
|
macro_rules! bind_interrupts {
|
||||||
|
Loading…
Reference in New Issue
Block a user