@@ -16,7 +16,7 @@ fn main() -> ! {
16
16
#[ cfg( any( feature = "stm32g474" , feature = "stm32g484" ) ) ]
17
17
#[ entry]
18
18
fn main ( ) -> ! {
19
- use hal:: adc:: { self , config :: ExternalTrigger12 } ;
19
+ use hal:: adc;
20
20
use stm32g4xx_hal as hal;
21
21
22
22
use defmt:: info;
@@ -74,32 +74,6 @@ fn main() -> ! {
74
74
let gpioa = dp. GPIOA . split ( & mut rcc) ;
75
75
let pa0 = gpioa. pa0 . into_analog ( ) ;
76
76
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
-
103
77
let pin_a: PA8 < Alternate < AF13 > > = gpioa. pa8 . into_alternate ( ) ;
104
78
let pin_b: PA9 < Alternate < AF13 > > = gpioa. pa9 . into_alternate ( ) ;
105
79
@@ -121,23 +95,46 @@ fn main() -> ! {
121
95
. pwm_advanced ( ( pin_a, pin_b) , & mut rcc)
122
96
. prescaler ( prescaler)
123
97
. period ( period)
124
- // alternated every period with one being
125
- // inactive and the other getting to output its wave form
126
- // as normal
127
98
. finalize ( & mut hr_control) ;
128
99
129
100
cr3. set_duty ( period / 3 ) ;
130
101
cr4. set_duty ( ( 2 * u32:: from ( period) / 3 ) as u16 ) ;
131
102
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) ;
134
105
135
106
out1. enable_rst_event ( & cr1) ; // Set low on compare match with cr1
136
107
out2. enable_rst_event ( & cr1) ;
137
108
138
109
out1. enable_set_event ( & timer) ; // Set high at new period
139
110
out2. enable_set_event ( & timer) ;
140
111
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
+
141
138
out1. enable ( ) ;
142
139
out2. enable ( ) ;
143
140
0 commit comments