diff options
| -rw-r--r-- | embassy-stm32/build.rs | 5 | ||||
| -rw-r--r-- | embassy-stm32/src/rcc/mod.rs | 2 | ||||
| -rw-r--r-- | embassy-stm32/src/usb/otg.rs | 2 |
3 files changed, 8 insertions, 1 deletions
diff --git a/embassy-stm32/build.rs b/embassy-stm32/build.rs index f9f03c51b..3fefa9717 100644 --- a/embassy-stm32/build.rs +++ b/embassy-stm32/build.rs | |||
| @@ -647,6 +647,8 @@ fn main() { | |||
| 647 | PeripheralRccKernelClock::Clock(clock) => clock_gen.gen_clock(p.name, clock), | 647 | PeripheralRccKernelClock::Clock(clock) => clock_gen.gen_clock(p.name, clock), |
| 648 | }; | 648 | }; |
| 649 | 649 | ||
| 650 | let bus_clock_frequency = clock_gen.gen_clock(p.name, &rcc.bus_clock); | ||
| 651 | |||
| 650 | // A refcount leak can result if the same field is shared by peripherals with different stop modes | 652 | // A refcount leak can result if the same field is shared by peripherals with different stop modes |
| 651 | // This condition should be checked in stm32-data | 653 | // This condition should be checked in stm32-data |
| 652 | let stop_mode = match rcc.stop_mode { | 654 | let stop_mode = match rcc.stop_mode { |
| @@ -660,6 +662,9 @@ fn main() { | |||
| 660 | fn frequency() -> crate::time::Hertz { | 662 | fn frequency() -> crate::time::Hertz { |
| 661 | #clock_frequency | 663 | #clock_frequency |
| 662 | } | 664 | } |
| 665 | fn bus_frequency() -> crate::time::Hertz { | ||
| 666 | #bus_clock_frequency | ||
| 667 | } | ||
| 663 | 668 | ||
| 664 | const RCC_INFO: crate::rcc::RccInfo = unsafe { | 669 | const RCC_INFO: crate::rcc::RccInfo = unsafe { |
| 665 | crate::rcc::RccInfo::new( | 670 | crate::rcc::RccInfo::new( |
diff --git a/embassy-stm32/src/rcc/mod.rs b/embassy-stm32/src/rcc/mod.rs index 4f43d3748..150daa4a7 100644 --- a/embassy-stm32/src/rcc/mod.rs +++ b/embassy-stm32/src/rcc/mod.rs | |||
| @@ -97,6 +97,8 @@ pub(crate) unsafe fn get_freqs() -> &'static Clocks { | |||
| 97 | 97 | ||
| 98 | pub(crate) trait SealedRccPeripheral { | 98 | pub(crate) trait SealedRccPeripheral { |
| 99 | fn frequency() -> Hertz; | 99 | fn frequency() -> Hertz; |
| 100 | #[allow(dead_code)] | ||
| 101 | fn bus_frequency() -> Hertz; | ||
| 100 | const RCC_INFO: RccInfo; | 102 | const RCC_INFO: RccInfo; |
| 101 | } | 103 | } |
| 102 | 104 | ||
diff --git a/embassy-stm32/src/usb/otg.rs b/embassy-stm32/src/usb/otg.rs index 2aca3d929..590d1a427 100644 --- a/embassy-stm32/src/usb/otg.rs +++ b/embassy-stm32/src/usb/otg.rs | |||
| @@ -549,7 +549,7 @@ foreach_interrupt!( | |||
| 549 | ); | 549 | ); |
| 550 | 550 | ||
| 551 | fn calculate_trdt<T: Instance>(speed: Dspd) -> u8 { | 551 | fn calculate_trdt<T: Instance>(speed: Dspd) -> u8 { |
| 552 | let ahb_freq = T::frequency().0; | 552 | let ahb_freq = T::bus_frequency().0; |
| 553 | match speed { | 553 | match speed { |
| 554 | Dspd::HIGH_SPEED => { | 554 | Dspd::HIGH_SPEED => { |
| 555 | // From RM0431 (F72xx), RM0090 (F429), RM0390 (F446) | 555 | // From RM0431 (F72xx), RM0090 (F429), RM0390 (F446) |
