mirror of
https://github.com/embassy-rs/embassy.git
synced 2025-09-26 20:00:27 +00:00
Merge pull request #4124 from mickem/allow_stm32_to_re_init_rcc
Add function to allow re-init rcc config for stm32
This commit is contained in:
commit
5caa4ac51b
@ -600,17 +600,7 @@ fn init_hw(config: Config) -> Peripherals {
|
||||
#[cfg(feature = "exti")]
|
||||
exti::init(cs);
|
||||
|
||||
rcc::init(config.rcc);
|
||||
|
||||
// must be after rcc init
|
||||
#[cfg(feature = "_time-driver")]
|
||||
time_driver::init(cs);
|
||||
|
||||
#[cfg(feature = "low-power")]
|
||||
{
|
||||
crate::rcc::REFCOUNT_STOP2 = 0;
|
||||
crate::rcc::REFCOUNT_STOP1 = 0;
|
||||
}
|
||||
rcc::init_rcc(cs, config.rcc);
|
||||
}
|
||||
|
||||
p
|
||||
|
@ -371,3 +371,32 @@ pub fn enable_and_reset<T: RccPeripheral>() {
|
||||
pub fn disable<T: RccPeripheral>() {
|
||||
T::RCC_INFO.disable();
|
||||
}
|
||||
|
||||
/// Re-initialize the `embassy-stm32` clock configuration with the provided configuration.
|
||||
///
|
||||
/// This is useful when you need to alter the CPU clock after configuring peripherals.
|
||||
/// For instance, configure an external clock via spi or i2c.
|
||||
///
|
||||
/// Please not this only re-configures the rcc and the time driver (not GPIO, EXTI, etc).
|
||||
///
|
||||
/// This should only be called after `init`.
|
||||
#[cfg(not(feature = "_dual-core"))]
|
||||
pub fn reinit(config: Config) {
|
||||
critical_section::with(|cs| init_rcc(cs, config))
|
||||
}
|
||||
|
||||
pub(crate) fn init_rcc(_cs: CriticalSection, config: Config) {
|
||||
unsafe {
|
||||
init(config);
|
||||
|
||||
// must be after rcc init
|
||||
#[cfg(feature = "_time-driver")]
|
||||
crate::time_driver::init(_cs);
|
||||
|
||||
#[cfg(feature = "low-power")]
|
||||
{
|
||||
REFCOUNT_STOP2 = 0;
|
||||
REFCOUNT_STOP1 = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user