diff options
| author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2023-05-24 23:47:35 +0000 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-05-24 23:47:35 +0000 |
| commit | ce1078994d0a9c06143527d5856e3ef2adaa45cf (patch) | |
| tree | 759273f8160ab66b8793044a456342fd6ee5a573 /examples/stm32f4/src | |
| parent | 627d7f66efb7ff3dcf627477814c52ba4171bade (diff) | |
| parent | b6ba1ea53ada2f503ae89de66490957723a21866 (diff) | |
Merge #1479
1479: Move stm32 to bind_interrupts r=xoviat a=xoviat
Co-authored-by: xoviat <[email protected]>
Diffstat (limited to 'examples/stm32f4/src')
| -rw-r--r-- | examples/stm32f4/src/bin/i2c.rs | 9 | ||||
| -rw-r--r-- | examples/stm32f4/src/bin/sdmmc.rs | 10 | ||||
| -rw-r--r-- | examples/stm32f4/src/bin/usart.rs | 9 | ||||
| -rw-r--r-- | examples/stm32f4/src/bin/usart_buffered.rs | 9 | ||||
| -rw-r--r-- | examples/stm32f4/src/bin/usart_dma.rs | 9 | ||||
| -rw-r--r-- | examples/stm32f4/src/bin/usb_ethernet.rs | 9 | ||||
| -rw-r--r-- | examples/stm32f4/src/bin/usb_serial.rs | 9 |
7 files changed, 42 insertions, 22 deletions
diff --git a/examples/stm32f4/src/bin/i2c.rs b/examples/stm32f4/src/bin/i2c.rs index f8ae0890c..a92957325 100644 --- a/examples/stm32f4/src/bin/i2c.rs +++ b/examples/stm32f4/src/bin/i2c.rs | |||
| @@ -6,25 +6,28 @@ use defmt::*; | |||
| 6 | use embassy_executor::Spawner; | 6 | use embassy_executor::Spawner; |
| 7 | use embassy_stm32::dma::NoDma; | 7 | use embassy_stm32::dma::NoDma; |
| 8 | use embassy_stm32::i2c::{Error, I2c, TimeoutI2c}; | 8 | use embassy_stm32::i2c::{Error, I2c, TimeoutI2c}; |
| 9 | use embassy_stm32::interrupt; | ||
| 10 | use embassy_stm32::time::Hertz; | 9 | use embassy_stm32::time::Hertz; |
| 10 | use embassy_stm32::{bind_interrupts, i2c, peripherals}; | ||
| 11 | use embassy_time::Duration; | 11 | use embassy_time::Duration; |
| 12 | use {defmt_rtt as _, panic_probe as _}; | 12 | use {defmt_rtt as _, panic_probe as _}; |
| 13 | 13 | ||
| 14 | const ADDRESS: u8 = 0x5F; | 14 | const ADDRESS: u8 = 0x5F; |
| 15 | const WHOAMI: u8 = 0x0F; | 15 | const WHOAMI: u8 = 0x0F; |
| 16 | 16 | ||
| 17 | bind_interrupts!(struct Irqs { | ||
| 18 | I2C2_EV => i2c::InterruptHandler<peripherals::I2C2>; | ||
| 19 | }); | ||
| 20 | |||
| 17 | #[embassy_executor::main] | 21 | #[embassy_executor::main] |
| 18 | async fn main(_spawner: Spawner) { | 22 | async fn main(_spawner: Spawner) { |
| 19 | info!("Hello world!"); | 23 | info!("Hello world!"); |
| 20 | let p = embassy_stm32::init(Default::default()); | 24 | let p = embassy_stm32::init(Default::default()); |
| 21 | 25 | ||
| 22 | let irq = interrupt::take!(I2C2_EV); | ||
| 23 | let mut i2c = I2c::new( | 26 | let mut i2c = I2c::new( |
| 24 | p.I2C2, | 27 | p.I2C2, |
| 25 | p.PB10, | 28 | p.PB10, |
| 26 | p.PB11, | 29 | p.PB11, |
| 27 | irq, | 30 | Irqs, |
| 28 | NoDma, | 31 | NoDma, |
| 29 | NoDma, | 32 | NoDma, |
| 30 | Hertz(100_000), | 33 | Hertz(100_000), |
diff --git a/examples/stm32f4/src/bin/sdmmc.rs b/examples/stm32f4/src/bin/sdmmc.rs index eeecbd321..6ec7d0fec 100644 --- a/examples/stm32f4/src/bin/sdmmc.rs +++ b/examples/stm32f4/src/bin/sdmmc.rs | |||
| @@ -6,13 +6,17 @@ use defmt::*; | |||
| 6 | use embassy_executor::Spawner; | 6 | use embassy_executor::Spawner; |
| 7 | use embassy_stm32::sdmmc::{DataBlock, Sdmmc}; | 7 | use embassy_stm32::sdmmc::{DataBlock, Sdmmc}; |
| 8 | use embassy_stm32::time::mhz; | 8 | use embassy_stm32::time::mhz; |
| 9 | use embassy_stm32::{interrupt, Config}; | 9 | use embassy_stm32::{bind_interrupts, peripherals, sdmmc, Config}; |
| 10 | use {defmt_rtt as _, panic_probe as _}; | 10 | use {defmt_rtt as _, panic_probe as _}; |
| 11 | 11 | ||
| 12 | /// This is a safeguard to not overwrite any data on the SD card. | 12 | /// This is a safeguard to not overwrite any data on the SD card. |
| 13 | /// If you don't care about SD card contents, set this to `true` to test writes. | 13 | /// If you don't care about SD card contents, set this to `true` to test writes. |
| 14 | const ALLOW_WRITES: bool = false; | 14 | const ALLOW_WRITES: bool = false; |
| 15 | 15 | ||
| 16 | bind_interrupts!(struct Irqs { | ||
| 17 | SDIO => sdmmc::InterruptHandler<peripherals::SDIO>; | ||
| 18 | }); | ||
| 19 | |||
| 16 | #[embassy_executor::main] | 20 | #[embassy_executor::main] |
| 17 | async fn main(_spawner: Spawner) { | 21 | async fn main(_spawner: Spawner) { |
| 18 | let mut config = Config::default(); | 22 | let mut config = Config::default(); |
| @@ -21,11 +25,9 @@ async fn main(_spawner: Spawner) { | |||
| 21 | let p = embassy_stm32::init(config); | 25 | let p = embassy_stm32::init(config); |
| 22 | info!("Hello World!"); | 26 | info!("Hello World!"); |
| 23 | 27 | ||
| 24 | let irq = interrupt::take!(SDIO); | ||
| 25 | |||
| 26 | let mut sdmmc = Sdmmc::new_4bit( | 28 | let mut sdmmc = Sdmmc::new_4bit( |
| 27 | p.SDIO, | 29 | p.SDIO, |
| 28 | irq, | 30 | Irqs, |
| 29 | p.DMA2_CH3, | 31 | p.DMA2_CH3, |
| 30 | p.PC12, | 32 | p.PC12, |
| 31 | p.PD2, | 33 | p.PD2, |
diff --git a/examples/stm32f4/src/bin/usart.rs b/examples/stm32f4/src/bin/usart.rs index 8f41bb6c4..7680fe845 100644 --- a/examples/stm32f4/src/bin/usart.rs +++ b/examples/stm32f4/src/bin/usart.rs | |||
| @@ -5,10 +5,14 @@ | |||
| 5 | use cortex_m_rt::entry; | 5 | use cortex_m_rt::entry; |
| 6 | use defmt::*; | 6 | use defmt::*; |
| 7 | use embassy_stm32::dma::NoDma; | 7 | use embassy_stm32::dma::NoDma; |
| 8 | use embassy_stm32::interrupt; | ||
| 9 | use embassy_stm32::usart::{Config, Uart}; | 8 | use embassy_stm32::usart::{Config, Uart}; |
| 9 | use embassy_stm32::{bind_interrupts, peripherals, usart}; | ||
| 10 | use {defmt_rtt as _, panic_probe as _}; | 10 | use {defmt_rtt as _, panic_probe as _}; |
| 11 | 11 | ||
| 12 | bind_interrupts!(struct Irqs { | ||
| 13 | USART3 => usart::InterruptHandler<peripherals::USART3>; | ||
| 14 | }); | ||
| 15 | |||
| 12 | #[entry] | 16 | #[entry] |
| 13 | fn main() -> ! { | 17 | fn main() -> ! { |
| 14 | info!("Hello World!"); | 18 | info!("Hello World!"); |
| @@ -16,8 +20,7 @@ fn main() -> ! { | |||
| 16 | let p = embassy_stm32::init(Default::default()); | 20 | let p = embassy_stm32::init(Default::default()); |
| 17 | 21 | ||
| 18 | let config = Config::default(); | 22 | let config = Config::default(); |
| 19 | let irq = interrupt::take!(USART3); | 23 | let mut usart = Uart::new(p.USART3, p.PD9, p.PD8, Irqs, NoDma, NoDma, config); |
| 20 | let mut usart = Uart::new(p.USART3, p.PD9, p.PD8, irq, NoDma, NoDma, config); | ||
| 21 | 24 | ||
| 22 | unwrap!(usart.blocking_write(b"Hello Embassy World!\r\n")); | 25 | unwrap!(usart.blocking_write(b"Hello Embassy World!\r\n")); |
| 23 | info!("wrote Hello, starting echo"); | 26 | info!("wrote Hello, starting echo"); |
diff --git a/examples/stm32f4/src/bin/usart_buffered.rs b/examples/stm32f4/src/bin/usart_buffered.rs index a93f8baeb..c573dc3a3 100644 --- a/examples/stm32f4/src/bin/usart_buffered.rs +++ b/examples/stm32f4/src/bin/usart_buffered.rs | |||
| @@ -4,11 +4,15 @@ | |||
| 4 | 4 | ||
| 5 | use defmt::*; | 5 | use defmt::*; |
| 6 | use embassy_executor::Spawner; | 6 | use embassy_executor::Spawner; |
| 7 | use embassy_stm32::interrupt; | ||
| 8 | use embassy_stm32::usart::{BufferedUart, Config}; | 7 | use embassy_stm32::usart::{BufferedUart, Config}; |
| 8 | use embassy_stm32::{bind_interrupts, peripherals, usart}; | ||
| 9 | use embedded_io::asynch::BufRead; | 9 | use embedded_io::asynch::BufRead; |
| 10 | use {defmt_rtt as _, panic_probe as _}; | 10 | use {defmt_rtt as _, panic_probe as _}; |
| 11 | 11 | ||
| 12 | bind_interrupts!(struct Irqs { | ||
| 13 | USART3 => usart::BufferedInterruptHandler<peripherals::USART3>; | ||
| 14 | }); | ||
| 15 | |||
| 12 | #[embassy_executor::main] | 16 | #[embassy_executor::main] |
| 13 | async fn main(_spawner: Spawner) { | 17 | async fn main(_spawner: Spawner) { |
| 14 | let p = embassy_stm32::init(Default::default()); | 18 | let p = embassy_stm32::init(Default::default()); |
| @@ -16,10 +20,9 @@ async fn main(_spawner: Spawner) { | |||
| 16 | 20 | ||
| 17 | let config = Config::default(); | 21 | let config = Config::default(); |
| 18 | 22 | ||
| 19 | let irq = interrupt::take!(USART3); | ||
| 20 | let mut tx_buf = [0u8; 32]; | 23 | let mut tx_buf = [0u8; 32]; |
| 21 | let mut rx_buf = [0u8; 32]; | 24 | let mut rx_buf = [0u8; 32]; |
| 22 | let mut buf_usart = BufferedUart::new(p.USART3, irq, p.PD9, p.PD8, &mut tx_buf, &mut rx_buf, config); | 25 | let mut buf_usart = BufferedUart::new(p.USART3, Irqs, p.PD9, p.PD8, &mut tx_buf, &mut rx_buf, config); |
| 23 | 26 | ||
| 24 | loop { | 27 | loop { |
| 25 | let buf = buf_usart.fill_buf().await.unwrap(); | 28 | let buf = buf_usart.fill_buf().await.unwrap(); |
diff --git a/examples/stm32f4/src/bin/usart_dma.rs b/examples/stm32f4/src/bin/usart_dma.rs index 78baeaa0d..3408ec370 100644 --- a/examples/stm32f4/src/bin/usart_dma.rs +++ b/examples/stm32f4/src/bin/usart_dma.rs | |||
| @@ -7,19 +7,22 @@ use core::fmt::Write; | |||
| 7 | use defmt::*; | 7 | use defmt::*; |
| 8 | use embassy_executor::Spawner; | 8 | use embassy_executor::Spawner; |
| 9 | use embassy_stm32::dma::NoDma; | 9 | use embassy_stm32::dma::NoDma; |
| 10 | use embassy_stm32::interrupt; | ||
| 11 | use embassy_stm32::usart::{Config, Uart}; | 10 | use embassy_stm32::usart::{Config, Uart}; |
| 11 | use embassy_stm32::{bind_interrupts, peripherals, usart}; | ||
| 12 | use heapless::String; | 12 | use heapless::String; |
| 13 | use {defmt_rtt as _, panic_probe as _}; | 13 | use {defmt_rtt as _, panic_probe as _}; |
| 14 | 14 | ||
| 15 | bind_interrupts!(struct Irqs { | ||
| 16 | USART3 => usart::InterruptHandler<peripherals::USART3>; | ||
| 17 | }); | ||
| 18 | |||
| 15 | #[embassy_executor::main] | 19 | #[embassy_executor::main] |
| 16 | async fn main(_spawner: Spawner) { | 20 | async fn main(_spawner: Spawner) { |
| 17 | let p = embassy_stm32::init(Default::default()); | 21 | let p = embassy_stm32::init(Default::default()); |
| 18 | info!("Hello World!"); | 22 | info!("Hello World!"); |
| 19 | 23 | ||
| 20 | let config = Config::default(); | 24 | let config = Config::default(); |
| 21 | let irq = interrupt::take!(USART3); | 25 | let mut usart = Uart::new(p.USART3, p.PD9, p.PD8, Irqs, p.DMA1_CH3, NoDma, config); |
| 22 | let mut usart = Uart::new(p.USART3, p.PD9, p.PD8, irq, p.DMA1_CH3, NoDma, config); | ||
| 23 | 26 | ||
| 24 | for n in 0u32.. { | 27 | for n in 0u32.. { |
| 25 | let mut s: String<128> = String::new(); | 28 | let mut s: String<128> = String::new(); |
diff --git a/examples/stm32f4/src/bin/usb_ethernet.rs b/examples/stm32f4/src/bin/usb_ethernet.rs index 9131e5896..c4e395f0f 100644 --- a/examples/stm32f4/src/bin/usb_ethernet.rs +++ b/examples/stm32f4/src/bin/usb_ethernet.rs | |||
| @@ -9,7 +9,7 @@ use embassy_net::{Stack, StackResources}; | |||
| 9 | use embassy_stm32::rng::Rng; | 9 | use embassy_stm32::rng::Rng; |
| 10 | use embassy_stm32::time::mhz; | 10 | use embassy_stm32::time::mhz; |
| 11 | use embassy_stm32::usb_otg::Driver; | 11 | use embassy_stm32::usb_otg::Driver; |
| 12 | use embassy_stm32::{interrupt, Config}; | 12 | use embassy_stm32::{bind_interrupts, peripherals, usb_otg, Config}; |
| 13 | use embassy_usb::class::cdc_ncm::embassy_net::{Device, Runner, State as NetState}; | 13 | use embassy_usb::class::cdc_ncm::embassy_net::{Device, Runner, State as NetState}; |
| 14 | use embassy_usb::class::cdc_ncm::{CdcNcmClass, State}; | 14 | use embassy_usb::class::cdc_ncm::{CdcNcmClass, State}; |
| 15 | use embassy_usb::{Builder, UsbDevice}; | 15 | use embassy_usb::{Builder, UsbDevice}; |
| @@ -45,6 +45,10 @@ async fn net_task(stack: &'static Stack<Device<'static, MTU>>) -> ! { | |||
| 45 | stack.run().await | 45 | stack.run().await |
| 46 | } | 46 | } |
| 47 | 47 | ||
| 48 | bind_interrupts!(struct Irqs { | ||
| 49 | OTG_FS => usb_otg::InterruptHandler<peripherals::USB_OTG_FS>; | ||
| 50 | }); | ||
| 51 | |||
| 48 | #[embassy_executor::main] | 52 | #[embassy_executor::main] |
| 49 | async fn main(spawner: Spawner) { | 53 | async fn main(spawner: Spawner) { |
| 50 | info!("Hello World!"); | 54 | info!("Hello World!"); |
| @@ -56,9 +60,8 @@ async fn main(spawner: Spawner) { | |||
| 56 | let p = embassy_stm32::init(config); | 60 | let p = embassy_stm32::init(config); |
| 57 | 61 | ||
| 58 | // Create the driver, from the HAL. | 62 | // Create the driver, from the HAL. |
| 59 | let irq = interrupt::take!(OTG_FS); | ||
| 60 | let ep_out_buffer = &mut singleton!([0; 256])[..]; | 63 | let ep_out_buffer = &mut singleton!([0; 256])[..]; |
| 61 | let driver = Driver::new_fs(p.USB_OTG_FS, irq, p.PA12, p.PA11, ep_out_buffer); | 64 | let driver = Driver::new_fs(p.USB_OTG_FS, Irqs, p.PA12, p.PA11, ep_out_buffer); |
| 62 | 65 | ||
| 63 | // Create embassy-usb Config | 66 | // Create embassy-usb Config |
| 64 | let mut config = embassy_usb::Config::new(0xc0de, 0xcafe); | 67 | let mut config = embassy_usb::Config::new(0xc0de, 0xcafe); |
diff --git a/examples/stm32f4/src/bin/usb_serial.rs b/examples/stm32f4/src/bin/usb_serial.rs index d2b1dca43..f8f5940a7 100644 --- a/examples/stm32f4/src/bin/usb_serial.rs +++ b/examples/stm32f4/src/bin/usb_serial.rs | |||
| @@ -6,13 +6,17 @@ use defmt::{panic, *}; | |||
| 6 | use embassy_executor::Spawner; | 6 | use embassy_executor::Spawner; |
| 7 | use embassy_stm32::time::mhz; | 7 | use embassy_stm32::time::mhz; |
| 8 | use embassy_stm32::usb_otg::{Driver, Instance}; | 8 | use embassy_stm32::usb_otg::{Driver, Instance}; |
| 9 | use embassy_stm32::{interrupt, Config}; | 9 | use embassy_stm32::{bind_interrupts, peripherals, usb_otg, Config}; |
| 10 | use embassy_usb::class::cdc_acm::{CdcAcmClass, State}; | 10 | use embassy_usb::class::cdc_acm::{CdcAcmClass, State}; |
| 11 | use embassy_usb::driver::EndpointError; | 11 | use embassy_usb::driver::EndpointError; |
| 12 | use embassy_usb::Builder; | 12 | use embassy_usb::Builder; |
| 13 | use futures::future::join; | 13 | use futures::future::join; |
| 14 | use {defmt_rtt as _, panic_probe as _}; | 14 | use {defmt_rtt as _, panic_probe as _}; |
| 15 | 15 | ||
| 16 | bind_interrupts!(struct Irqs { | ||
| 17 | OTG_FS => usb_otg::InterruptHandler<peripherals::USB_OTG_FS>; | ||
| 18 | }); | ||
| 19 | |||
| 16 | #[embassy_executor::main] | 20 | #[embassy_executor::main] |
| 17 | async fn main(_spawner: Spawner) { | 21 | async fn main(_spawner: Spawner) { |
| 18 | info!("Hello World!"); | 22 | info!("Hello World!"); |
| @@ -24,9 +28,8 @@ async fn main(_spawner: Spawner) { | |||
| 24 | let p = embassy_stm32::init(config); | 28 | let p = embassy_stm32::init(config); |
| 25 | 29 | ||
| 26 | // Create the driver, from the HAL. | 30 | // Create the driver, from the HAL. |
| 27 | let irq = interrupt::take!(OTG_FS); | ||
| 28 | let mut ep_out_buffer = [0u8; 256]; | 31 | let mut ep_out_buffer = [0u8; 256]; |
| 29 | let driver = Driver::new_fs(p.USB_OTG_FS, irq, p.PA12, p.PA11, &mut ep_out_buffer); | 32 | let driver = Driver::new_fs(p.USB_OTG_FS, Irqs, p.PA12, p.PA11, &mut ep_out_buffer); |
| 30 | 33 | ||
| 31 | // Create embassy-usb Config | 34 | // Create embassy-usb Config |
| 32 | let mut config = embassy_usb::Config::new(0xc0de, 0xcafe); | 35 | let mut config = embassy_usb::Config::new(0xc0de, 0xcafe); |
