@@ -28,8 +28,10 @@ fn main() -> ! {
28
28
delay:: SYSTDelayExt ,
29
29
dma:: { self , config:: DmaConfig , stream:: DMAExt , TransferExt } ,
30
30
gpio:: { gpioa:: PA8 , gpioa:: PA9 , Alternate , GpioExt , AF13 } ,
31
+ hrtim:: compare_register:: HrCompareRegister ,
31
32
hrtim:: control:: HrControltExt ,
32
33
hrtim:: output:: HrOutput ,
34
+ hrtim:: timer:: HrTimer ,
33
35
hrtim:: HrPwmAdvExt ,
34
36
hrtim:: Pscl4 ,
35
37
pwr:: PwrExt ,
@@ -111,18 +113,22 @@ fn main() -> ! {
111
113
//out1 | | | |
112
114
// | | | |
113
115
// -------- ---------- --------
116
+ let period = 0xFFFF ;
114
117
let ( hr_control, ..) = dp. HRTIM_COMMON . hr_control ( & mut rcc) . wait_for_calibration ( ) ;
115
118
let mut hr_control = hr_control. constrain ( ) ;
116
- let ( timer, ( cr1, _cr2, cr3, cr4) , ( mut out1, mut out2) ) = dp
119
+ let ( mut timer, ( cr1, _cr2, mut cr3, mut cr4) , ( mut out1, mut out2) ) = dp
117
120
. HRTIM_TIMA
118
121
. pwm_advanced ( ( pin_a, pin_b) , & mut rcc)
119
122
. prescaler ( prescaler)
120
- . period ( 0xFFFF )
123
+ . period ( period )
121
124
// alternated every period with one being
122
125
// inactive and the other getting to output its wave form
123
126
// as normal
124
127
. finalize ( & mut hr_control) ;
125
128
129
+ cr3. set_duty ( period / 3 ) ;
130
+ cr4. set_duty ( ( 2 * u32:: from ( period) / 3 ) as u16 ) ;
131
+
126
132
hr_control. enable_adc_trigger1_source ( & cr3) ;
127
133
hr_control. enable_adc_trigger1_source ( & cr4) ;
128
134
@@ -135,6 +141,8 @@ fn main() -> ! {
135
141
out1. enable ( ) ;
136
142
out2. enable ( ) ;
137
143
144
+ timer. start ( & mut hr_control) ;
145
+
138
146
loop {
139
147
let mut b = [ 0_u16 ; 4 ] ;
140
148
let r = transfer. read_exact ( & mut b) ;
@@ -149,6 +157,6 @@ fn main() -> ! {
149
157
VREF ,
150
158
adc:: config:: Resolution :: Twelve ,
151
159
) ;
152
- info ! ( "temp: {}℃C" , temp) ; // Note: Temperature seems quite low...
160
+ info ! ( "temp: {}℃C" , temp) ;
153
161
}
154
162
}
0 commit comments