aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2024-02-26 00:00:17 +0100
committerDario Nieuwenhuis <[email protected]>2024-02-26 00:00:17 +0100
commit489d0be2a2971cfae7d6413b601bbd044d42e351 (patch)
treeb930aa13b1f43efedcf8bc19e85e94036dedc7d2
parent497515ed57b768332295ef58630231609fb959fc (diff)
stm32/rcc: unify naming sysclk field to `sys`, enum to `Sysclk`.
-rw-r--r--embassy-stm32/src/rcc/c0.rs14
-rw-r--r--embassy-stm32/src/rcc/g0.rs16
-rw-r--r--embassy-stm32/src/rcc/l.rs26
-rw-r--r--embassy-stm32/src/rcc/u5.rs20
-rw-r--r--embassy-stm32/src/rcc/wba.rs24
-rw-r--r--examples/stm32g0/src/bin/hf_timer.rs4
-rw-r--r--examples/stm32l1/src/bin/usb_serial.rs2
-rw-r--r--examples/stm32l4/src/bin/rng.rs4
-rw-r--r--examples/stm32l4/src/bin/rtc.rs2
-rw-r--r--examples/stm32l4/src/bin/spe_adin1110_http_server.rs2
-rw-r--r--examples/stm32l4/src/bin/usb_serial.rs2
-rw-r--r--examples/stm32l5/src/bin/rng.rs4
-rw-r--r--examples/stm32l5/src/bin/usb_ethernet.rs2
-rw-r--r--examples/stm32l5/src/bin/usb_hid_mouse.rs2
-rw-r--r--examples/stm32l5/src/bin/usb_serial.rs2
-rw-r--r--examples/stm32u5/src/bin/usb_serial.rs2
-rw-r--r--examples/stm32wl/src/bin/random.rs2
-rw-r--r--examples/stm32wl/src/bin/rtc.rs2
-rw-r--r--examples/stm32wl/src/bin/uart_async.rs2
-rw-r--r--tests/stm32/src/common.rs14
20 files changed, 74 insertions, 74 deletions
diff --git a/embassy-stm32/src/rcc/c0.rs b/embassy-stm32/src/rcc/c0.rs
index ca1222185..ec6ec34e8 100644
--- a/embassy-stm32/src/rcc/c0.rs
+++ b/embassy-stm32/src/rcc/c0.rs
@@ -9,7 +9,7 @@ pub const HSI_FREQ: Hertz = Hertz(48_000_000);
9 9
10/// System clock mux source 10/// System clock mux source
11#[derive(Clone, Copy)] 11#[derive(Clone, Copy)]
12pub enum ClockSrc { 12pub enum Sysclk {
13 HSE(Hertz), 13 HSE(Hertz),
14 HSI(HSIPrescaler), 14 HSI(HSIPrescaler),
15 LSI, 15 LSI,
@@ -17,7 +17,7 @@ pub enum ClockSrc {
17 17
18/// Clocks configutation 18/// Clocks configutation
19pub struct Config { 19pub struct Config {
20 pub mux: ClockSrc, 20 pub sys: Sysclk,
21 pub ahb_pre: AHBPrescaler, 21 pub ahb_pre: AHBPrescaler,
22 pub apb_pre: APBPrescaler, 22 pub apb_pre: APBPrescaler,
23 pub ls: super::LsConfig, 23 pub ls: super::LsConfig,
@@ -27,7 +27,7 @@ impl Default for Config {
27 #[inline] 27 #[inline]
28 fn default() -> Config { 28 fn default() -> Config {
29 Config { 29 Config {
30 mux: ClockSrc::HSI(HSIPrescaler::DIV1), 30 sys: Sysclk::HSI(HSIPrescaler::DIV1),
31 ahb_pre: AHBPrescaler::DIV1, 31 ahb_pre: AHBPrescaler::DIV1,
32 apb_pre: APBPrescaler::DIV1, 32 apb_pre: APBPrescaler::DIV1,
33 ls: Default::default(), 33 ls: Default::default(),
@@ -36,8 +36,8 @@ impl Default for Config {
36} 36}
37 37
38pub(crate) unsafe fn init(config: Config) { 38pub(crate) unsafe fn init(config: Config) {
39 let (sys_clk, sw) = match config.mux { 39 let (sys_clk, sw) = match config.sys {
40 ClockSrc::HSI(div) => { 40 Sysclk::HSI(div) => {
41 // Enable HSI 41 // Enable HSI
42 RCC.cr().write(|w| { 42 RCC.cr().write(|w| {
43 w.set_hsidiv(div); 43 w.set_hsidiv(div);
@@ -47,14 +47,14 @@ pub(crate) unsafe fn init(config: Config) {
47 47
48 (HSI_FREQ / div, Sw::HSI) 48 (HSI_FREQ / div, Sw::HSI)
49 } 49 }
50 ClockSrc::HSE(freq) => { 50 Sysclk::HSE(freq) => {
51 // Enable HSE 51 // Enable HSE
52 RCC.cr().write(|w| w.set_hseon(true)); 52 RCC.cr().write(|w| w.set_hseon(true));
53 while !RCC.cr().read().hserdy() {} 53 while !RCC.cr().read().hserdy() {}
54 54
55 (freq, Sw::HSE) 55 (freq, Sw::HSE)
56 } 56 }
57 ClockSrc::LSI => { 57 Sysclk::LSI => {
58 // Enable LSI 58 // Enable LSI
59 RCC.csr2().write(|w| w.set_lsion(true)); 59 RCC.csr2().write(|w| w.set_lsion(true));
60 while !RCC.csr2().read().lsirdy() {} 60 while !RCC.csr2().read().lsirdy() {}
diff --git a/embassy-stm32/src/rcc/g0.rs b/embassy-stm32/src/rcc/g0.rs
index e3cd46fb9..0b1f34a20 100644
--- a/embassy-stm32/src/rcc/g0.rs
+++ b/embassy-stm32/src/rcc/g0.rs
@@ -19,7 +19,7 @@ pub enum HseMode {
19 19
20/// System clock mux source 20/// System clock mux source
21#[derive(Clone, Copy)] 21#[derive(Clone, Copy)]
22pub enum ClockSrc { 22pub enum Sysclk {
23 HSE(Hertz, HseMode), 23 HSE(Hertz, HseMode),
24 HSI(HSIPrescaler), 24 HSI(HSIPrescaler),
25 PLL(PllConfig), 25 PLL(PllConfig),
@@ -89,7 +89,7 @@ pub enum UsbSrc {
89 89
90/// Clocks configutation 90/// Clocks configutation
91pub struct Config { 91pub struct Config {
92 pub mux: ClockSrc, 92 pub sys: Sysclk,
93 pub ahb_pre: AHBPrescaler, 93 pub ahb_pre: AHBPrescaler,
94 pub apb_pre: APBPrescaler, 94 pub apb_pre: APBPrescaler,
95 pub low_power_run: bool, 95 pub low_power_run: bool,
@@ -102,7 +102,7 @@ impl Default for Config {
102 #[inline] 102 #[inline]
103 fn default() -> Config { 103 fn default() -> Config {
104 Config { 104 Config {
105 mux: ClockSrc::HSI(HSIPrescaler::DIV1), 105 sys: Sysclk::HSI(HSIPrescaler::DIV1),
106 ahb_pre: AHBPrescaler::DIV1, 106 ahb_pre: AHBPrescaler::DIV1,
107 apb_pre: APBPrescaler::DIV1, 107 apb_pre: APBPrescaler::DIV1,
108 low_power_run: false, 108 low_power_run: false,
@@ -202,8 +202,8 @@ pub(crate) unsafe fn init(config: Config) {
202 let mut pll1_q_freq = None; 202 let mut pll1_q_freq = None;
203 let mut pll1_p_freq = None; 203 let mut pll1_p_freq = None;
204 204
205 let (sys_clk, sw) = match config.mux { 205 let (sys_clk, sw) = match config.sys {
206 ClockSrc::HSI(div) => { 206 Sysclk::HSI(div) => {
207 // Enable HSI 207 // Enable HSI
208 RCC.cr().write(|w| { 208 RCC.cr().write(|w| {
209 w.set_hsidiv(div); 209 w.set_hsidiv(div);
@@ -213,7 +213,7 @@ pub(crate) unsafe fn init(config: Config) {
213 213
214 (HSI_FREQ / div, Sw::HSI) 214 (HSI_FREQ / div, Sw::HSI)
215 } 215 }
216 ClockSrc::HSE(freq, mode) => { 216 Sysclk::HSE(freq, mode) => {
217 // Enable HSE 217 // Enable HSE
218 RCC.cr().write(|w| { 218 RCC.cr().write(|w| {
219 w.set_hseon(true); 219 w.set_hseon(true);
@@ -223,7 +223,7 @@ pub(crate) unsafe fn init(config: Config) {
223 223
224 (freq, Sw::HSE) 224 (freq, Sw::HSE)
225 } 225 }
226 ClockSrc::PLL(pll) => { 226 Sysclk::PLL(pll) => {
227 let (r_freq, q_freq, p_freq) = pll.init(); 227 let (r_freq, q_freq, p_freq) = pll.init();
228 228
229 pll1_q_freq = q_freq; 229 pll1_q_freq = q_freq;
@@ -231,7 +231,7 @@ pub(crate) unsafe fn init(config: Config) {
231 231
232 (r_freq, Sw::PLL1_R) 232 (r_freq, Sw::PLL1_R)
233 } 233 }
234 ClockSrc::LSI => { 234 Sysclk::LSI => {
235 // Enable LSI 235 // Enable LSI
236 RCC.csr().write(|w| w.set_lsion(true)); 236 RCC.csr().write(|w| w.set_lsion(true));
237 while !RCC.csr().read().lsirdy() {} 237 while !RCC.csr().read().lsirdy() {}
diff --git a/embassy-stm32/src/rcc/l.rs b/embassy-stm32/src/rcc/l.rs
index 04ea81ec4..aa4245d4e 100644
--- a/embassy-stm32/src/rcc/l.rs
+++ b/embassy-stm32/src/rcc/l.rs
@@ -7,7 +7,7 @@ pub use crate::pac::rcc::vals::Adcsel as AdcClockSource;
7pub use crate::pac::rcc::vals::Clk48sel as Clk48Src; 7pub use crate::pac::rcc::vals::Clk48sel as Clk48Src;
8#[cfg(any(stm32wb, stm32wl))] 8#[cfg(any(stm32wb, stm32wl))]
9pub use crate::pac::rcc::vals::Hsepre as HsePrescaler; 9pub use crate::pac::rcc::vals::Hsepre as HsePrescaler;
10pub use crate::pac::rcc::vals::{Hpre as AHBPrescaler, Msirange as MSIRange, Ppre as APBPrescaler, Sw as ClockSrc}; 10pub use crate::pac::rcc::vals::{Hpre as AHBPrescaler, Msirange as MSIRange, Ppre as APBPrescaler, Sw as Sysclk};
11use crate::pac::{FLASH, RCC}; 11use crate::pac::{FLASH, RCC};
12use crate::time::Hertz; 12use crate::time::Hertz;
13 13
@@ -50,7 +50,7 @@ pub struct Config {
50 pub pllsai2: Option<Pll>, 50 pub pllsai2: Option<Pll>,
51 51
52 // sysclk, buses. 52 // sysclk, buses.
53 pub mux: ClockSrc, 53 pub sys: Sysclk,
54 pub ahb_pre: AHBPrescaler, 54 pub ahb_pre: AHBPrescaler,
55 pub apb1_pre: APBPrescaler, 55 pub apb1_pre: APBPrescaler,
56 pub apb2_pre: APBPrescaler, 56 pub apb2_pre: APBPrescaler,
@@ -80,7 +80,7 @@ impl Default for Config {
80 hse: None, 80 hse: None,
81 hsi: false, 81 hsi: false,
82 msi: Some(MSIRange::RANGE4M), 82 msi: Some(MSIRange::RANGE4M),
83 mux: ClockSrc::MSI, 83 sys: Sysclk::MSI,
84 ahb_pre: AHBPrescaler::DIV1, 84 ahb_pre: AHBPrescaler::DIV1,
85 apb1_pre: APBPrescaler::DIV1, 85 apb1_pre: APBPrescaler::DIV1,
86 apb2_pre: APBPrescaler::DIV1, 86 apb2_pre: APBPrescaler::DIV1,
@@ -113,7 +113,7 @@ pub const WPAN_DEFAULT: Config = Config {
113 mode: HseMode::Oscillator, 113 mode: HseMode::Oscillator,
114 prescaler: HsePrescaler::DIV1, 114 prescaler: HsePrescaler::DIV1,
115 }), 115 }),
116 mux: ClockSrc::PLL1_R, 116 sys: Sysclk::PLL1_R,
117 #[cfg(crs)] 117 #[cfg(crs)]
118 hsi48: Some(super::Hsi48Config { sync_from_usb: false }), 118 hsi48: Some(super::Hsi48Config { sync_from_usb: false }),
119 msi: None, 119 msi: None,
@@ -161,11 +161,11 @@ pub(crate) unsafe fn init(config: Config) {
161 // Turn on MSI and configure it to 4MHz. 161 // Turn on MSI and configure it to 4MHz.
162 msi_enable(MSIRange::RANGE4M) 162 msi_enable(MSIRange::RANGE4M)
163 } 163 }
164 if RCC.cfgr().read().sws() != ClockSrc::MSI { 164 if RCC.cfgr().read().sws() != Sysclk::MSI {
165 // Set MSI as a clock source, reset prescalers. 165 // Set MSI as a clock source, reset prescalers.
166 RCC.cfgr().write_value(Cfgr::default()); 166 RCC.cfgr().write_value(Cfgr::default());
167 // Wait for clock switch status bits to change. 167 // Wait for clock switch status bits to change.
168 while RCC.cfgr().read().sws() != ClockSrc::MSI {} 168 while RCC.cfgr().read().sws() != Sysclk::MSI {}
169 } 169 }
170 170
171 // Set voltage scale 171 // Set voltage scale
@@ -260,11 +260,11 @@ pub(crate) unsafe fn init(config: Config) {
260 #[cfg(any(stm32l47x, stm32l48x, stm32l49x, stm32l4ax, rcc_l4plus, stm32l5))] 260 #[cfg(any(stm32l47x, stm32l48x, stm32l49x, stm32l4ax, rcc_l4plus, stm32l5))]
261 let pllsai2 = init_pll(PllInstance::Pllsai2, config.pllsai2, &pll_input); 261 let pllsai2 = init_pll(PllInstance::Pllsai2, config.pllsai2, &pll_input);
262 262
263 let sys_clk = match config.mux { 263 let sys_clk = match config.sys {
264 ClockSrc::HSE => hse.unwrap(), 264 Sysclk::HSE => hse.unwrap(),
265 ClockSrc::HSI => hsi.unwrap(), 265 Sysclk::HSI => hsi.unwrap(),
266 ClockSrc::MSI => msi.unwrap(), 266 Sysclk::MSI => msi.unwrap(),
267 ClockSrc::PLL1_R => pll.r.unwrap(), 267 Sysclk::PLL1_R => pll.r.unwrap(),
268 }; 268 };
269 269
270 #[cfg(any(rcc_l0_v2, stm32l4, stm32l5, stm32wb))] 270 #[cfg(any(rcc_l0_v2, stm32l4, stm32l5, stm32wb))]
@@ -350,12 +350,12 @@ pub(crate) unsafe fn init(config: Config) {
350 while FLASH.acr().read().latency() != latency {} 350 while FLASH.acr().read().latency() != latency {}
351 351
352 RCC.cfgr().modify(|w| { 352 RCC.cfgr().modify(|w| {
353 w.set_sw(config.mux); 353 w.set_sw(config.sys);
354 w.set_hpre(config.ahb_pre); 354 w.set_hpre(config.ahb_pre);
355 w.set_ppre1(config.apb1_pre); 355 w.set_ppre1(config.apb1_pre);
356 w.set_ppre2(config.apb2_pre); 356 w.set_ppre2(config.apb2_pre);
357 }); 357 });
358 while RCC.cfgr().read().sws() != config.mux {} 358 while RCC.cfgr().read().sws() != config.sys {}
359 359
360 #[cfg(any(stm32l4, stm32l5, stm32wb, stm32wl))] 360 #[cfg(any(stm32l4, stm32l5, stm32wb, stm32wl))]
361 RCC.ccipr().modify(|w| w.set_adcsel(config.adc_clock_source)); 361 RCC.ccipr().modify(|w| w.set_adcsel(config.adc_clock_source));
diff --git a/embassy-stm32/src/rcc/u5.rs b/embassy-stm32/src/rcc/u5.rs
index 72613f0f3..43138f05c 100644
--- a/embassy-stm32/src/rcc/u5.rs
+++ b/embassy-stm32/src/rcc/u5.rs
@@ -1,7 +1,7 @@
1pub use crate::pac::pwr::vals::Vos as VoltageScale; 1pub use crate::pac::pwr::vals::Vos as VoltageScale;
2pub use crate::pac::rcc::vals::{ 2pub use crate::pac::rcc::vals::{
3 Hpre as AHBPrescaler, Msirange, Msirange as MSIRange, Plldiv as PllDiv, Pllm as PllPreDiv, Plln as PllMul, 3 Hpre as AHBPrescaler, Msirange, Msirange as MSIRange, Plldiv as PllDiv, Pllm as PllPreDiv, Plln as PllMul,
4 Pllsrc as PllSource, Ppre as APBPrescaler, Sw as ClockSrc, 4 Pllsrc as PllSource, Ppre as APBPrescaler, Sw as Sysclk,
5}; 5};
6use crate::pac::rcc::vals::{Hseext, Msirgsel, Pllmboost, Pllrge}; 6use crate::pac::rcc::vals::{Hseext, Msirgsel, Pllmboost, Pllrge};
7use crate::pac::{FLASH, PWR, RCC}; 7use crate::pac::{FLASH, PWR, RCC};
@@ -72,7 +72,7 @@ pub struct Config {
72 pub pll3: Option<Pll>, 72 pub pll3: Option<Pll>,
73 73
74 // sysclk, buses. 74 // sysclk, buses.
75 pub mux: ClockSrc, 75 pub sys: Sysclk,
76 pub ahb_pre: AHBPrescaler, 76 pub ahb_pre: AHBPrescaler,
77 pub apb1_pre: APBPrescaler, 77 pub apb1_pre: APBPrescaler,
78 pub apb2_pre: APBPrescaler, 78 pub apb2_pre: APBPrescaler,
@@ -97,7 +97,7 @@ impl Default for Config {
97 pll1: None, 97 pll1: None,
98 pll2: None, 98 pll2: None,
99 pll3: None, 99 pll3: None,
100 mux: ClockSrc::MSIS, 100 sys: Sysclk::MSIS,
101 ahb_pre: AHBPrescaler::DIV1, 101 ahb_pre: AHBPrescaler::DIV1,
102 apb1_pre: APBPrescaler::DIV1, 102 apb1_pre: APBPrescaler::DIV1,
103 apb2_pre: APBPrescaler::DIV1, 103 apb2_pre: APBPrescaler::DIV1,
@@ -181,11 +181,11 @@ pub(crate) unsafe fn init(config: Config) {
181 let pll2 = init_pll(PllInstance::Pll2, config.pll2, &pll_input, config.voltage_range); 181 let pll2 = init_pll(PllInstance::Pll2, config.pll2, &pll_input, config.voltage_range);
182 let pll3 = init_pll(PllInstance::Pll3, config.pll3, &pll_input, config.voltage_range); 182 let pll3 = init_pll(PllInstance::Pll3, config.pll3, &pll_input, config.voltage_range);
183 183
184 let sys_clk = match config.mux { 184 let sys_clk = match config.sys {
185 ClockSrc::HSE => hse.unwrap(), 185 Sysclk::HSE => hse.unwrap(),
186 ClockSrc::HSI => hsi.unwrap(), 186 Sysclk::HSI => hsi.unwrap(),
187 ClockSrc::MSIS => msi.unwrap(), 187 Sysclk::MSIS => msi.unwrap(),
188 ClockSrc::PLL1_R => pll1.r.unwrap(), 188 Sysclk::PLL1_R => pll1.r.unwrap(),
189 }; 189 };
190 190
191 // Do we need the EPOD booster to reach the target clock speed per § 10.5.4? 191 // Do we need the EPOD booster to reach the target clock speed per § 10.5.4?
@@ -230,8 +230,8 @@ pub(crate) unsafe fn init(config: Config) {
230 }); 230 });
231 231
232 // Switch the system clock source 232 // Switch the system clock source
233 RCC.cfgr1().modify(|w| w.set_sw(config.mux)); 233 RCC.cfgr1().modify(|w| w.set_sw(config.sys));
234 while RCC.cfgr1().read().sws() != config.mux {} 234 while RCC.cfgr1().read().sws() != config.sys {}
235 235
236 // Configure the bus prescalers 236 // Configure the bus prescalers
237 RCC.cfgr2().modify(|w| { 237 RCC.cfgr2().modify(|w| {
diff --git a/embassy-stm32/src/rcc/wba.rs b/embassy-stm32/src/rcc/wba.rs
index fbf2d1cf9..9d5dcfc4b 100644
--- a/embassy-stm32/src/rcc/wba.rs
+++ b/embassy-stm32/src/rcc/wba.rs
@@ -1,7 +1,7 @@
1pub use crate::pac::pwr::vals::Vos as VoltageScale; 1pub use crate::pac::pwr::vals::Vos as VoltageScale;
2use crate::pac::rcc::regs::Cfgr1; 2use crate::pac::rcc::regs::Cfgr1;
3pub use crate::pac::rcc::vals::{ 3pub use crate::pac::rcc::vals::{
4 Adcsel as AdcClockSource, Hpre as AHBPrescaler, Hsepre as HsePrescaler, Ppre as APBPrescaler, Sw as ClockSrc, 4 Adcsel as AdcClockSource, Hpre as AHBPrescaler, Hsepre as HsePrescaler, Ppre as APBPrescaler, Sw as Sysclk,
5}; 5};
6use crate::pac::{FLASH, RCC}; 6use crate::pac::{FLASH, RCC};
7use crate::time::Hertz; 7use crate::time::Hertz;
@@ -23,7 +23,7 @@ pub struct Config {
23 pub hse: Option<Hse>, 23 pub hse: Option<Hse>,
24 24
25 // sysclk, buses. 25 // sysclk, buses.
26 pub mux: ClockSrc, 26 pub sys: Sysclk,
27 pub ahb_pre: AHBPrescaler, 27 pub ahb_pre: AHBPrescaler,
28 pub apb1_pre: APBPrescaler, 28 pub apb1_pre: APBPrescaler,
29 pub apb2_pre: APBPrescaler, 29 pub apb2_pre: APBPrescaler,
@@ -43,7 +43,7 @@ impl Default for Config {
43 Config { 43 Config {
44 hse: None, 44 hse: None,
45 hsi: true, 45 hsi: true,
46 mux: ClockSrc::HSI, 46 sys: Sysclk::HSI,
47 ahb_pre: AHBPrescaler::DIV1, 47 ahb_pre: AHBPrescaler::DIV1,
48 apb1_pre: APBPrescaler::DIV1, 48 apb1_pre: APBPrescaler::DIV1,
49 apb2_pre: APBPrescaler::DIV1, 49 apb2_pre: APBPrescaler::DIV1,
@@ -65,11 +65,11 @@ pub(crate) unsafe fn init(config: Config) {
65 if !RCC.cr().read().hsion() { 65 if !RCC.cr().read().hsion() {
66 hsi_enable() 66 hsi_enable()
67 } 67 }
68 if RCC.cfgr1().read().sws() != ClockSrc::HSI { 68 if RCC.cfgr1().read().sws() != Sysclk::HSI {
69 // Set HSI as a clock source, reset prescalers. 69 // Set HSI as a clock source, reset prescalers.
70 RCC.cfgr1().write_value(Cfgr1::default()); 70 RCC.cfgr1().write_value(Cfgr1::default());
71 // Wait for clock switch status bits to change. 71 // Wait for clock switch status bits to change.
72 while RCC.cfgr1().read().sws() != ClockSrc::HSI {} 72 while RCC.cfgr1().read().sws() != Sysclk::HSI {}
73 } 73 }
74 74
75 // Set voltage scale 75 // Set voltage scale
@@ -94,11 +94,11 @@ pub(crate) unsafe fn init(config: Config) {
94 HSE_FREQ 94 HSE_FREQ
95 }); 95 });
96 96
97 let sys_clk = match config.mux { 97 let sys_clk = match config.sys {
98 ClockSrc::HSE => hse.unwrap(), 98 Sysclk::HSE => hse.unwrap(),
99 ClockSrc::HSI => hsi.unwrap(), 99 Sysclk::HSI => hsi.unwrap(),
100 ClockSrc::_RESERVED_1 => unreachable!(), 100 Sysclk::_RESERVED_1 => unreachable!(),
101 ClockSrc::PLL1_R => todo!(), 101 Sysclk::PLL1_R => todo!(),
102 }; 102 };
103 103
104 assert!(sys_clk.0 <= 100_000_000); 104 assert!(sys_clk.0 <= 100_000_000);
@@ -142,9 +142,9 @@ pub(crate) unsafe fn init(config: Config) {
142 // TODO: Set the SRAM wait states 142 // TODO: Set the SRAM wait states
143 143
144 RCC.cfgr1().modify(|w| { 144 RCC.cfgr1().modify(|w| {
145 w.set_sw(config.mux); 145 w.set_sw(config.sys);
146 }); 146 });
147 while RCC.cfgr1().read().sws() != config.mux {} 147 while RCC.cfgr1().read().sws() != config.sys {}
148 148
149 RCC.cfgr2().modify(|w| { 149 RCC.cfgr2().modify(|w| {
150 w.set_hpre(config.ahb_pre); 150 w.set_hpre(config.ahb_pre);
diff --git a/examples/stm32g0/src/bin/hf_timer.rs b/examples/stm32g0/src/bin/hf_timer.rs
index 78a779e29..3f63d0dfd 100644
--- a/examples/stm32g0/src/bin/hf_timer.rs
+++ b/examples/stm32g0/src/bin/hf_timer.rs
@@ -5,7 +5,7 @@ use defmt::info;
5use embassy_executor::Spawner; 5use embassy_executor::Spawner;
6use embassy_stm32::gpio::OutputType; 6use embassy_stm32::gpio::OutputType;
7use embassy_stm32::pac::rcc::vals::Tim1sel; 7use embassy_stm32::pac::rcc::vals::Tim1sel;
8use embassy_stm32::rcc::{ClockSrc, Config as RccConfig, PllConfig, PllSource, Pllm, Plln, Pllq, Pllr}; 8use embassy_stm32::rcc::{Config as RccConfig, PllConfig, PllSource, Pllm, Plln, Pllq, Pllr, Sysclk};
9use embassy_stm32::time::khz; 9use embassy_stm32::time::khz;
10use embassy_stm32::timer::complementary_pwm::{ComplementaryPwm, ComplementaryPwmPin}; 10use embassy_stm32::timer::complementary_pwm::{ComplementaryPwm, ComplementaryPwmPin};
11use embassy_stm32::timer::simple_pwm::PwmPin; 11use embassy_stm32::timer::simple_pwm::PwmPin;
@@ -16,7 +16,7 @@ use {defmt_rtt as _, panic_probe as _};
16#[embassy_executor::main] 16#[embassy_executor::main]
17async fn main(_spawner: Spawner) { 17async fn main(_spawner: Spawner) {
18 let mut rcc_config = RccConfig::default(); 18 let mut rcc_config = RccConfig::default();
19 rcc_config.mux = ClockSrc::PLL(PllConfig { 19 rcc_config.sys = Sysclk::PLL(PllConfig {
20 source: PllSource::HSI, 20 source: PllSource::HSI,
21 m: Pllm::DIV1, 21 m: Pllm::DIV1,
22 n: Plln::MUL16, 22 n: Plln::MUL16,
diff --git a/examples/stm32l1/src/bin/usb_serial.rs b/examples/stm32l1/src/bin/usb_serial.rs
index 7b1e84cbc..f738ea358 100644
--- a/examples/stm32l1/src/bin/usb_serial.rs
+++ b/examples/stm32l1/src/bin/usb_serial.rs
@@ -27,7 +27,7 @@ async fn main(_spawner: Spawner) {
27 mul: PllMul::MUL6, // PLLVCO = 16*6 = 96Mhz 27 mul: PllMul::MUL6, // PLLVCO = 16*6 = 96Mhz
28 div: PllDiv::DIV3, // 32Mhz clock (16 * 6 / 3) 28 div: PllDiv::DIV3, // 32Mhz clock (16 * 6 / 3)
29 }); 29 });
30 config.rcc.mux = ClockSrc::PLL1_R; 30 config.rcc.sys = Sysclk::PLL1_R;
31 } 31 }
32 32
33 let p = embassy_stm32::init(config); 33 let p = embassy_stm32::init(config);
diff --git a/examples/stm32l4/src/bin/rng.rs b/examples/stm32l4/src/bin/rng.rs
index 638b3e9e4..14d0e3c1e 100644
--- a/examples/stm32l4/src/bin/rng.rs
+++ b/examples/stm32l4/src/bin/rng.rs
@@ -3,7 +3,7 @@
3 3
4use defmt::*; 4use defmt::*;
5use embassy_executor::Spawner; 5use embassy_executor::Spawner;
6use embassy_stm32::rcc::{ClockSrc, Pll, PllMul, PllPreDiv, PllQDiv, PllRDiv, PllSource}; 6use embassy_stm32::rcc::{Pll, PllMul, PllPreDiv, PllQDiv, PllRDiv, PllSource, Sysclk};
7use embassy_stm32::rng::Rng; 7use embassy_stm32::rng::Rng;
8use embassy_stm32::{bind_interrupts, peripherals, rng, Config}; 8use embassy_stm32::{bind_interrupts, peripherals, rng, Config};
9use {defmt_rtt as _, panic_probe as _}; 9use {defmt_rtt as _, panic_probe as _};
@@ -15,7 +15,7 @@ bind_interrupts!(struct Irqs {
15#[embassy_executor::main] 15#[embassy_executor::main]
16async fn main(_spawner: Spawner) { 16async fn main(_spawner: Spawner) {
17 let mut config = Config::default(); 17 let mut config = Config::default();
18 config.rcc.mux = ClockSrc::PLL1_R; 18 config.rcc.sys = Sysclk::PLL1_R;
19 config.rcc.hsi = true; 19 config.rcc.hsi = true;
20 config.rcc.pll = Some(Pll { 20 config.rcc.pll = Some(Pll {
21 source: PllSource::HSI, 21 source: PllSource::HSI,
diff --git a/examples/stm32l4/src/bin/rtc.rs b/examples/stm32l4/src/bin/rtc.rs
index 526620bfb..a8a375ab4 100644
--- a/examples/stm32l4/src/bin/rtc.rs
+++ b/examples/stm32l4/src/bin/rtc.rs
@@ -15,7 +15,7 @@ async fn main(_spawner: Spawner) {
15 let mut config = Config::default(); 15 let mut config = Config::default();
16 { 16 {
17 use embassy_stm32::rcc::*; 17 use embassy_stm32::rcc::*;
18 config.rcc.mux = ClockSrc::PLL1_R; 18 config.rcc.sys = Sysclk::PLL1_R;
19 config.rcc.hse = Some(Hse { 19 config.rcc.hse = Some(Hse {
20 freq: Hertz::mhz(8), 20 freq: Hertz::mhz(8),
21 mode: HseMode::Oscillator, 21 mode: HseMode::Oscillator,
diff --git a/examples/stm32l4/src/bin/spe_adin1110_http_server.rs b/examples/stm32l4/src/bin/spe_adin1110_http_server.rs
index 026a3a477..32bfab6eb 100644
--- a/examples/stm32l4/src/bin/spe_adin1110_http_server.rs
+++ b/examples/stm32l4/src/bin/spe_adin1110_http_server.rs
@@ -75,7 +75,7 @@ async fn main(spawner: Spawner) {
75 use embassy_stm32::rcc::*; 75 use embassy_stm32::rcc::*;
76 // 80Mhz clock (Source: 8 / SrcDiv: 1 * PllMul 20 / ClkDiv 2) 76 // 80Mhz clock (Source: 8 / SrcDiv: 1 * PllMul 20 / ClkDiv 2)
77 // 80MHz highest frequency for flash 0 wait. 77 // 80MHz highest frequency for flash 0 wait.
78 config.rcc.mux = ClockSrc::PLL1_R; 78 config.rcc.sys = Sysclk::PLL1_R;
79 config.rcc.hse = Some(Hse { 79 config.rcc.hse = Some(Hse {
80 freq: Hertz::mhz(8), 80 freq: Hertz::mhz(8),
81 mode: HseMode::Oscillator, 81 mode: HseMode::Oscillator,
diff --git a/examples/stm32l4/src/bin/usb_serial.rs b/examples/stm32l4/src/bin/usb_serial.rs
index 8cc9a7aed..9247e56a1 100644
--- a/examples/stm32l4/src/bin/usb_serial.rs
+++ b/examples/stm32l4/src/bin/usb_serial.rs
@@ -23,7 +23,7 @@ async fn main(_spawner: Spawner) {
23 23
24 let mut config = Config::default(); 24 let mut config = Config::default();
25 config.rcc.hsi48 = Some(Hsi48Config { sync_from_usb: true }); // needed for USB 25 config.rcc.hsi48 = Some(Hsi48Config { sync_from_usb: true }); // needed for USB
26 config.rcc.mux = ClockSrc::PLL1_R; 26 config.rcc.sys = Sysclk::PLL1_R;
27 config.rcc.hsi = true; 27 config.rcc.hsi = true;
28 config.rcc.pll = Some(Pll { 28 config.rcc.pll = Some(Pll {
29 source: PllSource::HSI, 29 source: PllSource::HSI,
diff --git a/examples/stm32l5/src/bin/rng.rs b/examples/stm32l5/src/bin/rng.rs
index 50da6c946..0a644e73d 100644
--- a/examples/stm32l5/src/bin/rng.rs
+++ b/examples/stm32l5/src/bin/rng.rs
@@ -3,7 +3,7 @@
3 3
4use defmt::*; 4use defmt::*;
5use embassy_executor::Spawner; 5use embassy_executor::Spawner;
6use embassy_stm32::rcc::{ClockSrc, Pll, PllMul, PllPreDiv, PllRDiv, PllSource}; 6use embassy_stm32::rcc::{Pll, PllMul, PllPreDiv, PllRDiv, PllSource, Sysclk};
7use embassy_stm32::rng::Rng; 7use embassy_stm32::rng::Rng;
8use embassy_stm32::{bind_interrupts, peripherals, rng, Config}; 8use embassy_stm32::{bind_interrupts, peripherals, rng, Config};
9use {defmt_rtt as _, panic_probe as _}; 9use {defmt_rtt as _, panic_probe as _};
@@ -16,7 +16,7 @@ bind_interrupts!(struct Irqs {
16async fn main(_spawner: Spawner) { 16async fn main(_spawner: Spawner) {
17 let mut config = Config::default(); 17 let mut config = Config::default();
18 config.rcc.hsi = true; 18 config.rcc.hsi = true;
19 config.rcc.mux = ClockSrc::PLL1_R; 19 config.rcc.sys = Sysclk::PLL1_R;
20 config.rcc.pll = Some(Pll { 20 config.rcc.pll = Some(Pll {
21 // 64Mhz clock (16 / 1 * 8 / 2) 21 // 64Mhz clock (16 / 1 * 8 / 2)
22 source: PllSource::HSI, 22 source: PllSource::HSI,
diff --git a/examples/stm32l5/src/bin/usb_ethernet.rs b/examples/stm32l5/src/bin/usb_ethernet.rs
index 88060b6b0..f6d8b16d0 100644
--- a/examples/stm32l5/src/bin/usb_ethernet.rs
+++ b/examples/stm32l5/src/bin/usb_ethernet.rs
@@ -45,7 +45,7 @@ async fn net_task(stack: &'static Stack<Device<'static, MTU>>) -> ! {
45async fn main(spawner: Spawner) { 45async fn main(spawner: Spawner) {
46 let mut config = Config::default(); 46 let mut config = Config::default();
47 config.rcc.hsi = true; 47 config.rcc.hsi = true;
48 config.rcc.mux = ClockSrc::PLL1_R; 48 config.rcc.sys = Sysclk::PLL1_R;
49 config.rcc.pll = Some(Pll { 49 config.rcc.pll = Some(Pll {
50 // 80Mhz clock (16 / 1 * 10 / 2) 50 // 80Mhz clock (16 / 1 * 10 / 2)
51 source: PllSource::HSI, 51 source: PllSource::HSI,
diff --git a/examples/stm32l5/src/bin/usb_hid_mouse.rs b/examples/stm32l5/src/bin/usb_hid_mouse.rs
index 7c8a8ebfb..c51ed96e0 100644
--- a/examples/stm32l5/src/bin/usb_hid_mouse.rs
+++ b/examples/stm32l5/src/bin/usb_hid_mouse.rs
@@ -22,7 +22,7 @@ bind_interrupts!(struct Irqs {
22async fn main(_spawner: Spawner) { 22async fn main(_spawner: Spawner) {
23 let mut config = Config::default(); 23 let mut config = Config::default();
24 config.rcc.hsi = true; 24 config.rcc.hsi = true;
25 config.rcc.mux = ClockSrc::PLL1_R; 25 config.rcc.sys = Sysclk::PLL1_R;
26 config.rcc.pll = Some(Pll { 26 config.rcc.pll = Some(Pll {
27 // 80Mhz clock (16 / 1 * 10 / 2) 27 // 80Mhz clock (16 / 1 * 10 / 2)
28 source: PllSource::HSI, 28 source: PllSource::HSI,
diff --git a/examples/stm32l5/src/bin/usb_serial.rs b/examples/stm32l5/src/bin/usb_serial.rs
index 75053ce4b..87987f2ce 100644
--- a/examples/stm32l5/src/bin/usb_serial.rs
+++ b/examples/stm32l5/src/bin/usb_serial.rs
@@ -20,7 +20,7 @@ bind_interrupts!(struct Irqs {
20async fn main(_spawner: Spawner) { 20async fn main(_spawner: Spawner) {
21 let mut config = Config::default(); 21 let mut config = Config::default();
22 config.rcc.hsi = true; 22 config.rcc.hsi = true;
23 config.rcc.mux = ClockSrc::PLL1_R; 23 config.rcc.sys = Sysclk::PLL1_R;
24 config.rcc.pll = Some(Pll { 24 config.rcc.pll = Some(Pll {
25 // 80Mhz clock (16 / 1 * 10 / 2) 25 // 80Mhz clock (16 / 1 * 10 / 2)
26 source: PllSource::HSI, 26 source: PllSource::HSI,
diff --git a/examples/stm32u5/src/bin/usb_serial.rs b/examples/stm32u5/src/bin/usb_serial.rs
index 99cdeacc9..61851e5a2 100644
--- a/examples/stm32u5/src/bin/usb_serial.rs
+++ b/examples/stm32u5/src/bin/usb_serial.rs
@@ -32,7 +32,7 @@ async fn main(_spawner: Spawner) {
32 divq: None, 32 divq: None,
33 divr: Some(PllDiv::DIV1), // 160 MHz 33 divr: Some(PllDiv::DIV1), // 160 MHz
34 }); 34 });
35 config.rcc.mux = ClockSrc::PLL1_R; 35 config.rcc.sys = Sysclk::PLL1_R;
36 config.rcc.voltage_range = VoltageScale::RANGE1; 36 config.rcc.voltage_range = VoltageScale::RANGE1;
37 config.rcc.hsi48 = Some(Hsi48Config { sync_from_usb: true }); // needed for USB 37 config.rcc.hsi48 = Some(Hsi48Config { sync_from_usb: true }); // needed for USB
38 } 38 }
diff --git a/examples/stm32wl/src/bin/random.rs b/examples/stm32wl/src/bin/random.rs
index 3610392be..8e9fe02b2 100644
--- a/examples/stm32wl/src/bin/random.rs
+++ b/examples/stm32wl/src/bin/random.rs
@@ -22,7 +22,7 @@ async fn main(_spawner: Spawner) {
22 mode: HseMode::Bypass, 22 mode: HseMode::Bypass,
23 prescaler: HsePrescaler::DIV1, 23 prescaler: HsePrescaler::DIV1,
24 }); 24 });
25 config.rcc.mux = ClockSrc::PLL1_R; 25 config.rcc.sys = Sysclk::PLL1_R;
26 config.rcc.pll = Some(Pll { 26 config.rcc.pll = Some(Pll {
27 source: PllSource::HSE, 27 source: PllSource::HSE,
28 prediv: PllPreDiv::DIV2, 28 prediv: PllPreDiv::DIV2,
diff --git a/examples/stm32wl/src/bin/rtc.rs b/examples/stm32wl/src/bin/rtc.rs
index 4738d5770..0c26426ef 100644
--- a/examples/stm32wl/src/bin/rtc.rs
+++ b/examples/stm32wl/src/bin/rtc.rs
@@ -21,7 +21,7 @@ async fn main(_spawner: Spawner) {
21 mode: HseMode::Bypass, 21 mode: HseMode::Bypass,
22 prescaler: HsePrescaler::DIV1, 22 prescaler: HsePrescaler::DIV1,
23 }); 23 });
24 config.rcc.mux = ClockSrc::PLL1_R; 24 config.rcc.sys = Sysclk::PLL1_R;
25 config.rcc.pll = Some(Pll { 25 config.rcc.pll = Some(Pll {
26 source: PllSource::HSE, 26 source: PllSource::HSE,
27 prediv: PllPreDiv::DIV2, 27 prediv: PllPreDiv::DIV2,
diff --git a/examples/stm32wl/src/bin/uart_async.rs b/examples/stm32wl/src/bin/uart_async.rs
index 8e545834c..3637243a0 100644
--- a/examples/stm32wl/src/bin/uart_async.rs
+++ b/examples/stm32wl/src/bin/uart_async.rs
@@ -20,7 +20,7 @@ but can be surely changed for your needs.
20#[embassy_executor::main] 20#[embassy_executor::main]
21async fn main(_spawner: Spawner) { 21async fn main(_spawner: Spawner) {
22 let mut config = embassy_stm32::Config::default(); 22 let mut config = embassy_stm32::Config::default();
23 config.rcc.mux = embassy_stm32::rcc::ClockSrc::HSE; 23 config.rcc.sys = embassy_stm32::rcc::Sysclk::HSE;
24 let p = embassy_stm32::init(config); 24 let p = embassy_stm32::init(config);
25 25
26 defmt::info!("Starting system"); 26 defmt::info!("Starting system");
diff --git a/tests/stm32/src/common.rs b/tests/stm32/src/common.rs
index 1e6b1cce9..7b9585afd 100644
--- a/tests/stm32/src/common.rs
+++ b/tests/stm32/src/common.rs
@@ -527,7 +527,7 @@ pub fn config() -> Config {
527 #[cfg(any(feature = "stm32l496zg", feature = "stm32l4a6zg", feature = "stm32l4r5zi"))] 527 #[cfg(any(feature = "stm32l496zg", feature = "stm32l4a6zg", feature = "stm32l4r5zi"))]
528 { 528 {
529 use embassy_stm32::rcc::*; 529 use embassy_stm32::rcc::*;
530 config.rcc.mux = ClockSrc::PLL1_R; 530 config.rcc.sys = Sysclk::PLL1_R;
531 config.rcc.hsi = true; 531 config.rcc.hsi = true;
532 config.rcc.pll = Some(Pll { 532 config.rcc.pll = Some(Pll {
533 source: PllSource::HSI, 533 source: PllSource::HSI,
@@ -547,7 +547,7 @@ pub fn config() -> Config {
547 mode: HseMode::Bypass, 547 mode: HseMode::Bypass,
548 prescaler: HsePrescaler::DIV1, 548 prescaler: HsePrescaler::DIV1,
549 }); 549 });
550 config.rcc.mux = ClockSrc::PLL1_R; 550 config.rcc.sys = Sysclk::PLL1_R;
551 config.rcc.pll = Some(Pll { 551 config.rcc.pll = Some(Pll {
552 source: PllSource::HSE, 552 source: PllSource::HSE,
553 prediv: PllPreDiv::DIV2, 553 prediv: PllPreDiv::DIV2,
@@ -562,7 +562,7 @@ pub fn config() -> Config {
562 { 562 {
563 use embassy_stm32::rcc::*; 563 use embassy_stm32::rcc::*;
564 config.rcc.hsi = true; 564 config.rcc.hsi = true;
565 config.rcc.mux = ClockSrc::PLL1_R; 565 config.rcc.sys = Sysclk::PLL1_R;
566 config.rcc.pll = Some(Pll { 566 config.rcc.pll = Some(Pll {
567 // 110Mhz clock (16 / 4 * 55 / 2) 567 // 110Mhz clock (16 / 4 * 55 / 2)
568 source: PllSource::HSI, 568 source: PllSource::HSI,
@@ -586,7 +586,7 @@ pub fn config() -> Config {
586 divq: None, 586 divq: None,
587 divr: Some(PllDiv::DIV1), // 160 MHz 587 divr: Some(PllDiv::DIV1), // 160 MHz
588 }); 588 });
589 config.rcc.mux = ClockSrc::PLL1_R; 589 config.rcc.sys = Sysclk::PLL1_R;
590 config.rcc.voltage_range = VoltageScale::RANGE1; 590 config.rcc.voltage_range = VoltageScale::RANGE1;
591 config.rcc.hsi48 = Some(Hsi48Config { sync_from_usb: true }); // needed for USB 591 config.rcc.hsi48 = Some(Hsi48Config { sync_from_usb: true }); // needed for USB
592 } 592 }
@@ -594,7 +594,7 @@ pub fn config() -> Config {
594 #[cfg(feature = "stm32wba52cg")] 594 #[cfg(feature = "stm32wba52cg")]
595 { 595 {
596 use embassy_stm32::rcc::*; 596 use embassy_stm32::rcc::*;
597 config.rcc.mux = ClockSrc::HSI; 597 config.rcc.sys = Sysclk::HSI;
598 598
599 embassy_stm32::pac::RCC.ccipr2().write(|w| { 599 embassy_stm32::pac::RCC.ccipr2().write(|w| {
600 w.set_rngsel(embassy_stm32::pac::rcc::vals::Rngsel::HSI); 600 w.set_rngsel(embassy_stm32::pac::rcc::vals::Rngsel::HSI);
@@ -610,7 +610,7 @@ pub fn config() -> Config {
610 mul: PllMul::MUL4, 610 mul: PllMul::MUL4,
611 div: PllDiv::DIV2, // 32Mhz clock (16 * 4 / 2) 611 div: PllDiv::DIV2, // 32Mhz clock (16 * 4 / 2)
612 }); 612 });
613 config.rcc.mux = ClockSrc::PLL1_R; 613 config.rcc.sys = Sysclk::PLL1_R;
614 } 614 }
615 615
616 #[cfg(any(feature = "stm32l152re"))] 616 #[cfg(any(feature = "stm32l152re"))]
@@ -622,7 +622,7 @@ pub fn config() -> Config {
622 mul: PllMul::MUL4, 622 mul: PllMul::MUL4,
623 div: PllDiv::DIV2, // 32Mhz clock (16 * 4 / 2) 623 div: PllDiv::DIV2, // 32Mhz clock (16 * 4 / 2)
624 }); 624 });
625 config.rcc.mux = ClockSrc::PLL1_R; 625 config.rcc.sys = Sysclk::PLL1_R;
626 } 626 }
627 627
628 config 628 config