Revert "Make advanced timer trait not require general purpose timer trait as the timers are too different."

This reverts commit 4988dfe981.
This commit is contained in:
chemicstry 2022-07-12 15:06:16 +03:00
parent 2adee4af38
commit 2df665da8a
2 changed files with 13 additions and 3 deletions

View File

@ -54,7 +54,7 @@ impl From<OutputCompareMode> for stm32_metapac::timer::vals::Ocm {
pub(crate) mod sealed { pub(crate) mod sealed {
use super::*; use super::*;
pub trait CaptureCompare16bitInstance: crate::timer::sealed::Basic16bitInstance { pub trait CaptureCompare16bitInstance: crate::timer::sealed::GeneralPurpose16bitInstance {
/// Global output enable. Does not do anything on non-advanced timers. /// Global output enable. Does not do anything on non-advanced timers.
unsafe fn enable_outputs(&mut self, enable: bool); unsafe fn enable_outputs(&mut self, enable: bool);
@ -79,7 +79,7 @@ pub(crate) mod sealed {
} }
pub trait CaptureCompare16bitInstance: pub trait CaptureCompare16bitInstance:
sealed::CaptureCompare16bitInstance + crate::timer::Basic16bitInstance + 'static sealed::CaptureCompare16bitInstance + crate::timer::GeneralPurpose16bitInstance + 'static
{ {
} }
pub trait CaptureCompare32bitInstance: pub trait CaptureCompare32bitInstance:

View File

@ -40,7 +40,7 @@ pub(crate) mod sealed {
fn set_frequency(&mut self, frequency: Hertz); fn set_frequency(&mut self, frequency: Hertz);
} }
pub trait AdvancedControlInstance: Basic16bitInstance { pub trait AdvancedControlInstance: GeneralPurpose16bitInstance {
fn regs_advanced() -> crate::pac::timer::TimAdv; fn regs_advanced() -> crate::pac::timer::TimAdv;
} }
} }
@ -204,11 +204,21 @@ foreach_interrupt! {
impl Basic16bitInstance for crate::peripherals::$inst { impl Basic16bitInstance for crate::peripherals::$inst {
} }
impl sealed::GeneralPurpose16bitInstance for crate::peripherals::$inst {
fn regs_gp16() -> crate::pac::timer::TimGp16 {
crate::pac::timer::TimGp16(crate::pac::$inst.0)
}
}
impl GeneralPurpose16bitInstance for crate::peripherals::$inst {
}
impl sealed::AdvancedControlInstance for crate::peripherals::$inst { impl sealed::AdvancedControlInstance for crate::peripherals::$inst {
fn regs_advanced() -> crate::pac::timer::TimAdv { fn regs_advanced() -> crate::pac::timer::TimAdv {
crate::pac::$inst crate::pac::$inst
} }
} }
impl AdvancedControlInstance for crate::peripherals::$inst { impl AdvancedControlInstance for crate::peripherals::$inst {
} }
}; };