@@ -13,14 +13,14 @@ pub mod timer_eev_cfg;
1313use core:: marker:: PhantomData ;
1414use core:: mem:: MaybeUninit ;
1515
16- use crate :: hrtim:: capture:: HrCapt ;
1716use crate :: hrtim:: compare_register:: { HrCr1 , HrCr2 , HrCr3 , HrCr4 } ;
1817use crate :: hrtim:: fault:: { FaultAction , FaultSource } ;
1918use crate :: hrtim:: timer:: HrTim ;
2019use crate :: stm32:: {
2120 HRTIM_COMMON , HRTIM_MASTER , HRTIM_TIMA , HRTIM_TIMB , HRTIM_TIMC , HRTIM_TIMD , HRTIM_TIME ,
2221 HRTIM_TIMF ,
2322} ;
23+ use capture:: { HrCaptCh1 , HrCaptCh2 } ;
2424use fugit:: HertzU64 ;
2525
2626use self :: control:: HrPwmControl ;
@@ -188,6 +188,18 @@ pub struct HrPwmBuilder<TIM, PSCL, PS, PINS> {
188188 out2_polarity : Polarity ,
189189}
190190
191+ pub struct HrParts < TIM , PSCL , OUT > {
192+ pub timer : HrTim < TIM , PSCL , HrCaptCh1 < TIM , PSCL > , HrCaptCh2 < TIM , PSCL > > ,
193+
194+ pub cr1 : HrCr1 < TIM , PSCL > ,
195+ pub cr2 : HrCr2 < TIM , PSCL > ,
196+ pub cr3 : HrCr3 < TIM , PSCL > ,
197+ pub cr4 : HrCr4 < TIM , PSCL > ,
198+
199+ pub out : OUT ,
200+ pub dma_channel : timer:: DmaChannel < TIM > ,
201+ }
202+
191203pub enum PreloadSource {
192204 /// Preloaded registers are updated on counter roll over or counter reset
193205 OnCounterReset ,
@@ -249,7 +261,7 @@ macro_rules! hrtim_finalize_body {
249261 // Set counting direction
250262 w. udm( ) . bit( $this. counting_direction == HrCountingDirection :: UpDown )
251263 ) ;
252-
264+
253265 tim. cr( ) . modify( |_r, w|
254266 // Push-Pull mode
255267 w. pshpll( ) . bit( $this. enable_push_pull)
@@ -552,20 +564,7 @@ macro_rules! hrtim_hal {
552564 PSCL : HrtimPrescaler ,
553565 PINS : ToHrOut <$TIMX>,
554566 {
555- pub fn finalize( self , _control: & mut HrPwmControl ) -> (
556- HrTim <$TIMX, PSCL ,
557- HrCapt <$TIMX, PSCL , capture:: Ch1 , capture:: NoDma >,
558- HrCapt <$TIMX, PSCL , capture:: Ch2 , capture:: NoDma >
559- >, (
560- HrCr1 <$TIMX, PSCL >,
561- HrCr2 <$TIMX, PSCL >,
562- HrCr3 <$TIMX, PSCL >,
563- HrCr4 <$TIMX, PSCL >
564- ) ,
565- PINS :: Out <PSCL >,
566- timer:: DmaChannel <$TIMX>,
567- ) {
568-
567+ pub fn finalize( self , _control: & mut HrPwmControl ) -> HrParts <$TIMX, PSCL , PINS :: Out <PSCL >> {
569568 hrtim_finalize_body!(
570569 self , PreloadSource ,
571570 $TIMX, $( $out) *
@@ -660,7 +659,6 @@ macro_rules! hrtim_hal {
660659 } ;
661660}
662661
663-
664662impl HrPwmAdvExt for HRTIM_MASTER {
665663 type PreloadSource = MasterPreloadSource ;
666664
@@ -701,25 +699,12 @@ impl HrPwmAdvExt for HRTIM_MASTER {
701699 }
702700}
703701
704- impl < PSCL , PINS >
705- HrPwmBuilder < HRTIM_MASTER , PSCL , MasterPreloadSource , PINS >
702+ impl < PSCL , PINS > HrPwmBuilder < HRTIM_MASTER , PSCL , MasterPreloadSource , PINS >
706703where
707704 PSCL : HrtimPrescaler ,
708705 PINS : ToHrOut < HRTIM_MASTER > ,
709706{
710- pub fn finalize ( self , _control : & mut HrPwmControl ) -> (
711- HrTim < HRTIM_MASTER , PSCL ,
712- HrCapt < HRTIM_MASTER , PSCL , capture:: Ch1 , capture:: NoDma > ,
713- HrCapt < HRTIM_MASTER , PSCL , capture:: Ch2 , capture:: NoDma > ,
714- > , (
715- HrCr1 < HRTIM_MASTER , PSCL > ,
716- HrCr2 < HRTIM_MASTER , PSCL > ,
717- HrCr3 < HRTIM_MASTER , PSCL > ,
718- HrCr4 < HRTIM_MASTER , PSCL >
719- ) ,
720- timer:: DmaChannel < HRTIM_MASTER > ,
721- ) {
722-
707+ pub fn finalize ( self , _control : & mut HrPwmControl ) -> HrParts < HRTIM_MASTER , PSCL , ( ) > {
723708 hrtim_finalize_body ! ( self , MasterPreloadSource , HRTIM_MASTER , )
724709 }
725710
0 commit comments