@@ -16,7 +16,7 @@ fn main() -> ! {
1616#[ cfg( any( feature = "stm32g474" , feature = "stm32g484" ) ) ]
1717#[ entry]
1818fn main ( ) -> ! {
19- use hal:: adc:: { self , config :: ExternalTrigger12 } ;
19+ use hal:: adc;
2020 use stm32g4xx_hal as hal;
2121
2222 use defmt:: info;
@@ -74,32 +74,6 @@ fn main() -> ! {
7474 let gpioa = dp. GPIOA . split ( & mut rcc) ;
7575 let pa0 = gpioa. pa0 . into_analog ( ) ;
7676
77- info ! ( "Setup Adc1" ) ;
78- let mut adc = dp
79- . ADC1
80- . claim ( ClockSource :: SystemClock , & rcc, & mut delay, true ) ;
81-
82- adc. set_external_trigger ( (
83- adc:: config:: TriggerMode :: RisingEdge ,
84- ExternalTrigger12 :: Hrtim_adc_trg_1 ,
85- ) ) ;
86- adc. enable_temperature ( & dp. ADC12_COMMON ) ;
87- adc. set_continuous ( Continuous :: Discontinuous ) ;
88- adc. reset_sequence ( ) ;
89- adc. configure_channel ( & pa0, Sequence :: One , SampleTime :: Cycles_640_5 ) ;
90- adc. configure_channel ( & Temperature , Sequence :: Two , SampleTime :: Cycles_640_5 ) ;
91-
92- info ! ( "Setup DMA" ) ;
93- let first_buffer = cortex_m:: singleton!( : [ u16 ; 10 ] = [ 0 ; 10 ] ) . unwrap ( ) ;
94-
95- let mut transfer = dma1ch1. into_circ_peripheral_to_memory_transfer (
96- adc. enable_dma ( AdcDma :: Continuous ) ,
97- & mut first_buffer[ ..] ,
98- config,
99- ) ;
100-
101- transfer. start ( |adc| adc. start_conversion ( ) ) ;
102-
10377 let pin_a: PA8 < Alternate < AF13 > > = gpioa. pa8 . into_alternate ( ) ;
10478 let pin_b: PA9 < Alternate < AF13 > > = gpioa. pa9 . into_alternate ( ) ;
10579
@@ -121,23 +95,46 @@ fn main() -> ! {
12195 . pwm_advanced ( ( pin_a, pin_b) , & mut rcc)
12296 . prescaler ( prescaler)
12397 . period ( period)
124- // alternated every period with one being
125- // inactive and the other getting to output its wave form
126- // as normal
12798 . finalize ( & mut hr_control) ;
12899
129100 cr3. set_duty ( period / 3 ) ;
130101 cr4. set_duty ( ( 2 * u32:: from ( period) / 3 ) as u16 ) ;
131102
132- hr_control. enable_adc_trigger1_source ( & cr3) ;
133- hr_control. enable_adc_trigger1_source ( & cr4) ;
103+ hr_control. adc_trigger1 . enable_source ( & cr3) ;
104+ hr_control. adc_trigger1 . enable_source ( & cr4) ;
134105
135106 out1. enable_rst_event ( & cr1) ; // Set low on compare match with cr1
136107 out2. enable_rst_event ( & cr1) ;
137108
138109 out1. enable_set_event ( & timer) ; // Set high at new period
139110 out2. enable_set_event ( & timer) ;
140111
112+ info ! ( "Setup Adc1" ) ;
113+ let mut adc = dp
114+ . ADC1
115+ . claim ( ClockSource :: SystemClock , & rcc, & mut delay, true ) ;
116+
117+ adc. set_external_trigger ( (
118+ adc:: config:: TriggerMode :: RisingEdge ,
119+ hr_control. adc_trigger1 . as_adc12_trigger ( ) ,
120+ ) ) ;
121+ adc. enable_temperature ( & dp. ADC12_COMMON ) ;
122+ adc. set_continuous ( Continuous :: Discontinuous ) ;
123+ adc. reset_sequence ( ) ;
124+ adc. configure_channel ( & pa0, Sequence :: One , SampleTime :: Cycles_640_5 ) ;
125+ adc. configure_channel ( & Temperature , Sequence :: Two , SampleTime :: Cycles_640_5 ) ;
126+
127+ info ! ( "Setup DMA" ) ;
128+ let first_buffer = cortex_m:: singleton!( : [ u16 ; 10 ] = [ 0 ; 10 ] ) . unwrap ( ) ;
129+
130+ let mut transfer = dma1ch1. into_circ_peripheral_to_memory_transfer (
131+ adc. enable_dma ( AdcDma :: Continuous ) ,
132+ & mut first_buffer[ ..] ,
133+ config,
134+ ) ;
135+
136+ transfer. start ( |adc| adc. start_conversion ( ) ) ;
137+
141138 out1. enable ( ) ;
142139 out2. enable ( ) ;
143140
0 commit comments