77mod utils;
88
99use cortex_m_rt:: entry;
10+ use stm32g4xx_hal:: hrtim:: { timer:: TimerSplitCapture , HrParts } ;
1011use utils:: logger:: info;
1112
1213#[ entry]
@@ -15,7 +16,7 @@ fn main() -> ! {
1516
1617 use hal:: {
1718 dma:: { config:: DmaConfig , stream:: DMAExt , TransferExt } ,
18- gpio:: { GpioExt , AF13 } ,
19+ gpio:: GpioExt ,
1920 hrtim:: {
2021 capture, compare_register:: HrCompareRegister , control:: HrControltExt , external_event,
2122 external_event:: ToExternalEventSource , output:: HrOutput , timer:: HrSlaveTimerCpt ,
@@ -37,7 +38,7 @@ fn main() -> ! {
3738 let pwr = dp. PWR . constrain ( ) . freeze ( ) ;
3839 let mut rcc = dp. RCC . freeze (
3940 rcc:: Config :: pll ( ) . pll_cfg ( rcc:: PllConfig {
40- mux : rcc:: PLLSrc :: HSI ,
41+ mux : rcc:: PllSrc :: HSI ,
4142 n : rcc:: PllNMul :: MUL_15 ,
4243 m : rcc:: PllMDiv :: DIV_1 ,
4344 r : Some ( rcc:: PllRDiv :: DIV_2 ) ,
@@ -83,7 +84,13 @@ fn main() -> ! {
8384 . finalize ( & mut hr_control) ;
8485
8586 let mut hr_control = hr_control. constrain ( ) ;
86- let ( timer, ( mut cr1, _cr2, _cr3, _cr4) , mut out1, dma_ch) = dp
87+ let HrParts {
88+ timer,
89+ mut cr1,
90+ out : mut out1,
91+ dma_channel,
92+ ..
93+ } = dp
8794 . HRTIM_TIMA
8895 . pwm_advanced ( pin_a, & mut rcc)
8996 . prescaler ( prescaler)
@@ -93,7 +100,11 @@ fn main() -> ! {
93100 out1. enable_set_event ( & timer) ; // Set high at new period
94101 cr1. set_duty ( period / 2 ) ;
95102
96- let ( mut timer, mut capture, _capture_ch2) = timer. split_capture ( ) ;
103+ let TimerSplitCapture {
104+ mut timer,
105+ ch1 : mut capture,
106+ ..
107+ } = timer. split_capture ( ) ;
97108 timer. start ( & mut hr_control. control ) ;
98109 out1. enable ( ) ;
99110
@@ -109,7 +120,7 @@ fn main() -> ! {
109120
110121 let first_buffer = cortex_m:: singleton!( : [ u32 ; 16 ] = [ 0 ; 16 ] ) . unwrap ( ) ;
111122 let mut transfer = streams. 0 . into_circ_peripheral_to_memory_transfer (
112- capture. enable_dma ( dma_ch ) ,
123+ capture. enable_dma ( dma_channel ) ,
113124 & mut first_buffer[ ..] ,
114125 config,
115126 ) ;
@@ -121,7 +132,7 @@ fn main() -> ! {
121132 for duty in ( u32:: from ( period) / 10 ) ..( 9 * u32:: from ( period) / 10 ) {
122133 let mut data = [ 0 ; 2 ] ;
123134 transfer. read_exact ( & mut data) ;
124- let [ t1, t2] = data. map ( capture:: dma_value_to_signed) ;
135+ let [ t1, t2] = data. map ( |x| capture:: dma_value_to_signed ( x , period ) ) ;
125136 cr1. set_duty ( duty as u16 ) ;
126137 info ! ( "Capture: t1: {}, t2: {}, duty: {}, " , t1, t2, old_duty) ;
127138 old_duty = duty;
0 commit comments