aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/stm32l4/src/bin/rtc.rs29
-rw-r--r--examples/stm32l4/src/bin/spe_adin1110_http_server.rs34
-rw-r--r--examples/stm32wl/src/bin/lora_lorawan.rs22
-rw-r--r--examples/stm32wl/src/bin/random.rs23
4 files changed, 72 insertions, 36 deletions
diff --git a/examples/stm32l4/src/bin/rtc.rs b/examples/stm32l4/src/bin/rtc.rs
index fec0a349d..69527c9ad 100644
--- a/examples/stm32l4/src/bin/rtc.rs
+++ b/examples/stm32l4/src/bin/rtc.rs
@@ -5,7 +5,6 @@
5use chrono::{NaiveDate, NaiveDateTime}; 5use chrono::{NaiveDate, NaiveDateTime};
6use defmt::*; 6use defmt::*;
7use embassy_executor::Spawner; 7use embassy_executor::Spawner;
8use embassy_stm32::rcc::{ClockSrc, LsConfig, PLLSource, Pll, PllMul, PllPreDiv, PllRDiv};
9use embassy_stm32::rtc::{Rtc, RtcConfig}; 8use embassy_stm32::rtc::{Rtc, RtcConfig};
10use embassy_stm32::time::Hertz; 9use embassy_stm32::time::Hertz;
11use embassy_stm32::Config; 10use embassy_stm32::Config;
@@ -15,17 +14,23 @@ use {defmt_rtt as _, panic_probe as _};
15#[embassy_executor::main] 14#[embassy_executor::main]
16async fn main(_spawner: Spawner) { 15async fn main(_spawner: Spawner) {
17 let mut config = Config::default(); 16 let mut config = Config::default();
18 config.rcc.mux = ClockSrc::PLL1_R; 17 {
19 config.rcc.hse = Some(Hertz::mhz(8)); 18 use embassy_stm32::rcc::*;
20 config.rcc.pll = Some(Pll { 19 config.rcc.mux = ClockSrc::PLL1_R;
21 source: PLLSource::HSE, 20 config.rcc.hse = Some(Hse {
22 prediv: PllPreDiv::DIV1, 21 freq: Hertz::mhz(8),
23 mul: PllMul::MUL20, 22 mode: HseMode::Oscillator,
24 divp: None, 23 });
25 divq: None, 24 config.rcc.pll = Some(Pll {
26 divr: Some(PllRDiv::DIV2), // sysclk 80Mhz clock (8 / 1 * 20 / 2) 25 source: PLLSource::HSE,
27 }); 26 prediv: PllPreDiv::DIV1,
28 config.rcc.ls = LsConfig::default_lse(); 27 mul: PllMul::MUL20,
28 divp: None,
29 divq: None,
30 divr: Some(PllRDiv::DIV2), // sysclk 80Mhz clock (8 / 1 * 20 / 2)
31 });
32 config.rcc.ls = LsConfig::default_lse();
33 }
29 let p = embassy_stm32::init(config); 34 let p = embassy_stm32::init(config);
30 35
31 info!("Hello World!"); 36 info!("Hello World!");
diff --git a/examples/stm32l4/src/bin/spe_adin1110_http_server.rs b/examples/stm32l4/src/bin/spe_adin1110_http_server.rs
index 3c9d2cfc0..f76b504a7 100644
--- a/examples/stm32l4/src/bin/spe_adin1110_http_server.rs
+++ b/examples/stm32l4/src/bin/spe_adin1110_http_server.rs
@@ -48,7 +48,6 @@ use embassy_net_adin1110::{self, Device, Runner, ADIN1110};
48use embedded_hal_bus::spi::ExclusiveDevice; 48use embedded_hal_bus::spi::ExclusiveDevice;
49use hal::gpio::Pull; 49use hal::gpio::Pull;
50use hal::i2c::Config as I2C_Config; 50use hal::i2c::Config as I2C_Config;
51use hal::rcc::{ClockSrc, PLLSource, Pll, PllMul, PllPreDiv, PllRDiv};
52use hal::spi::{Config as SPI_Config, Spi}; 51use hal::spi::{Config as SPI_Config, Spi};
53use hal::time::Hertz; 52use hal::time::Hertz;
54 53
@@ -74,20 +73,25 @@ async fn main(spawner: Spawner) {
74 defmt::println!("Start main()"); 73 defmt::println!("Start main()");
75 74
76 let mut config = embassy_stm32::Config::default(); 75 let mut config = embassy_stm32::Config::default();
77 76 {
78 // 80Mhz clock (Source: 8 / SrcDiv: 1 * PLLMul 20 / ClkDiv 2) 77 use embassy_stm32::rcc::*;
79 // 80MHz highest frequency for flash 0 wait. 78 // 80Mhz clock (Source: 8 / SrcDiv: 1 * PLLMul 20 / ClkDiv 2)
80 config.rcc.mux = ClockSrc::PLL1_R; 79 // 80MHz highest frequency for flash 0 wait.
81 config.rcc.hse = Some(Hertz::mhz(8)); 80 config.rcc.mux = ClockSrc::PLL1_R;
82 config.rcc.pll = Some(Pll { 81 config.rcc.hse = Some(Hse {
83 source: PLLSource::HSE, 82 freq: Hertz::mhz(8),
84 prediv: PllPreDiv::DIV1, 83 mode: HseMode::Oscillator,
85 mul: PllMul::MUL20, 84 });
86 divp: None, 85 config.rcc.pll = Some(Pll {
87 divq: None, 86 source: PLLSource::HSE,
88 divr: Some(PllRDiv::DIV2), // sysclk 80Mhz clock (8 / 1 * 20 / 2) 87 prediv: PllPreDiv::DIV1,
89 }); 88 mul: PllMul::MUL20,
90 config.rcc.hsi48 = true; // needed for rng 89 divp: None,
90 divq: None,
91 divr: Some(PllRDiv::DIV2), // sysclk 80Mhz clock (8 / 1 * 20 / 2)
92 });
93 config.rcc.hsi48 = true; // needed for rng
94 }
91 95
92 let dp = embassy_stm32::init(config); 96 let dp = embassy_stm32::init(config);
93 97
diff --git a/examples/stm32wl/src/bin/lora_lorawan.rs b/examples/stm32wl/src/bin/lora_lorawan.rs
index 8c789afbc..e26c274ad 100644
--- a/examples/stm32wl/src/bin/lora_lorawan.rs
+++ b/examples/stm32wl/src/bin/lora_lorawan.rs
@@ -12,7 +12,8 @@ use embassy_lora::LoraTimer;
12use embassy_stm32::gpio::{Level, Output, Pin, Speed}; 12use embassy_stm32::gpio::{Level, Output, Pin, Speed};
13use embassy_stm32::rng::{self, Rng}; 13use embassy_stm32::rng::{self, Rng};
14use embassy_stm32::spi::Spi; 14use embassy_stm32::spi::Spi;
15use embassy_stm32::{bind_interrupts, pac, peripherals}; 15use embassy_stm32::time::Hertz;
16use embassy_stm32::{bind_interrupts, peripherals};
16use embassy_time::Delay; 17use embassy_time::Delay;
17use lora_phy::mod_params::*; 18use lora_phy::mod_params::*;
18use lora_phy::sx1261_2::SX1261_2; 19use lora_phy::sx1261_2::SX1261_2;
@@ -33,11 +34,24 @@ bind_interrupts!(struct Irqs{
33#[embassy_executor::main] 34#[embassy_executor::main]
34async fn main(_spawner: Spawner) { 35async fn main(_spawner: Spawner) {
35 let mut config = embassy_stm32::Config::default(); 36 let mut config = embassy_stm32::Config::default();
36 config.rcc.mux = embassy_stm32::rcc::ClockSrc::HSE; 37 {
38 use embassy_stm32::rcc::*;
39 config.rcc.hse = Some(Hse {
40 freq: Hertz(32_000_000),
41 mode: HseMode::Bypass,
42 });
43 config.rcc.mux = ClockSrc::PLL1_R;
44 config.rcc.pll = Some(Pll {
45 source: PLLSource::HSE,
46 prediv: PllPreDiv::DIV2,
47 mul: PllMul::MUL6,
48 divp: None,
49 divq: Some(PllQDiv::DIV2), // PLL1_Q clock (32 / 2 * 6 / 2), used for RNG
50 divr: Some(PllRDiv::DIV2), // sysclk 48Mhz clock (32 / 2 * 6 / 2)
51 });
52 }
37 let p = embassy_stm32::init(config); 53 let p = embassy_stm32::init(config);
38 54
39 pac::RCC.ccipr().modify(|w| w.set_rngsel(0b01));
40
41 let spi = Spi::new_subghz(p.SUBGHZSPI, p.DMA1_CH1, p.DMA1_CH2); 55 let spi = Spi::new_subghz(p.SUBGHZSPI, p.DMA1_CH1, p.DMA1_CH2);
42 56
43 // Set CTRL1 and CTRL3 for high-power transmission, while CTRL2 acts as an RF switch between tx and rx 57 // Set CTRL1 and CTRL3 for high-power transmission, while CTRL2 acts as an RF switch between tx and rx
diff --git a/examples/stm32wl/src/bin/random.rs b/examples/stm32wl/src/bin/random.rs
index 70676c704..2cf7ef9d0 100644
--- a/examples/stm32wl/src/bin/random.rs
+++ b/examples/stm32wl/src/bin/random.rs
@@ -4,9 +4,9 @@
4 4
5use defmt::*; 5use defmt::*;
6use embassy_executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_stm32::rcc::{ClockSrc, MSIRange};
8use embassy_stm32::rng::{self, Rng}; 7use embassy_stm32::rng::{self, Rng};
9use embassy_stm32::{bind_interrupts, pac, peripherals}; 8use embassy_stm32::time::Hertz;
9use embassy_stm32::{bind_interrupts, peripherals};
10use {defmt_rtt as _, panic_probe as _}; 10use {defmt_rtt as _, panic_probe as _};
11 11
12bind_interrupts!(struct Irqs{ 12bind_interrupts!(struct Irqs{
@@ -16,11 +16,24 @@ bind_interrupts!(struct Irqs{
16#[embassy_executor::main] 16#[embassy_executor::main]
17async fn main(_spawner: Spawner) { 17async fn main(_spawner: Spawner) {
18 let mut config = embassy_stm32::Config::default(); 18 let mut config = embassy_stm32::Config::default();
19 config.rcc.mux = ClockSrc::MSI(MSIRange::RANGE32M); 19 {
20 use embassy_stm32::rcc::*;
21 config.rcc.hse = Some(Hse {
22 freq: Hertz(32_000_000),
23 mode: HseMode::Bypass,
24 });
25 config.rcc.mux = ClockSrc::PLL1_R;
26 config.rcc.pll = Some(Pll {
27 source: PLLSource::HSE,
28 prediv: PllPreDiv::DIV2,
29 mul: PllMul::MUL6,
30 divp: None,
31 divq: Some(PllQDiv::DIV2), // PLL1_Q clock (32 / 2 * 6 / 2), used for RNG
32 divr: Some(PllRDiv::DIV2), // sysclk 48Mhz clock (32 / 2 * 6 / 2)
33 });
34 }
20 let p = embassy_stm32::init(config); 35 let p = embassy_stm32::init(config);
21 36
22 pac::RCC.ccipr().modify(|w| w.set_rngsel(0b11)); // msi
23
24 info!("Hello World!"); 37 info!("Hello World!");
25 38
26 let mut rng = Rng::new(p.RNG, Irqs); 39 let mut rng = Rng::new(p.RNG, Irqs);