@@ -10,7 +10,10 @@ mod enable;
1010pub use clockout:: * ;
1111pub use config:: * ;
1212
13- pub trait Instance : crate :: Sealed + Enable + Reset + GetBusFreq { }
13+ pub trait Instance :
14+ crate :: Ptr + crate :: Steal + Enable + Reset + RccBus < Bus : BusClock > + Deref < Target = Self :: RB >
15+ {
16+ }
1417
1518/// HSI speed
1619pub const HSI_FREQ : u32 = 16_000_000 ;
@@ -672,67 +675,66 @@ pub trait Reset: RccBus {
672675 }
673676}
674677
675- pub trait GetBusFreq {
676- fn get_frequency ( clocks : & Clocks ) -> Hertz ;
677- fn get_timer_frequency ( clocks : & Clocks ) -> Hertz {
678- Self :: get_frequency ( clocks)
679- }
678+ /// Frequency on bus that peripheral is connected in
679+ pub trait BusClock {
680+ /// Calculates frequency depending on `Clock` state
681+ fn clock ( clocks : & Clocks ) -> Hertz ;
680682}
681683
682- impl < T > GetBusFreq for T
683- where
684- T : RccBus ,
685- T :: Bus : GetBusFreq ,
686- {
687- fn get_frequency ( clocks : & Clocks ) -> Hertz {
688- T :: Bus :: get_frequency ( clocks)
689- }
690- fn get_timer_frequency ( clocks : & Clocks ) -> Hertz {
691- T :: Bus :: get_timer_frequency ( clocks)
692- }
684+ /// Frequency on bus that timer is connected in
685+ pub trait BusTimerClock {
686+ /// Calculates base frequency of timer depending on `Clock` state
687+ fn timer_clock ( clocks : & Clocks ) -> Hertz ;
693688}
694689
695- impl GetBusFreq for AHB1 {
696- fn get_frequency ( clocks : & Clocks ) -> Hertz {
690+ impl BusClock for AHB1 {
691+ fn clock ( clocks : & Clocks ) -> Hertz {
697692 clocks. ahb_clk
698693 }
699694}
700695
701- impl GetBusFreq for AHB2 {
702- fn get_frequency ( clocks : & Clocks ) -> Hertz {
696+ impl BusClock for AHB2 {
697+ fn clock ( clocks : & Clocks ) -> Hertz {
703698 clocks. ahb_clk
704699 }
705700}
706701
707- impl GetBusFreq for AHB3 {
708- fn get_frequency ( clocks : & Clocks ) -> Hertz {
702+ impl BusClock for AHB3 {
703+ fn clock ( clocks : & Clocks ) -> Hertz {
709704 clocks. ahb_clk
710705 }
711706}
712707
713- impl GetBusFreq for APB1_1 {
714- fn get_frequency ( clocks : & Clocks ) -> Hertz {
708+ impl BusClock for APB1_1 {
709+ fn clock ( clocks : & Clocks ) -> Hertz {
715710 clocks. apb1_clk
716711 }
717- fn get_timer_frequency ( clocks : & Clocks ) -> Hertz {
712+ }
713+
714+ impl BusTimerClock for APB1_1 {
715+ fn timer_clock ( clocks : & Clocks ) -> Hertz {
718716 clocks. apb1_tim_clk
719717 }
720718}
721719
722- impl GetBusFreq for APB1_2 {
723- fn get_frequency ( clocks : & Clocks ) -> Hertz {
720+ impl BusClock for APB1_2 {
721+ fn clock ( clocks : & Clocks ) -> Hertz {
724722 clocks. apb1_clk
725723 }
726- fn get_timer_frequency ( clocks : & Clocks ) -> Hertz {
724+ }
725+ impl BusTimerClock for APB1_2 {
726+ fn timer_clock ( clocks : & Clocks ) -> Hertz {
727727 clocks. apb1_tim_clk
728728 }
729729}
730730
731- impl GetBusFreq for APB2 {
732- fn get_frequency ( clocks : & Clocks ) -> Hertz {
731+ impl BusClock for APB2 {
732+ fn clock ( clocks : & Clocks ) -> Hertz {
733733 clocks. apb2_clk
734734 }
735- fn get_timer_frequency ( clocks : & Clocks ) -> Hertz {
735+ }
736+ impl BusTimerClock for APB2 {
737+ fn timer_clock ( clocks : & Clocks ) -> Hertz {
736738 clocks. apb2_tim_clk
737739 }
738740}
0 commit comments