last 2 errors

This commit is contained in:
Priec
2025-10-19 13:31:52 +02:00
parent 26ef133846
commit ae298c150e

View File

@@ -149,7 +149,7 @@ pub struct BDCR {
impl BDCR { impl BDCR {
#[allow(dead_code)] #[allow(dead_code)]
pub(crate) fn bdcr(&mut self) -> &rcc::BDCR { pub(crate) fn bdcr(&mut self) -> &rcc::BDCR {
unsafe { &(*RCC::ptr()).bdcr } unsafe { &(*RCC::ptr()).bdcr() }
} }
} }
@@ -161,7 +161,7 @@ pub struct CSR {
impl CSR { impl CSR {
#[allow(dead_code)] #[allow(dead_code)]
pub(crate) fn csr(&mut self) -> &rcc::CSR { pub(crate) fn csr(&mut self) -> &rcc::CSR {
unsafe { &(*RCC::ptr()).csr } unsafe { &(*RCC::ptr()).csr() }
} }
} }
@@ -177,15 +177,15 @@ macro_rules! bus_struct_1 {
} }
#[allow(unused)] #[allow(unused)]
pub(crate) fn enr(&self) -> &rcc::$EN { pub(crate) fn enr(&self) -> &rcc::$EN {
unsafe { &(*RCC::ptr()).$en } unsafe { &(*RCC::ptr()).$en() }
} }
#[allow(unused)] #[allow(unused)]
pub(crate) fn smenr(&self) -> &rcc::$SMEN { pub(crate) fn smenr(&self) -> &rcc::$SMEN {
unsafe { &(*RCC::ptr()).$smen } unsafe { &(*RCC::ptr()).$smen() }
} }
#[allow(unused)] #[allow(unused)]
pub(crate) fn rstr(&self) -> &rcc::$RST { pub(crate) fn rstr(&self) -> &rcc::$RST {
unsafe { &(*RCC::ptr()).$rst } unsafe { &(*RCC::ptr()).$rst() }
} }
} }
}; };
@@ -397,14 +397,14 @@ impl CFGR {
let rcc = unsafe { &*RCC::ptr() }; let rcc = unsafe { &*RCC::ptr() };
// Ensure MSI is ON and selected first (safe base) // Ensure MSI is ON and selected first (safe base)
if rcc.cr.read().msison().bit_is_clear() { if rcc.cr().read().msison().bit_is_clear() {
rcc.cr.modify(|_, w| w.msison().set_bit()); rcc.cr().modify(|_, w| w.msison().set_bit());
while rcc.cr.read().msisrdy().bit_is_clear() {} while rcc.cr().read().msisrdy().bit_is_clear() {}
} }
// Program MSI to 4 MHz as default base (MSIRGSEL=1, MSISRANGE=4MHz) // Program MSI to 4 MHz as default base (MSIRGSEL=1, MSISRANGE=4MHz)
unsafe { unsafe {
rcc.icscr1.modify(|_, w| { rcc.icscr1().modify(|_, w| {
w.msirgsel().set_bit(); w.msirgsel().set_bit();
w.msisrange().bits(MsiFreq::MSI4.to_range_bits()); w.msisrange().bits(MsiFreq::MSI4.to_range_bits());
w w
@@ -412,10 +412,10 @@ impl CFGR {
} }
// If SYSCLK not MSI, force switch to MSI (SW=00) and wait // If SYSCLK not MSI, force switch to MSI (SW=00) and wait
if rcc.cfgr1.read().sws().bits() != 0 { if rcc.cfgr1().read().sws().bits() != 0 {
// Reset CFGR1.SW to MSI // Reset CFGR1.SW to MSI
rcc.cfgr1.modify(|_, w| unsafe { w.sw().bits(0b00) }); rcc.cfgr1().modify(|_, w| unsafe { w.sw().bits(0b00) });
while rcc.cfgr1.read().sws().bits() != 0b00 {} while rcc.cfgr1().read().sws().bits() != 0b00 {}
} }
// //
@@ -424,8 +424,8 @@ impl CFGR {
// LSI if requested (or if we needed by LSE CSS in future) // LSI if requested (or if we needed by LSE CSS in future)
let lsi_used = if self.lsi { let lsi_used = if self.lsi {
rcc.bdcr.modify(|_, w| w.lsion().set_bit()); rcc.bdcr().modify(|_, w| w.lsion().set_bit());
while rcc.bdcr.read().lsirdy().bit_is_clear() {} while rcc.bdcr().read().lsirdy().bit_is_clear() {}
true true
} else { } else {
false false
@@ -438,45 +438,45 @@ impl CFGR {
pwr.cr1.reg().modify(|_, w| w.dbp().set_bit()); pwr.cr1.reg().modify(|_, w| w.dbp().set_bit());
// Enable LSE (bypass if set) // Enable LSE (bypass if set)
if lse_cfg.bypass == CrystalBypass::Enable { if lse_cfg.bypass == CrystalBypass::Enable {
rcc.bdcr.modify(|_, w| w.lsebyp().set_bit()); rcc.bdcr().modify(|_, w| w.lsebyp().set_bit());
} }
rcc.bdcr.modify(|_, w| w.lseon().set_bit()); rcc.bdcr().modify(|_, w| w.lseon().set_bit());
while rcc.bdcr.read().lserdy().bit_is_clear() {} while rcc.bdcr().read().lserdy().bit_is_clear() {}
// Skipped: LSESYS and LSE CSS/glitch filter // Skipped: LSESYS and LSE CSS/glitch filter
} }
// HSE if requested // HSE if requested
if let Some(hse_cfg) = &self.hse { if let Some(hse_cfg) = &self.hse {
rcc.cr.modify(|_, w| { rcc.cr().modify(|_, w| {
if hse_cfg.bypass == CrystalBypass::Enable { if hse_cfg.bypass == CrystalBypass::Enable {
w.hsebyp().set_bit(); w.hsebyp().set_bit();
} }
w.hseon().set_bit() w.hseon().set_bit()
}); });
while rcc.cr.read().hserdy().bit_is_clear() {} while rcc.cr().read().hserdy().bit_is_clear() {}
if hse_cfg.css == ClockSecuritySystem::Enable { if hse_cfg.css == ClockSecuritySystem::Enable {
// Enable CSS on HSE (CR.CSSON) // Enable CSS on HSE (CR.CSSON)
rcc.cr.modify(|_, w| w.csson().set_bit()); rcc.cr().modify(|_, w| w.csson().set_bit());
} }
} }
// MSI range if set explicitly // MSI range if set explicitly
if let Some(msi) = self.msi { if let Some(msi) = self.msi {
unsafe { unsafe {
rcc.icscr1.modify(|_, w| { rcc.icscr1().modify(|_, w| {
w.msirgsel().set_bit(); w.msirgsel().set_bit();
w.msisrange().bits(msi.to_range_bits()); w.msisrange().bits(msi.to_range_bits());
w w
}) })
}; };
while rcc.cr.read().msisrdy().bit_is_clear() {} while rcc.cr().read().msisrdy().bit_is_clear() {}
} }
// HSI48 // HSI48
if self.hsi48 { if self.hsi48 {
rcc.cr.modify(|_, w| w.hsi48on().set_bit()); rcc.cr().modify(|_, w| w.hsi48on().set_bit());
while rcc.cr.read().hsi48rdy().bit_is_clear() {} while rcc.cr().read().hsi48rdy().bit_is_clear() {}
} }
// //
@@ -510,8 +510,8 @@ impl CFGR {
// If we need HSI for PLL1 and it's not on, turn it on // If we need HSI for PLL1 and it's not on, turn it on
if pll_src == PllSource::HSI16 { if pll_src == PllSource::HSI16 {
rcc.cr.modify(|_, w| w.hsion().set_bit()); rcc.cr().modify(|_, w| w.hsion().set_bit());
while rcc.cr.read().hsirdy().bit_is_clear() {} while rcc.cr().read().hsirdy().bit_is_clear() {}
} }
let want_sysclk = match (self.sysclk, self.msi) { let want_sysclk = match (self.sysclk, self.msi) {
@@ -604,7 +604,7 @@ impl CFGR {
} }
// Program prescalers first (CFGR2: HPRE/PPRE1/PPRE2) // Program prescalers first (CFGR2: HPRE/PPRE1/PPRE2)
rcc.cfgr2.modify(|_, w| unsafe { rcc.cfgr2().modify(|_, w| unsafe {
w.hpre().bits(hpre_bits); w.hpre().bits(hpre_bits);
w.ppre1().bits(ppre1_bits); w.ppre1().bits(ppre1_bits);
w.ppre2().bits(ppre2_bits) w.ppre2().bits(ppre2_bits)
@@ -623,12 +623,12 @@ impl CFGR {
assert!(sysclk_calc <= 80_000_000); assert!(sysclk_calc <= 80_000_000);
// Disable PLL1 before reconfig // Disable PLL1 before reconfig
rcc.cr.modify(|_, w| w.pll1on().clear_bit()); rcc.cr().modify(|_, w| w.pll1on().clear_bit());
while rcc.cr.read().pll1rdy().bit_is_set() {} while rcc.cr().read().pll1rdy().bit_is_set() {}
// Set PLL source // Set PLL source
let src_bits = pll_src.to_pllsrc_bits(); let src_bits = pll_src.to_pllsrc_bits();
rcc.pll1cfgr.modify(|_, w| unsafe { rcc.pll1cfgr().modify(|_, w| unsafe {
w.pll1src().bits(src_bits); w.pll1src().bits(src_bits);
// VCI range selection (very rough): 4..8 => range0, 8..16 => range1 // VCI range selection (very rough): 4..8 => range0, 8..16 => range1
let rge = if vco_in < 8_000_000 { 0b00 } else { 0b11 }; let rge = if vco_in < 8_000_000 { 0b00 } else { 0b11 };
@@ -641,7 +641,7 @@ impl CFGR {
}); });
// Program N, R in PLL1DIVR // Program N, R in PLL1DIVR
rcc.pll1divr.modify(|_, w| unsafe { rcc.pll1divr().modify(|_, w| unsafe {
w.pll1n().bits((pll.n - 1) as u16); w.pll1n().bits((pll.n - 1) as u16);
w.pll1r().bits(pll.r - 1); w.pll1r().bits(pll.r - 1);
// Leave P/Q untouched/disabled (skipped) // Leave P/Q untouched/disabled (skipped)
@@ -649,30 +649,30 @@ impl CFGR {
}); });
// Enable PLL1 // Enable PLL1
rcc.cr.modify(|_, w| w.pll1on().set_bit()); rcc.cr().modify(|_, w| w.pll1on().set_bit());
while rcc.cr.read().pll1rdy().bit_is_clear() {} while rcc.cr().read().pll1rdy().bit_is_clear() {}
// Enable PLL1 R output // Enable PLL1 R output
rcc.pll1cfgr.modify(|_, w| w.pll1ren().set_bit()); rcc.pll1cfgr().modify(|_, w| w.pll1ren().set_bit());
// Switch SYSCLK to PLL1 (CFGR1.SW = 11) // Switch SYSCLK to PLL1 (CFGR1.SW = 11)
sysclk_src_bits = 0b11; sysclk_src_bits = 0b11;
rcc.cfgr1.modify(|_, w| unsafe { w.sw().bits(sysclk_src_bits) }); rcc.cfgr1().modify(|_, w| unsafe { w.sw().bits(sysclk_src_bits) });
} else { } else {
// Keep MSI as SYSCLK (CFGR1.SW = 00) // Keep MSI as SYSCLK (CFGR1.SW = 00)
sysclk_src_bits = 0b00; sysclk_src_bits = 0b00;
if used_msi.is_none() { if used_msi.is_none() {
used_msi = Some(MsiFreq::MSI4); used_msi = Some(MsiFreq::MSI4);
} }
rcc.cfgr1.modify(|_, w| unsafe { w.sw().bits(sysclk_src_bits) }); rcc.cfgr1().modify(|_, w| unsafe { w.sw().bits(sysclk_src_bits) });
} }
// Wait for SWS // Wait for SWS
while rcc.cfgr1.read().sws().bits() != sysclk_src_bits {} while rcc.cfgr1().read().sws().bits() != sysclk_src_bits {}
// If we ended up on PLL, and MSI wasn't requested for other purposes, we can switch MSI off // If we ended up on PLL, and MSI wasn't requested for other purposes, we can switch MSI off
if used_msi.is_none() && sysclk_src_bits == 0b11 { if used_msi.is_none() && sysclk_src_bits == 0b11 {
rcc.cr.modify(|_, w| w.msison().clear_bit()); rcc.cr().modify(|_, w| w.msison().clear_bit());
} }
Clocks { Clocks {