aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorDion Dokter <[email protected]>2024-04-16 15:33:23 +0200
committerDion Dokter <[email protected]>2024-04-16 15:33:23 +0200
commita5f754238b77a8ef9ec8c6ad4c59af8fa5d5b374 (patch)
treef22b75fe2e365077bbfb1d894fe429699e7bc293 /examples
parent53cb84d3d65b96b5f92f434b113cffe62810c0ad (diff)
Add spi, i2c and fix usart
Diffstat (limited to 'examples')
-rw-r--r--examples/stm32u0/src/bin/i2c.rs21
-rw-r--r--examples/stm32u0/src/bin/spi.rs30
-rw-r--r--examples/stm32u0/src/bin/usart.rs8
3 files changed, 52 insertions, 7 deletions
diff --git a/examples/stm32u0/src/bin/i2c.rs b/examples/stm32u0/src/bin/i2c.rs
new file mode 100644
index 000000000..2861bc091
--- /dev/null
+++ b/examples/stm32u0/src/bin/i2c.rs
@@ -0,0 +1,21 @@
1#![no_std]
2#![no_main]
3
4use defmt::*;
5use embassy_executor::Spawner;
6use embassy_stm32::i2c::I2c;
7use embassy_stm32::time::Hertz;
8use {defmt_rtt as _, panic_probe as _};
9
10const ADDRESS: u8 = 0x5F;
11const WHOAMI: u8 = 0x0F;
12
13#[embassy_executor::main]
14async fn main(_spawner: Spawner) {
15 let p = embassy_stm32::init(Default::default());
16 let mut i2c = I2c::new_blocking(p.I2C2, p.PB10, p.PB11, Hertz(100_000), Default::default());
17
18 let mut data = [0u8; 1];
19 unwrap!(i2c.blocking_write_read(ADDRESS, &[WHOAMI], &mut data));
20 info!("Whoami: {}", data[0]);
21}
diff --git a/examples/stm32u0/src/bin/spi.rs b/examples/stm32u0/src/bin/spi.rs
new file mode 100644
index 000000000..5693a3765
--- /dev/null
+++ b/examples/stm32u0/src/bin/spi.rs
@@ -0,0 +1,30 @@
1#![no_std]
2#![no_main]
3
4use defmt::*;
5use embassy_stm32::gpio::{Level, Output, Speed};
6use embassy_stm32::spi::{Config, Spi};
7use embassy_stm32::time::Hertz;
8use {defmt_rtt as _, panic_probe as _};
9
10#[cortex_m_rt::entry]
11fn main() -> ! {
12 info!("Hello World!");
13
14 let p = embassy_stm32::init(Default::default());
15
16 let mut spi_config = Config::default();
17 spi_config.frequency = Hertz(1_000_000);
18
19 let mut spi = Spi::new_blocking(p.SPI3, p.PC10, p.PC12, p.PC11, spi_config);
20
21 let mut cs = Output::new(p.PE0, Level::High, Speed::VeryHigh);
22
23 loop {
24 let mut buf = [0x0Au8; 4];
25 cs.set_low();
26 unwrap!(spi.blocking_transfer_in_place(&mut buf));
27 cs.set_high();
28 info!("xfer {=[u8]:x}", buf);
29 }
30}
diff --git a/examples/stm32u0/src/bin/usart.rs b/examples/stm32u0/src/bin/usart.rs
index 1fcf0029a..037a5c833 100644
--- a/examples/stm32u0/src/bin/usart.rs
+++ b/examples/stm32u0/src/bin/usart.rs
@@ -2,15 +2,9 @@
2#![no_main] 2#![no_main]
3 3
4use defmt::*; 4use defmt::*;
5use embassy_stm32::dma::NoDma;
6use embassy_stm32::usart::{Config, Uart}; 5use embassy_stm32::usart::{Config, Uart};
7use embassy_stm32::{bind_interrupts, peripherals, usart};
8use {defmt_rtt as _, panic_probe as _}; 6use {defmt_rtt as _, panic_probe as _};
9 7
10bind_interrupts!(struct Irqs {
11 USART2_LPUART2 => usart::InterruptHandler<peripherals::USART2>;
12});
13
14#[cortex_m_rt::entry] 8#[cortex_m_rt::entry]
15fn main() -> ! { 9fn main() -> ! {
16 info!("Hello World!"); 10 info!("Hello World!");
@@ -18,7 +12,7 @@ fn main() -> ! {
18 let p = embassy_stm32::init(Default::default()); 12 let p = embassy_stm32::init(Default::default());
19 13
20 let config = Config::default(); 14 let config = Config::default();
21 let mut usart = Uart::new(p.USART2, p.PA3, p.PA2, Irqs, NoDma, NoDma, config).unwrap(); 15 let mut usart = Uart::new_blocking(p.USART2, p.PA3, p.PA2, config).unwrap();
22 16
23 unwrap!(usart.blocking_write(b"Hello Embassy World!\r\n")); 17 unwrap!(usart.blocking_write(b"Hello Embassy World!\r\n"));
24 info!("wrote Hello, starting echo"); 18 info!("wrote Hello, starting echo");