aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/stm32f4/src/bin/eth.rs6
-rw-r--r--examples/stm32f4/src/bin/usb_ethernet.rs5
-rw-r--r--examples/stm32f7/src/bin/eth.rs6
-rw-r--r--examples/stm32h5/src/bin/eth.rs6
-rw-r--r--examples/stm32h5/src/bin/rng.rs7
-rw-r--r--examples/stm32h7/src/bin/eth.rs6
-rw-r--r--examples/stm32h7/src/bin/eth_client.rs6
-rw-r--r--examples/stm32h7/src/bin/rng.rs7
-rw-r--r--examples/stm32l0/src/bin/lora_lorawan.rs8
-rw-r--r--examples/stm32l4/src/bin/rng.rs8
-rw-r--r--examples/stm32l5/src/bin/rng.rs8
-rw-r--r--examples/stm32l5/src/bin/usb_ethernet.rs5
-rw-r--r--examples/stm32wl/src/bin/lora_lorawan.rs7
-rw-r--r--examples/stm32wl/src/bin/random.rs10
14 files changed, 67 insertions, 28 deletions
diff --git a/examples/stm32f4/src/bin/eth.rs b/examples/stm32f4/src/bin/eth.rs
index d0b164393..496016687 100644
--- a/examples/stm32f4/src/bin/eth.rs
+++ b/examples/stm32f4/src/bin/eth.rs
@@ -11,13 +11,15 @@ use embassy_stm32::eth::{Ethernet, PacketQueue};
11use embassy_stm32::peripherals::ETH; 11use embassy_stm32::peripherals::ETH;
12use embassy_stm32::rng::Rng; 12use embassy_stm32::rng::Rng;
13use embassy_stm32::time::mhz; 13use embassy_stm32::time::mhz;
14use embassy_stm32::{bind_interrupts, eth, Config}; 14use embassy_stm32::{bind_interrupts, eth, peripherals, rng, Config};
15use embassy_time::{Duration, Timer}; 15use embassy_time::{Duration, Timer};
16use embedded_io::asynch::Write; 16use embedded_io::asynch::Write;
17use static_cell::make_static; 17use static_cell::make_static;
18use {defmt_rtt as _, panic_probe as _}; 18use {defmt_rtt as _, panic_probe as _};
19
19bind_interrupts!(struct Irqs { 20bind_interrupts!(struct Irqs {
20 ETH => eth::InterruptHandler; 21 ETH => eth::InterruptHandler;
22 HASH_RNG => rng::InterruptHandler<peripherals::RNG>;
21}); 23});
22 24
23type Device = Ethernet<'static, ETH, GenericSMI>; 25type Device = Ethernet<'static, ETH, GenericSMI>;
@@ -36,7 +38,7 @@ async fn main(spawner: Spawner) -> ! {
36 info!("Hello World!"); 38 info!("Hello World!");
37 39
38 // Generate random seed. 40 // Generate random seed.
39 let mut rng = Rng::new(p.RNG); 41 let mut rng = Rng::new(p.RNG, Irqs);
40 let mut seed = [0; 8]; 42 let mut seed = [0; 8];
41 let _ = rng.async_fill_bytes(&mut seed).await; 43 let _ = rng.async_fill_bytes(&mut seed).await;
42 let seed = u64::from_le_bytes(seed); 44 let seed = u64::from_le_bytes(seed);
diff --git a/examples/stm32f4/src/bin/usb_ethernet.rs b/examples/stm32f4/src/bin/usb_ethernet.rs
index b1f01417c..740d3018e 100644
--- a/examples/stm32f4/src/bin/usb_ethernet.rs
+++ b/examples/stm32f4/src/bin/usb_ethernet.rs
@@ -6,7 +6,7 @@ use defmt::*;
6use embassy_executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_net::tcp::TcpSocket; 7use embassy_net::tcp::TcpSocket;
8use embassy_net::{Stack, StackResources}; 8use embassy_net::{Stack, StackResources};
9use embassy_stm32::rng::Rng; 9use embassy_stm32::rng::{self, Rng};
10use embassy_stm32::time::mhz; 10use embassy_stm32::time::mhz;
11use embassy_stm32::usb_otg::Driver; 11use embassy_stm32::usb_otg::Driver;
12use embassy_stm32::{bind_interrupts, peripherals, usb_otg, Config}; 12use embassy_stm32::{bind_interrupts, peripherals, usb_otg, Config};
@@ -38,6 +38,7 @@ async fn net_task(stack: &'static Stack<Device<'static, MTU>>) -> ! {
38 38
39bind_interrupts!(struct Irqs { 39bind_interrupts!(struct Irqs {
40 OTG_FS => usb_otg::InterruptHandler<peripherals::USB_OTG_FS>; 40 OTG_FS => usb_otg::InterruptHandler<peripherals::USB_OTG_FS>;
41 HASH_RNG => rng::InterruptHandler<peripherals::RNG>;
41}); 42});
42 43
43#[embassy_executor::main] 44#[embassy_executor::main]
@@ -104,7 +105,7 @@ async fn main(spawner: Spawner) {
104 //}); 105 //});
105 106
106 // Generate random seed 107 // Generate random seed
107 let mut rng = Rng::new(p.RNG); 108 let mut rng = Rng::new(p.RNG, Irqs);
108 let mut seed = [0; 8]; 109 let mut seed = [0; 8];
109 unwrap!(rng.async_fill_bytes(&mut seed).await); 110 unwrap!(rng.async_fill_bytes(&mut seed).await);
110 let seed = u64::from_le_bytes(seed); 111 let seed = u64::from_le_bytes(seed);
diff --git a/examples/stm32f7/src/bin/eth.rs b/examples/stm32f7/src/bin/eth.rs
index c6b2ba45c..e5abf52bc 100644
--- a/examples/stm32f7/src/bin/eth.rs
+++ b/examples/stm32f7/src/bin/eth.rs
@@ -11,14 +11,16 @@ use embassy_stm32::eth::{Ethernet, PacketQueue};
11use embassy_stm32::peripherals::ETH; 11use embassy_stm32::peripherals::ETH;
12use embassy_stm32::rng::Rng; 12use embassy_stm32::rng::Rng;
13use embassy_stm32::time::mhz; 13use embassy_stm32::time::mhz;
14use embassy_stm32::{bind_interrupts, eth, Config}; 14use embassy_stm32::{bind_interrupts, eth, peripherals, rng, Config};
15use embassy_time::{Duration, Timer}; 15use embassy_time::{Duration, Timer};
16use embedded_io::asynch::Write; 16use embedded_io::asynch::Write;
17use rand_core::RngCore; 17use rand_core::RngCore;
18use static_cell::make_static; 18use static_cell::make_static;
19use {defmt_rtt as _, panic_probe as _}; 19use {defmt_rtt as _, panic_probe as _};
20
20bind_interrupts!(struct Irqs { 21bind_interrupts!(struct Irqs {
21 ETH => eth::InterruptHandler; 22 ETH => eth::InterruptHandler;
23 RNG => rng::InterruptHandler<peripherals::RNG>;
22}); 24});
23 25
24type Device = Ethernet<'static, ETH, GenericSMI>; 26type Device = Ethernet<'static, ETH, GenericSMI>;
@@ -37,7 +39,7 @@ async fn main(spawner: Spawner) -> ! {
37 info!("Hello World!"); 39 info!("Hello World!");
38 40
39 // Generate random seed. 41 // Generate random seed.
40 let mut rng = Rng::new(p.RNG); 42 let mut rng = Rng::new(p.RNG, Irqs);
41 let mut seed = [0; 8]; 43 let mut seed = [0; 8];
42 rng.fill_bytes(&mut seed); 44 rng.fill_bytes(&mut seed);
43 let seed = u64::from_le_bytes(seed); 45 let seed = u64::from_le_bytes(seed);
diff --git a/examples/stm32h5/src/bin/eth.rs b/examples/stm32h5/src/bin/eth.rs
index 0bff85ed8..2aa2ab62b 100644
--- a/examples/stm32h5/src/bin/eth.rs
+++ b/examples/stm32h5/src/bin/eth.rs
@@ -12,14 +12,16 @@ use embassy_stm32::peripherals::ETH;
12use embassy_stm32::rcc::{AHBPrescaler, APBPrescaler, Hse, HseMode, Pll, PllSource, Sysclk, VoltageScale}; 12use embassy_stm32::rcc::{AHBPrescaler, APBPrescaler, Hse, HseMode, Pll, PllSource, Sysclk, VoltageScale};
13use embassy_stm32::rng::Rng; 13use embassy_stm32::rng::Rng;
14use embassy_stm32::time::Hertz; 14use embassy_stm32::time::Hertz;
15use embassy_stm32::{bind_interrupts, eth, Config}; 15use embassy_stm32::{bind_interrupts, eth, peripherals, rng, Config};
16use embassy_time::{Duration, Timer}; 16use embassy_time::{Duration, Timer};
17use embedded_io::asynch::Write; 17use embedded_io::asynch::Write;
18use rand_core::RngCore; 18use rand_core::RngCore;
19use static_cell::make_static; 19use static_cell::make_static;
20use {defmt_rtt as _, panic_probe as _}; 20use {defmt_rtt as _, panic_probe as _};
21
21bind_interrupts!(struct Irqs { 22bind_interrupts!(struct Irqs {
22 ETH => eth::InterruptHandler; 23 ETH => eth::InterruptHandler;
24 RNG => rng::InterruptHandler<peripherals::RNG>;
23}); 25});
24 26
25type Device = Ethernet<'static, ETH, GenericSMI>; 27type Device = Ethernet<'static, ETH, GenericSMI>;
@@ -56,7 +58,7 @@ async fn main(spawner: Spawner) -> ! {
56 info!("Hello World!"); 58 info!("Hello World!");
57 59
58 // Generate random seed. 60 // Generate random seed.
59 let mut rng = Rng::new(p.RNG); 61 let mut rng = Rng::new(p.RNG, Irqs);
60 let mut seed = [0; 8]; 62 let mut seed = [0; 8];
61 rng.fill_bytes(&mut seed); 63 rng.fill_bytes(&mut seed);
62 let seed = u64::from_le_bytes(seed); 64 let seed = u64::from_le_bytes(seed);
diff --git a/examples/stm32h5/src/bin/rng.rs b/examples/stm32h5/src/bin/rng.rs
index af9be0b62..7c8c50eca 100644
--- a/examples/stm32h5/src/bin/rng.rs
+++ b/examples/stm32h5/src/bin/rng.rs
@@ -5,14 +5,19 @@
5use defmt::*; 5use defmt::*;
6use embassy_executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_stm32::rng::Rng; 7use embassy_stm32::rng::Rng;
8use embassy_stm32::{bind_interrupts, peripherals, rng};
8use {defmt_rtt as _, panic_probe as _}; 9use {defmt_rtt as _, panic_probe as _};
9 10
11bind_interrupts!(struct Irqs {
12 RNG => rng::InterruptHandler<peripherals::RNG>;
13});
14
10#[embassy_executor::main] 15#[embassy_executor::main]
11async fn main(_spawner: Spawner) { 16async fn main(_spawner: Spawner) {
12 let p = embassy_stm32::init(Default::default()); 17 let p = embassy_stm32::init(Default::default());
13 info!("Hello World!"); 18 info!("Hello World!");
14 19
15 let mut rng = Rng::new(p.RNG); 20 let mut rng = Rng::new(p.RNG, Irqs);
16 21
17 let mut buf = [0u8; 16]; 22 let mut buf = [0u8; 16];
18 unwrap!(rng.async_fill_bytes(&mut buf).await); 23 unwrap!(rng.async_fill_bytes(&mut buf).await);
diff --git a/examples/stm32h7/src/bin/eth.rs b/examples/stm32h7/src/bin/eth.rs
index cfafcaed1..c93be9f00 100644
--- a/examples/stm32h7/src/bin/eth.rs
+++ b/examples/stm32h7/src/bin/eth.rs
@@ -11,14 +11,16 @@ use embassy_stm32::eth::{Ethernet, PacketQueue};
11use embassy_stm32::peripherals::ETH; 11use embassy_stm32::peripherals::ETH;
12use embassy_stm32::rng::Rng; 12use embassy_stm32::rng::Rng;
13use embassy_stm32::time::mhz; 13use embassy_stm32::time::mhz;
14use embassy_stm32::{bind_interrupts, eth, Config}; 14use embassy_stm32::{bind_interrupts, eth, peripherals, rng, Config};
15use embassy_time::{Duration, Timer}; 15use embassy_time::{Duration, Timer};
16use embedded_io::asynch::Write; 16use embedded_io::asynch::Write;
17use rand_core::RngCore; 17use rand_core::RngCore;
18use static_cell::make_static; 18use static_cell::make_static;
19use {defmt_rtt as _, panic_probe as _}; 19use {defmt_rtt as _, panic_probe as _};
20
20bind_interrupts!(struct Irqs { 21bind_interrupts!(struct Irqs {
21 ETH => eth::InterruptHandler; 22 ETH => eth::InterruptHandler;
23 RNG => rng::InterruptHandler<peripherals::RNG>;
22}); 24});
23 25
24type Device = Ethernet<'static, ETH, GenericSMI>; 26type Device = Ethernet<'static, ETH, GenericSMI>;
@@ -38,7 +40,7 @@ async fn main(spawner: Spawner) -> ! {
38 info!("Hello World!"); 40 info!("Hello World!");
39 41
40 // Generate random seed. 42 // Generate random seed.
41 let mut rng = Rng::new(p.RNG); 43 let mut rng = Rng::new(p.RNG, Irqs);
42 let mut seed = [0; 8]; 44 let mut seed = [0; 8];
43 rng.fill_bytes(&mut seed); 45 rng.fill_bytes(&mut seed);
44 let seed = u64::from_le_bytes(seed); 46 let seed = u64::from_le_bytes(seed);
diff --git a/examples/stm32h7/src/bin/eth_client.rs b/examples/stm32h7/src/bin/eth_client.rs
index 4ed737578..78005e91f 100644
--- a/examples/stm32h7/src/bin/eth_client.rs
+++ b/examples/stm32h7/src/bin/eth_client.rs
@@ -11,15 +11,17 @@ use embassy_stm32::eth::{Ethernet, PacketQueue};
11use embassy_stm32::peripherals::ETH; 11use embassy_stm32::peripherals::ETH;
12use embassy_stm32::rng::Rng; 12use embassy_stm32::rng::Rng;
13use embassy_stm32::time::mhz; 13use embassy_stm32::time::mhz;
14use embassy_stm32::{bind_interrupts, eth, Config}; 14use embassy_stm32::{bind_interrupts, eth, peripherals, rng, Config};
15use embassy_time::{Duration, Timer}; 15use embassy_time::{Duration, Timer};
16use embedded_io::asynch::Write; 16use embedded_io::asynch::Write;
17use embedded_nal_async::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpConnect}; 17use embedded_nal_async::{Ipv4Addr, SocketAddr, SocketAddrV4, TcpConnect};
18use rand_core::RngCore; 18use rand_core::RngCore;
19use static_cell::make_static; 19use static_cell::make_static;
20use {defmt_rtt as _, panic_probe as _}; 20use {defmt_rtt as _, panic_probe as _};
21
21bind_interrupts!(struct Irqs { 22bind_interrupts!(struct Irqs {
22 ETH => eth::InterruptHandler; 23 ETH => eth::InterruptHandler;
24 RNG => rng::InterruptHandler<peripherals::RNG>;
23}); 25});
24 26
25type Device = Ethernet<'static, ETH, GenericSMI>; 27type Device = Ethernet<'static, ETH, GenericSMI>;
@@ -39,7 +41,7 @@ async fn main(spawner: Spawner) -> ! {
39 info!("Hello World!"); 41 info!("Hello World!");
40 42
41 // Generate random seed. 43 // Generate random seed.
42 let mut rng = Rng::new(p.RNG); 44 let mut rng = Rng::new(p.RNG, Irqs);
43 let mut seed = [0; 8]; 45 let mut seed = [0; 8];
44 rng.fill_bytes(&mut seed); 46 rng.fill_bytes(&mut seed);
45 let seed = u64::from_le_bytes(seed); 47 let seed = u64::from_le_bytes(seed);
diff --git a/examples/stm32h7/src/bin/rng.rs b/examples/stm32h7/src/bin/rng.rs
index af9be0b62..7c8c50eca 100644
--- a/examples/stm32h7/src/bin/rng.rs
+++ b/examples/stm32h7/src/bin/rng.rs
@@ -5,14 +5,19 @@
5use defmt::*; 5use defmt::*;
6use embassy_executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_stm32::rng::Rng; 7use embassy_stm32::rng::Rng;
8use embassy_stm32::{bind_interrupts, peripherals, rng};
8use {defmt_rtt as _, panic_probe as _}; 9use {defmt_rtt as _, panic_probe as _};
9 10
11bind_interrupts!(struct Irqs {
12 RNG => rng::InterruptHandler<peripherals::RNG>;
13});
14
10#[embassy_executor::main] 15#[embassy_executor::main]
11async fn main(_spawner: Spawner) { 16async fn main(_spawner: Spawner) {
12 let p = embassy_stm32::init(Default::default()); 17 let p = embassy_stm32::init(Default::default());
13 info!("Hello World!"); 18 info!("Hello World!");
14 19
15 let mut rng = Rng::new(p.RNG); 20 let mut rng = Rng::new(p.RNG, Irqs);
16 21
17 let mut buf = [0u8; 16]; 22 let mut buf = [0u8; 16];
18 unwrap!(rng.async_fill_bytes(&mut buf).await); 23 unwrap!(rng.async_fill_bytes(&mut buf).await);
diff --git a/examples/stm32l0/src/bin/lora_lorawan.rs b/examples/stm32l0/src/bin/lora_lorawan.rs
index c397edd58..03c793b32 100644
--- a/examples/stm32l0/src/bin/lora_lorawan.rs
+++ b/examples/stm32l0/src/bin/lora_lorawan.rs
@@ -12,8 +12,8 @@ use embassy_lora::LoraTimer;
12use embassy_stm32::exti::{Channel, ExtiInput}; 12use embassy_stm32::exti::{Channel, ExtiInput};
13use embassy_stm32::gpio::{Input, Level, Output, Pin, Pull, Speed}; 13use embassy_stm32::gpio::{Input, Level, Output, Pin, Pull, Speed};
14use embassy_stm32::rng::Rng; 14use embassy_stm32::rng::Rng;
15use embassy_stm32::spi;
16use embassy_stm32::time::khz; 15use embassy_stm32::time::khz;
16use embassy_stm32::{bind_interrupts, peripherals, rng, spi};
17use embassy_time::Delay; 17use embassy_time::Delay;
18use lora_phy::mod_params::*; 18use lora_phy::mod_params::*;
19use lora_phy::sx1276_7_8_9::SX1276_7_8_9; 19use lora_phy::sx1276_7_8_9::SX1276_7_8_9;
@@ -23,6 +23,10 @@ use lorawan_device::async_device::lora_radio::LoRaRadio;
23use lorawan_device::async_device::{region, Device, JoinMode}; 23use lorawan_device::async_device::{region, Device, JoinMode};
24use {defmt_rtt as _, panic_probe as _}; 24use {defmt_rtt as _, panic_probe as _};
25 25
26bind_interrupts!(struct Irqs {
27 RNG_LPUART1 => rng::InterruptHandler<peripherals::RNG>;
28});
29
26const LORAWAN_REGION: region::Region = region::Region::EU868; // warning: set this appropriately for the region 30const LORAWAN_REGION: region::Region = region::Region::EU868; // warning: set this appropriately for the region
27 31
28#[embassy_executor::main] 32#[embassy_executor::main]
@@ -66,7 +70,7 @@ async fn main(_spawner: Spawner) {
66 70
67 let radio = LoRaRadio::new(lora); 71 let radio = LoRaRadio::new(lora);
68 let region: region::Configuration = region::Configuration::new(LORAWAN_REGION); 72 let region: region::Configuration = region::Configuration::new(LORAWAN_REGION);
69 let mut device: Device<_, Crypto, _, _> = Device::new(region, radio, LoraTimer::new(), Rng::new(p.RNG)); 73 let mut device: Device<_, Crypto, _, _> = Device::new(region, radio, LoraTimer::new(), Rng::new(p.RNG, Irqs));
70 74
71 defmt::info!("Joining LoRaWAN network"); 75 defmt::info!("Joining LoRaWAN network");
72 76
diff --git a/examples/stm32l4/src/bin/rng.rs b/examples/stm32l4/src/bin/rng.rs
index c9302bb99..806e49f59 100644
--- a/examples/stm32l4/src/bin/rng.rs
+++ b/examples/stm32l4/src/bin/rng.rs
@@ -6,9 +6,13 @@ use defmt::*;
6use embassy_executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_stm32::rcc::{ClockSrc, PLLClkDiv, PLLMul, PLLSource, PLLSrcDiv}; 7use embassy_stm32::rcc::{ClockSrc, PLLClkDiv, PLLMul, PLLSource, PLLSrcDiv};
8use embassy_stm32::rng::Rng; 8use embassy_stm32::rng::Rng;
9use embassy_stm32::Config; 9use embassy_stm32::{bind_interrupts, peripherals, rng, Config};
10use {defmt_rtt as _, panic_probe as _}; 10use {defmt_rtt as _, panic_probe as _};
11 11
12bind_interrupts!(struct Irqs {
13 RNG => rng::InterruptHandler<peripherals::RNG>;
14});
15
12#[embassy_executor::main] 16#[embassy_executor::main]
13async fn main(_spawner: Spawner) { 17async fn main(_spawner: Spawner) {
14 let mut config = Config::default(); 18 let mut config = Config::default();
@@ -24,7 +28,7 @@ async fn main(_spawner: Spawner) {
24 28
25 info!("Hello World!"); 29 info!("Hello World!");
26 30
27 let mut rng = Rng::new(p.RNG); 31 let mut rng = Rng::new(p.RNG, Irqs);
28 32
29 let mut buf = [0u8; 16]; 33 let mut buf = [0u8; 16];
30 unwrap!(rng.async_fill_bytes(&mut buf).await); 34 unwrap!(rng.async_fill_bytes(&mut buf).await);
diff --git a/examples/stm32l5/src/bin/rng.rs b/examples/stm32l5/src/bin/rng.rs
index d359847e8..9549d64d8 100644
--- a/examples/stm32l5/src/bin/rng.rs
+++ b/examples/stm32l5/src/bin/rng.rs
@@ -6,9 +6,13 @@ use defmt::*;
6use embassy_executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_stm32::rcc::{ClockSrc, PLLClkDiv, PLLMul, PLLSource, PLLSrcDiv}; 7use embassy_stm32::rcc::{ClockSrc, PLLClkDiv, PLLMul, PLLSource, PLLSrcDiv};
8use embassy_stm32::rng::Rng; 8use embassy_stm32::rng::Rng;
9use embassy_stm32::Config; 9use embassy_stm32::{bind_interrupts, peripherals, rng, Config};
10use {defmt_rtt as _, panic_probe as _}; 10use {defmt_rtt as _, panic_probe as _};
11 11
12bind_interrupts!(struct Irqs {
13 RNG => rng::InterruptHandler<peripherals::RNG>;
14});
15
12#[embassy_executor::main] 16#[embassy_executor::main]
13async fn main(_spawner: Spawner) { 17async fn main(_spawner: Spawner) {
14 let mut config = Config::default(); 18 let mut config = Config::default();
@@ -23,7 +27,7 @@ async fn main(_spawner: Spawner) {
23 27
24 info!("Hello World!"); 28 info!("Hello World!");
25 29
26 let mut rng = Rng::new(p.RNG); 30 let mut rng = Rng::new(p.RNG, Irqs);
27 31
28 let mut buf = [0u8; 16]; 32 let mut buf = [0u8; 16];
29 unwrap!(rng.async_fill_bytes(&mut buf).await); 33 unwrap!(rng.async_fill_bytes(&mut buf).await);
diff --git a/examples/stm32l5/src/bin/usb_ethernet.rs b/examples/stm32l5/src/bin/usb_ethernet.rs
index 32eba4277..5e75b21c9 100644
--- a/examples/stm32l5/src/bin/usb_ethernet.rs
+++ b/examples/stm32l5/src/bin/usb_ethernet.rs
@@ -9,7 +9,7 @@ use embassy_net::{Stack, StackResources};
9use embassy_stm32::rcc::*; 9use embassy_stm32::rcc::*;
10use embassy_stm32::rng::Rng; 10use embassy_stm32::rng::Rng;
11use embassy_stm32::usb::Driver; 11use embassy_stm32::usb::Driver;
12use embassy_stm32::{bind_interrupts, peripherals, usb, Config}; 12use embassy_stm32::{bind_interrupts, peripherals, rng, usb, Config};
13use embassy_usb::class::cdc_ncm::embassy_net::{Device, Runner, State as NetState}; 13use embassy_usb::class::cdc_ncm::embassy_net::{Device, Runner, State as NetState};
14use embassy_usb::class::cdc_ncm::{CdcNcmClass, State}; 14use embassy_usb::class::cdc_ncm::{CdcNcmClass, State};
15use embassy_usb::{Builder, UsbDevice}; 15use embassy_usb::{Builder, UsbDevice};
@@ -24,6 +24,7 @@ const MTU: usize = 1514;
24 24
25bind_interrupts!(struct Irqs { 25bind_interrupts!(struct Irqs {
26 USB_FS => usb::InterruptHandler<peripherals::USB>; 26 USB_FS => usb::InterruptHandler<peripherals::USB>;
27 RNG => rng::InterruptHandler<peripherals::RNG>;
27}); 28});
28 29
29#[embassy_executor::task] 30#[embassy_executor::task]
@@ -99,7 +100,7 @@ async fn main(spawner: Spawner) {
99 //}); 100 //});
100 101
101 // Generate random seed 102 // Generate random seed
102 let mut rng = Rng::new(p.RNG); 103 let mut rng = Rng::new(p.RNG, Irqs);
103 let seed = rng.next_u64(); 104 let seed = rng.next_u64();
104 105
105 // Init network stack 106 // Init network stack
diff --git a/examples/stm32wl/src/bin/lora_lorawan.rs b/examples/stm32wl/src/bin/lora_lorawan.rs
index 805d21418..2c9c98861 100644
--- a/examples/stm32wl/src/bin/lora_lorawan.rs
+++ b/examples/stm32wl/src/bin/lora_lorawan.rs
@@ -10,9 +10,9 @@ use embassy_executor::Spawner;
10use embassy_lora::iv::{InterruptHandler, Stm32wlInterfaceVariant}; 10use embassy_lora::iv::{InterruptHandler, Stm32wlInterfaceVariant};
11use embassy_lora::LoraTimer; 11use embassy_lora::LoraTimer;
12use embassy_stm32::gpio::{Level, Output, Pin, Speed}; 12use embassy_stm32::gpio::{Level, Output, Pin, Speed};
13use embassy_stm32::rng::Rng; 13use embassy_stm32::rng::{self, Rng};
14use embassy_stm32::spi::Spi; 14use embassy_stm32::spi::Spi;
15use embassy_stm32::{bind_interrupts, pac}; 15use embassy_stm32::{bind_interrupts, pac, peripherals};
16use embassy_time::Delay; 16use embassy_time::Delay;
17use lora_phy::mod_params::*; 17use lora_phy::mod_params::*;
18use lora_phy::sx1261_2::SX1261_2; 18use lora_phy::sx1261_2::SX1261_2;
@@ -26,6 +26,7 @@ const LORAWAN_REGION: region::Region = region::Region::EU868; // warning: set th
26 26
27bind_interrupts!(struct Irqs{ 27bind_interrupts!(struct Irqs{
28 SUBGHZ_RADIO => InterruptHandler; 28 SUBGHZ_RADIO => InterruptHandler;
29 RNG => rng::InterruptHandler<peripherals::RNG>;
29}); 30});
30 31
31#[embassy_executor::main] 32#[embassy_executor::main]
@@ -58,7 +59,7 @@ async fn main(_spawner: Spawner) {
58 }; 59 };
59 let radio = LoRaRadio::new(lora); 60 let radio = LoRaRadio::new(lora);
60 let region: region::Configuration = region::Configuration::new(LORAWAN_REGION); 61 let region: region::Configuration = region::Configuration::new(LORAWAN_REGION);
61 let mut device: Device<_, Crypto, _, _> = Device::new(region, radio, LoraTimer::new(), Rng::new(p.RNG)); 62 let mut device: Device<_, Crypto, _, _> = Device::new(region, radio, LoraTimer::new(), Rng::new(p.RNG, Irqs));
62 63
63 defmt::info!("Joining LoRaWAN network"); 64 defmt::info!("Joining LoRaWAN network");
64 65
diff --git a/examples/stm32wl/src/bin/random.rs b/examples/stm32wl/src/bin/random.rs
index d8562fca5..592e65f40 100644
--- a/examples/stm32wl/src/bin/random.rs
+++ b/examples/stm32wl/src/bin/random.rs
@@ -4,10 +4,14 @@
4 4
5use defmt::*; 5use defmt::*;
6use embassy_executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_stm32::pac; 7use embassy_stm32::rng::{self, Rng};
8use embassy_stm32::rng::Rng; 8use embassy_stm32::{bind_interrupts, pac, peripherals};
9use {defmt_rtt as _, panic_probe as _}; 9use {defmt_rtt as _, panic_probe as _};
10 10
11bind_interrupts!(struct Irqs{
12 RNG => rng::InterruptHandler<peripherals::RNG>;
13});
14
11#[embassy_executor::main] 15#[embassy_executor::main]
12async fn main(_spawner: Spawner) { 16async fn main(_spawner: Spawner) {
13 let mut config = embassy_stm32::Config::default(); 17 let mut config = embassy_stm32::Config::default();
@@ -21,7 +25,7 @@ async fn main(_spawner: Spawner) {
21 25
22 info!("Hello World!"); 26 info!("Hello World!");
23 27
24 let mut rng = Rng::new(p.RNG); 28 let mut rng = Rng::new(p.RNG, Irqs);
25 29
26 let mut buf = [0u8; 16]; 30 let mut buf = [0u8; 16];
27 unwrap!(rng.async_fill_bytes(&mut buf).await); 31 unwrap!(rng.async_fill_bytes(&mut buf).await);