aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/stm32l4/src/bin/i2c_blocking_async.rs29
-rw-r--r--examples/stm32l4/src/bin/spi_blocking_async.rs57
-rw-r--r--examples/stm32l4/src/bin/usart_blocking_async.rs32
3 files changed, 118 insertions, 0 deletions
diff --git a/examples/stm32l4/src/bin/i2c_blocking_async.rs b/examples/stm32l4/src/bin/i2c_blocking_async.rs
new file mode 100644
index 000000000..0339ed4d3
--- /dev/null
+++ b/examples/stm32l4/src/bin/i2c_blocking_async.rs
@@ -0,0 +1,29 @@
1#![no_std]
2#![no_main]
3#![feature(type_alias_impl_trait)]
4
5#[path = "../example_common.rs"]
6mod example_common;
7
8use embassy::executor::Spawner;
9use embassy_stm32::dma::NoDma;
10use embassy_stm32::i2c::I2c;
11use embassy_stm32::interrupt;
12use embassy_stm32::time::Hertz;
13use embassy_stm32::Peripherals;
14use embassy_traits::{adapter::BlockingAsync, i2c::I2c as _};
15use example_common::{info, unwrap};
16
17const ADDRESS: u8 = 0x5F;
18const WHOAMI: u8 = 0x0F;
19
20#[embassy::main]
21async fn main(_spawner: Spawner, p: Peripherals) -> ! {
22 let irq = interrupt::take!(I2C2_EV);
23 let i2c = I2c::new(p.I2C2, p.PB10, p.PB11, irq, NoDma, NoDma, Hertz(100_000));
24 let mut i2c = BlockingAsync::new(i2c);
25
26 let mut data = [0u8; 1];
27 unwrap!(i2c.write_read(ADDRESS, &[WHOAMI], &mut data).await);
28 info!("Whoami: {}", data[0]);
29}
diff --git a/examples/stm32l4/src/bin/spi_blocking_async.rs b/examples/stm32l4/src/bin/spi_blocking_async.rs
new file mode 100644
index 000000000..f092706d4
--- /dev/null
+++ b/examples/stm32l4/src/bin/spi_blocking_async.rs
@@ -0,0 +1,57 @@
1#![no_std]
2#![no_main]
3#![feature(type_alias_impl_trait)]
4
5#[path = "../example_common.rs"]
6mod example_common;
7
8use embassy::executor::Spawner;
9use embassy_stm32::dma::NoDma;
10use embassy_stm32::gpio::{Input, Level, Output, Pull, Speed};
11use embassy_stm32::spi::{Config, Spi};
12use embassy_stm32::time::Hertz;
13use embassy_stm32::Peripherals;
14use embassy_traits::{adapter::BlockingAsync, spi::FullDuplex};
15use embedded_hal::digital::v2::{InputPin, OutputPin};
16use example_common::*;
17
18#[embassy::main]
19async fn main(_spawner: Spawner, p: Peripherals) {
20 info!("Hello World!");
21
22 let spi = Spi::new(
23 p.SPI3,
24 p.PC10,
25 p.PC12,
26 p.PC11,
27 NoDma,
28 NoDma,
29 Hertz(1_000_000),
30 Config::default(),
31 );
32
33 let mut spi = BlockingAsync::new(spi);
34
35 // These are the pins for the Inventek eS-Wifi SPI Wifi Adapter.
36
37 let _boot = Output::new(p.PB12, Level::Low, Speed::VeryHigh);
38 let _wake = Output::new(p.PB13, Level::Low, Speed::VeryHigh);
39 let mut reset = Output::new(p.PE8, Level::Low, Speed::VeryHigh);
40 let mut cs = Output::new(p.PE0, Level::High, Speed::VeryHigh);
41 let ready = Input::new(p.PE1, Pull::Up);
42
43 cortex_m::asm::delay(100_000);
44 unwrap!(reset.set_high());
45 cortex_m::asm::delay(100_000);
46
47 while unwrap!(ready.is_low()) {
48 info!("waiting for ready");
49 }
50
51 let write = [0x0A; 10];
52 let mut read = [0; 10];
53 unwrap!(cs.set_low());
54 spi.read_write(&mut read, &write).await.ok();
55 unwrap!(cs.set_high());
56 info!("xfer {=[u8]:x}", read);
57}
diff --git a/examples/stm32l4/src/bin/usart_blocking_async.rs b/examples/stm32l4/src/bin/usart_blocking_async.rs
new file mode 100644
index 000000000..679d4e0da
--- /dev/null
+++ b/examples/stm32l4/src/bin/usart_blocking_async.rs
@@ -0,0 +1,32 @@
1#![no_std]
2#![no_main]
3#![feature(type_alias_impl_trait)]
4
5#[path = "../example_common.rs"]
6mod example_common;
7
8use embassy::executor::Spawner;
9use embassy::traits::{
10 adapter::BlockingAsync,
11 uart::{Read, Write},
12};
13use embassy_stm32::dma::NoDma;
14use embassy_stm32::usart::{Config, Uart};
15use embassy_stm32::Peripherals;
16use example_common::*;
17
18#[embassy::main]
19async fn main(_spawner: Spawner, p: Peripherals) {
20 let config = Config::default();
21 let usart = Uart::new(p.UART4, p.PA1, p.PA0, NoDma, NoDma, config);
22 let mut usart = BlockingAsync::new(usart);
23
24 unwrap!(usart.write(b"Hello Embassy World!\r\n").await);
25 info!("wrote Hello, starting echo");
26
27 let mut buf = [0u8; 1];
28 loop {
29 unwrap!(usart.read(&mut buf).await);
30 unwrap!(usart.write(&buf).await);
31 }
32}