45
45
//! If you momentarily pull PE15 low, LD2 will turn on and you will get no PWM on PE8-PE14, even if you pull PE15 high again
46
46
//! If PE15 is high and you press the USER button, TIM1 PWM will resume on PE8-PE14
47
47
48
- #![ deny( warnings) ]
48
+ // #![deny(warnings)]
49
49
#![ no_main]
50
50
#![ no_std]
51
51
@@ -55,6 +55,8 @@ mod utilities;
55
55
use stm32h7xx_hal:: pwm:: { FaultMonitor , Polarity } ;
56
56
use stm32h7xx_hal:: { pac, prelude:: * } ;
57
57
58
+ use embedded_hal:: pwm:: * ;
59
+
58
60
use log:: info;
59
61
60
62
#[ entry]
@@ -122,16 +124,16 @@ fn main() -> ! {
122
124
let mut t1c4 = t1c4. into_active_low ( ) ;
123
125
124
126
// Output TIM1 PWM
125
- let period = t1c1. get_max_duty ( ) ;
126
- t1c1. set_duty ( period / 2 ) ;
127
- t1c2. set_duty ( period / 8 * 7 ) ;
128
- t1c3. set_duty ( period / 8 ) ;
129
- t1c4. set_duty ( period / 2 ) ;
127
+ let period = t1c1. max_duty_cycle ( ) ;
128
+ t1c1. set_duty_cycle ( period / 2 ) . unwrap ( ) ;
129
+ t1c2. set_duty_cycle ( period / 8 * 7 ) . unwrap ( ) ;
130
+ t1c3. set_duty_cycle ( period / 8 ) . unwrap ( ) ;
131
+ t1c4. set_duty_cycle ( period / 2 ) . unwrap ( ) ;
130
132
131
- t1c1. enable ( ) ;
132
- t1c2. enable ( ) ;
133
- t1c3. enable ( ) ;
134
- t1c4. enable ( ) ;
133
+ t1c1. enable ( ) . unwrap ( ) ;
134
+ t1c2. enable ( ) . unwrap ( ) ;
135
+ t1c3. enable ( ) . unwrap ( ) ;
136
+ t1c4. enable ( ) . unwrap ( ) ;
135
137
136
138
// Configure TIM2 PWM
137
139
let ( _t2control, ( mut t2c2, mut t2c1, mut t2c3, t2c4) ) = dp
@@ -154,16 +156,16 @@ fn main() -> ! {
154
156
let mut t2c4 = t2c4. into_active_low ( ) ;
155
157
156
158
// Output TIM2 PWM
157
- let period = t2c1. get_max_duty ( ) ;
158
- t2c1. set_duty ( period / 4 * 3 ) ;
159
- t2c2. set_duty ( period / 2 ) ;
160
- t2c3. set_duty ( period / 4 ) ;
161
- t2c4. set_duty ( period / 4 * 3 ) ;
159
+ let period = t2c1. max_duty_cycle ( ) ;
160
+ t2c1. set_duty_cycle ( period / 4 * 3 ) . unwrap ( ) ;
161
+ t2c2. set_duty_cycle ( period / 2 ) . unwrap ( ) ;
162
+ t2c3. set_duty_cycle ( period / 4 ) . unwrap ( ) ;
163
+ t2c4. set_duty_cycle ( period / 4 * 3 ) . unwrap ( ) ;
162
164
163
- t2c1. enable ( ) ;
164
- t2c2. enable ( ) ;
165
- t2c3. enable ( ) ;
166
- t2c4. enable ( ) ;
165
+ t2c1. enable ( ) . unwrap ( ) ;
166
+ t2c2. enable ( ) . unwrap ( ) ;
167
+ t2c3. enable ( ) . unwrap ( ) ;
168
+ t2c4. enable ( ) . unwrap ( ) ;
167
169
168
170
// Configure TIM3 PWM
169
171
let ( _t3control, ( mut t3c3, mut t3c2) ) = dp
@@ -178,12 +180,12 @@ fn main() -> ! {
178
180
. finalize ( ) ;
179
181
180
182
// Output TIM3 PWM
181
- let period = t3c2. get_max_duty ( ) ;
182
- t3c2. set_duty ( period / 3 ) ;
183
- t3c3. set_duty ( period / 3 * 2 ) ;
183
+ let period = t3c2. max_duty_cycle ( ) ;
184
+ t3c2. set_duty_cycle ( period / 3 ) . unwrap ( ) ;
185
+ t3c3. set_duty_cycle ( period / 3 * 2 ) . unwrap ( ) ;
184
186
185
- t3c2. enable ( ) ;
186
- t3c3. enable ( ) ;
187
+ t3c2. enable ( ) . unwrap ( ) ;
188
+ t3c3. enable ( ) . unwrap ( ) ;
187
189
188
190
// Configure TIM4 PWM
189
191
let ( _t4control, t4c4) = dp
@@ -199,10 +201,10 @@ fn main() -> ! {
199
201
let mut t4c4 = t4c4. into_active_low ( ) ;
200
202
201
203
// Output TIM4 PWM
202
- let period = t4c4. get_max_duty ( ) ;
203
- t4c4. set_duty ( period / 10 * 4 ) ;
204
+ let period = t4c4. max_duty_cycle ( ) ;
205
+ t4c4. set_duty_cycle ( period / 10 * 4 ) . unwrap ( ) ;
204
206
205
- t4c4. enable ( ) ;
207
+ t4c4. enable ( ) . unwrap ( ) ;
206
208
207
209
// Configure TIM5 PWM
208
210
let t5builder = dp
@@ -218,10 +220,10 @@ fn main() -> ! {
218
220
let ( _t5control, mut t5c4) = t5builder. finalize ( ) ;
219
221
220
222
// Output TIM5 PWM
221
- let period = t5c4. get_max_duty ( ) ;
222
- t5c4. set_duty ( period / 5 * 4 ) ;
223
+ let period = t5c4. max_duty_cycle ( ) ;
224
+ t5c4. set_duty_cycle ( period / 5 * 4 ) . unwrap ( ) ;
223
225
224
- t5c4. enable ( ) ;
226
+ t5c4. enable ( ) . unwrap ( ) ;
225
227
226
228
// Configure TIM8 PWM
227
229
let ( mut t8control, ( t8c1, mut t8c2, t8c3, t8c4) ) = dp
@@ -247,16 +249,16 @@ fn main() -> ! {
247
249
let mut t8c4 = t8c4. into_active_low ( ) ;
248
250
249
251
// Output TIM8 PWM
250
- let period = t8c1. get_max_duty ( ) ;
251
- t8c1. set_duty ( period / 2 ) ;
252
- t8c2. set_duty ( period / 10 ) ;
253
- t8c3. set_duty ( period / 4 ) ;
254
- t8c4. set_duty ( period / 4 * 3 ) ;
252
+ let period = t8c1. max_duty_cycle ( ) ;
253
+ t8c1. set_duty_cycle ( period / 2 ) . unwrap ( ) ;
254
+ t8c2. set_duty_cycle ( period / 10 ) . unwrap ( ) ;
255
+ t8c3. set_duty_cycle ( period / 4 ) . unwrap ( ) ;
256
+ t8c4. set_duty_cycle ( period / 4 * 3 ) . unwrap ( ) ;
255
257
256
- t8c1. enable ( ) ;
257
- t8c2. enable ( ) ;
258
- t8c3. enable ( ) ;
259
- t8c4. enable ( ) ;
258
+ t8c1. enable ( ) . unwrap ( ) ;
259
+ t8c2. enable ( ) . unwrap ( ) ;
260
+ t8c3. enable ( ) . unwrap ( ) ;
261
+ t8c4. enable ( ) . unwrap ( ) ;
260
262
261
263
// Configure TIM12 PWM
262
264
let ( mut t12c2, t12c1) = dp. TIM12 . pwm (
@@ -269,12 +271,12 @@ fn main() -> ! {
269
271
let mut t12c1 = t12c1. into_active_low ( ) ;
270
272
271
273
// Output TIM12 PWM
272
- let period = t12c1. get_max_duty ( ) ;
273
- t12c1. set_duty ( period / 4 ) ;
274
- t12c2. set_duty ( period / 10 * 4 ) ;
274
+ let period = t12c1. max_duty_cycle ( ) ;
275
+ t12c1. set_duty_cycle ( period / 4 ) . unwrap ( ) ;
276
+ t12c2. set_duty_cycle ( period / 10 * 4 ) . unwrap ( ) ;
275
277
276
- t12c1. enable ( ) ;
277
- t12c2. enable ( ) ;
278
+ t12c1. enable ( ) . unwrap ( ) ;
279
+ t12c2. enable ( ) . unwrap ( ) ;
278
280
279
281
// Configure TIM13 PWM
280
282
let ( _t13control, t13c1) = dp
@@ -290,10 +292,10 @@ fn main() -> ! {
290
292
let mut t13c1 = t13c1. into_active_low ( ) ;
291
293
292
294
// Output TIM13 PWM
293
- let period = t13c1. get_max_duty ( ) ;
294
- t13c1. set_duty ( period / 10 * 3 ) ;
295
+ let period = t13c1. max_duty_cycle ( ) ;
296
+ t13c1. set_duty_cycle ( period / 10 * 3 ) . unwrap ( ) ;
295
297
296
- t13c1. enable ( ) ;
298
+ t13c1. enable ( ) . unwrap ( ) ;
297
299
298
300
// Configure TIM14 PWM
299
301
let ( _t14control, mut t14c1) = dp
@@ -307,10 +309,10 @@ fn main() -> ! {
307
309
. finalize ( ) ;
308
310
309
311
// Output TIM14 PWM
310
- let period = t14c1. get_max_duty ( ) ;
311
- t14c1. set_duty ( period / 5 ) ;
312
+ let period = t14c1. max_duty_cycle ( ) ;
313
+ t14c1. set_duty_cycle ( period / 5 ) . unwrap ( ) ;
312
314
313
- t14c1. enable ( ) ;
315
+ t14c1. enable ( ) . unwrap ( ) ;
314
316
315
317
// Configure TIM15 PWM
316
318
let ( mut t15control, ( t15c1, mut t15c2) ) = dp
@@ -331,12 +333,12 @@ fn main() -> ! {
331
333
. into_comp_active_low ( ) ;
332
334
333
335
// Output TIM15 PWM
334
- let period = t15c1. get_max_duty ( ) ;
335
- t15c1. set_duty ( period / 4 ) ;
336
- t15c2. set_duty ( period / 2 ) ;
336
+ let period = t15c1. max_duty_cycle ( ) ;
337
+ t15c1. set_duty_cycle ( period / 4 ) . unwrap ( ) ;
338
+ t15c2. set_duty_cycle ( period / 2 ) . unwrap ( ) ;
337
339
338
- t15c1. enable ( ) ;
339
- t15c2. enable ( ) ;
340
+ t15c1. enable ( ) . unwrap ( ) ;
341
+ t15c2. enable ( ) . unwrap ( ) ;
340
342
341
343
// Configure TIM16 PWM
342
344
let ( mut t16control, t16c1) = dp
@@ -353,10 +355,10 @@ fn main() -> ! {
353
355
let mut t16c1 = t16c1. into_active_low ( ) ;
354
356
355
357
// Output TIM16 PWM
356
- let period = t16c1. get_max_duty ( ) ;
357
- t16c1. set_duty ( period / 4 ) ;
358
+ let period = t16c1. max_duty_cycle ( ) ;
359
+ t16c1. set_duty_cycle ( period / 4 ) . unwrap ( ) ;
358
360
359
- t16c1. enable ( ) ;
361
+ t16c1. enable ( ) . unwrap ( ) ;
360
362
361
363
// Configure TIM17 PWM
362
364
let ( _t17control, t17c1) = dp
@@ -373,10 +375,10 @@ fn main() -> ! {
373
375
let mut t17c1 = t17c1. into_complementary ( gpiof. pf9 . into_alternate ( ) ) ;
374
376
375
377
// Output TIM16 PWM
376
- let period = t17c1. get_max_duty ( ) ;
377
- t17c1. set_duty ( period / 2 ) ;
378
+ let period = t17c1. max_duty_cycle ( ) ;
379
+ t17c1. set_duty_cycle ( period / 2 ) . unwrap ( ) ;
378
380
379
- t17c1. enable ( ) ;
381
+ t17c1. enable ( ) . unwrap ( ) ;
380
382
381
383
info ! ( "" ) ;
382
384
info ! ( "PWM channels enabled; see examples/pwm_advanced.rs for list of channels, pins, and settings" ) ;
0 commit comments