Remove builders from Config(s) and examples.

This commit is contained in:
Bob McWhirter 2021-08-04 11:32:39 -04:00
parent 07a095be0d
commit 03f15d3a60
8 changed files with 67 additions and 104 deletions

View file

@ -67,14 +67,7 @@ pub use generated::{peripherals, Peripherals};
#[non_exhaustive] #[non_exhaustive]
pub struct Config { pub struct Config {
rcc: rcc::Config, pub rcc: rcc::Config,
}
impl Config {
pub fn rcc(mut self, rcc: rcc::Config) -> Self {
self.rcc = rcc;
self
}
} }
impl Default for Config { impl Default for Config {

View file

@ -70,83 +70,6 @@ pub struct Config {
pub pll3: PllConfig, pub pll3: PllConfig,
} }
impl Config {
pub fn sys_ck<T: Into<Hertz>>(mut self, freq: T) -> Self {
self.sys_ck = Some(freq.into());
self
}
pub fn per_ck<T: Into<Hertz>>(mut self, freq: T) -> Self {
self.per_ck = Some(freq.into());
self
}
pub fn pclk1<T: Into<Hertz>>(mut self, freq: T) -> Self {
self.pclk1 = Some(freq.into());
self
}
pub fn pclk2<T: Into<Hertz>>(mut self, freq: T) -> Self {
self.pclk2 = Some(freq.into());
self
}
pub fn pclk3<T: Into<Hertz>>(mut self, freq: T) -> Self {
self.pclk3 = Some(freq.into());
self
}
pub fn pclk4<T: Into<Hertz>>(mut self, freq: T) -> Self {
self.pclk4 = Some(freq.into());
self
}
pub fn pll1_p<T: Into<Hertz>>(mut self, freq: T) -> Self {
self.pll1.p_ck = Some(freq.into());
self
}
pub fn pll1_q<T: Into<Hertz>>(mut self, freq: T) -> Self {
self.pll1.q_ck = Some(freq.into());
self
}
pub fn pll1_r<T: Into<Hertz>>(mut self, freq: T) -> Self {
self.pll1.r_ck = Some(freq.into());
self
}
pub fn pll2_p<T: Into<Hertz>>(mut self, freq: T) -> Self {
self.pll2.p_ck = Some(freq.into());
self
}
pub fn pll2_q<T: Into<Hertz>>(mut self, freq: T) -> Self {
self.pll2.q_ck = Some(freq.into());
self
}
pub fn pll2_r<T: Into<Hertz>>(mut self, freq: T) -> Self {
self.pll2.r_ck = Some(freq.into());
self
}
pub fn pll3_p<T: Into<Hertz>>(mut self, freq: T) -> Self {
self.pll3.p_ck = Some(freq.into());
self
}
pub fn pll3_q<T: Into<Hertz>>(mut self, freq: T) -> Self {
self.pll3.q_ck = Some(freq.into());
self
}
pub fn pll3_r<T: Into<Hertz>>(mut self, freq: T) -> Self {
self.pll3.r_ck = Some(freq.into());
self
}
}
pub struct Rcc<'d> { pub struct Rcc<'d> {
inner: PhantomData<&'d ()>, inner: PhantomData<&'d ()>,
config: Config, config: Config,

View file

@ -12,7 +12,9 @@ use embassy_stm32::Config;
pub fn config() -> Config { pub fn config() -> Config {
let mut rcc_config = rcc::Config::default(); let mut rcc_config = rcc::Config::default();
rcc_config.enable_debug_wfe = true; rcc_config.enable_debug_wfe = true;
Config::default().rcc(rcc_config) let mut config = Config::default();
config.rcc = rcc_config;
config
} }
defmt::timestamp! {"{=u64}", { defmt::timestamp! {"{=u64}", {

View file

@ -22,7 +22,9 @@ fn config() -> Config {
rcc_config.sys_ck = Some(Hertz(84_000_000)); rcc_config.sys_ck = Some(Hertz(84_000_000));
rcc_config.enable_debug_wfe = true; rcc_config.enable_debug_wfe = true;
Config::default().rcc(rcc_config) let mut config = Config::default();
config.rcc = rcc_config;
config
} }
#[embassy::main(config = "config()")] #[embassy::main(config = "config()")]

View file

@ -22,9 +22,7 @@ use embassy_stm32::Config;
fn main() -> ! { fn main() -> ! {
info!("Hello World, dude!"); info!("Hello World, dude!");
let p = embassy_stm32::init( let p = embassy_stm32::init( config() );
Config::default().rcc(rcc::Config::default().sys_ck(400.mhz()).pll1_q(100.mhz())),
);
unsafe { unsafe {
Dbgmcu::enable_all(); Dbgmcu::enable_all();
@ -54,3 +52,16 @@ fn to_sine_wave(v: u8) -> u8 {
(r.sin() * 128.0 + 127.0) as u8 (r.sin() * 128.0 + 127.0) as u8
} }
} }
fn config() -> Config {
let mut config = Config::default();
config.rcc = rcc_config();
config
}
fn rcc_config() -> rcc::Config {
let mut config = rcc::Config::default();
config.sys_ck = Some(400.mhz().into());
config.pll1.q_ck = Some( 100.mhz().into() );
config
}

View file

@ -22,9 +22,10 @@ use embassy_net::{
use embassy_stm32::clock::{Alarm, Clock}; use embassy_stm32::clock::{Alarm, Clock};
use embassy_stm32::eth::lan8742a::LAN8742A; use embassy_stm32::eth::lan8742a::LAN8742A;
use embassy_stm32::eth::{Ethernet, State}; use embassy_stm32::eth::{Ethernet, State};
use embassy_stm32::rcc::{Config as RccConfig, Rcc}; use embassy_stm32::rcc::{self, Rcc};
use embassy_stm32::rng::Random; use embassy_stm32::rng::Random;
use embassy_stm32::time::Hertz; use embassy_stm32::time::Hertz;
use embassy_stm32::time::U32Ext;
use embassy_stm32::{interrupt, peripherals, Config}; use embassy_stm32::{interrupt, peripherals, Config};
use heapless::Vec; use heapless::Vec;
use panic_probe as _; use panic_probe as _;
@ -108,16 +109,11 @@ fn main() -> ! {
info!("Hello World!"); info!("Hello World!");
info!("Setup RCC..."); info!("Setup RCC...");
let mut rcc_config = RccConfig::default(); let mut p = embassy_stm32::init(config());
rcc_config.sys_ck = Some(Hertz(400_000_000));
rcc_config.pll1.q_ck = Some(Hertz(100_000_000));
let config = Config::default().rcc(rcc_config);
let mut p = embassy_stm32::init(config);
// Constrain and Freeze clock // Constrain and Freeze clock
let mut rcc = Rcc::new(&mut p.RCC, RccConfig::default()); let mut rcc = Rcc::new(&mut p.RCC, rcc::Config::default());
rcc.enable_debug_wfe(&mut p.DBGMCU, true); rcc.enable_debug_wfe(&mut p.DBGMCU, true);
let rtc_int = interrupt_take!(TIM2); let rtc_int = interrupt_take!(TIM2);
@ -157,3 +153,16 @@ fn main() -> ! {
unwrap!(spawner.spawn(main_task(eth, config, spawner))); unwrap!(spawner.spawn(main_task(eth, config, spawner)));
}) })
} }
fn config() -> Config {
let mut config = Config::default();
config.rcc = rcc_config();
config
}
fn rcc_config() -> rcc::Config {
let mut config = rcc::Config::default();
config.sys_ck = Some(400.mhz().into());
config.pll1.q_ck = Some( 100.mhz().into() );
config
}

View file

@ -60,9 +60,7 @@ fn main() -> ! {
Dbgmcu::enable_all(); Dbgmcu::enable_all();
} }
let p = embassy_stm32::init( let p = embassy_stm32::init( config() );
Config::default().rcc(rcc::Config::default().sys_ck(400.mhz()).pll1_q(100.mhz())),
);
let spi = spi::Spi::new( let spi = spi::Spi::new(
p.SPI3, p.SPI3,
@ -82,3 +80,16 @@ fn main() -> ! {
unwrap!(spawner.spawn(main_task(spi))); unwrap!(spawner.spawn(main_task(spi)));
}) })
} }
fn config() -> Config {
let mut config = Config::default();
config.rcc = rcc_config();
config
}
fn rcc_config() -> rcc::Config {
let mut config = rcc::Config::default();
config.sys_ck = Some(400.mhz().into());
config.pll1.q_ck = Some( 100.mhz().into() );
config
}

View file

@ -8,6 +8,7 @@
#[path = "../example_common.rs"] #[path = "../example_common.rs"]
mod example_common; mod example_common;
use core::fmt::Write; use core::fmt::Write;
use embassy::executor::Executor; use embassy::executor::Executor;
use embassy::time::Clock; use embassy::time::Clock;
@ -55,9 +56,7 @@ fn main() -> ! {
Dbgmcu::enable_all(); Dbgmcu::enable_all();
} }
let p = embassy_stm32::init( let p = embassy_stm32::init( config() );
Config::default().rcc(rcc::Config::default().sys_ck(400.mhz()).pll1_q(100.mhz())),
);
let spi = spi::Spi::new( let spi = spi::Spi::new(
p.SPI3, p.SPI3,
@ -77,3 +76,16 @@ fn main() -> ! {
unwrap!(spawner.spawn(main_task(spi))); unwrap!(spawner.spawn(main_task(spi)));
}) })
} }
fn config() -> Config {
let mut config = Config::default();
config.rcc = rcc_config();
config
}
fn rcc_config() -> rcc::Config {
let mut config = rcc::Config::default();
config.sys_ck = Some(400.mhz().into());
config.pll1.q_ck = Some( 100.mhz().into() );
config
}