@@ -69,7 +69,7 @@ use fugit::RateExtU32;
69
69
70
70
/// Hardware timers
71
71
pub struct Timer < TIM > {
72
- clocks : Clocks ,
72
+ clock : Hertz ,
73
73
tim : TIM ,
74
74
timeout : Hertz ,
75
75
}
@@ -81,7 +81,7 @@ pub enum Event {
81
81
}
82
82
83
83
macro_rules! hal {
84
- ( $( $TIM: ident: ( $tim: ident, $frname: ident, $apb: ident, $width: ident) , ) +) => {
84
+ ( $( $TIM: ident: ( $tim: ident, $frname: ident, $apb: ident, $width: ident, $timclk : ident ) , ) +) => {
85
85
$(
86
86
impl Periodic for Timer <$TIM> { }
87
87
@@ -98,7 +98,7 @@ macro_rules! hal {
98
98
self . pause( ) ;
99
99
100
100
self . timeout = timeout. into( ) ;
101
- let ticks = self . clocks . pclk1 ( ) / self . timeout; // TODO: Check pclk that timer is on.
101
+ let ticks = self . clock / self . timeout; // TODO check pclk that timer is on
102
102
let psc = u16 ( ( ticks - 1 ) / ( 1 << 16 ) ) . unwrap( ) ;
103
103
104
104
self . tim. psc. write( |w| unsafe { w. psc( ) . bits( psc) } ) ;
@@ -150,8 +150,10 @@ macro_rules! hal {
150
150
<$TIM>:: enable( apb) ;
151
151
<$TIM>:: reset( apb) ;
152
152
153
+ let clock = clocks. $timclk( ) ;
154
+
153
155
let mut timer = Timer {
154
- clocks ,
156
+ clock ,
155
157
tim,
156
158
timeout: 0 . Hz ( ) ,
157
159
} ;
@@ -173,9 +175,11 @@ macro_rules! hal {
173
175
<$TIM>:: enable( apb) ;
174
176
<$TIM>:: reset( apb) ;
175
177
176
- let psc = clocks. pclk1( ) / frequency - 1 ;
178
+ let clock = clocks. $timclk( ) ;
179
+
180
+ let psc = clock / frequency - 1 ;
177
181
178
- debug_assert!( clocks . pclk1 ( ) >= frequency) ;
182
+ debug_assert!( clock >= frequency) ;
179
183
debug_assert!( frequency. raw( ) > 0 ) ;
180
184
debug_assert!( psc <= core:: u16 :: MAX . into( ) ) ;
181
185
@@ -206,7 +210,7 @@ macro_rules! hal {
206
210
} ) ;
207
211
208
212
Timer {
209
- clocks ,
213
+ clock ,
210
214
tim,
211
215
timeout: frequency,
212
216
}
@@ -277,11 +281,11 @@ macro_rules! hal {
277
281
}
278
282
279
283
hal ! {
280
- TIM2 : ( tim2, free_running_tim2, APB1R1 , u32 ) ,
281
- TIM6 : ( tim6, free_running_tim6, APB1R1 , u16 ) ,
282
- //TIM7: (tim7, free_running_tim7, APB1R1, u16),
283
- TIM15 : ( tim15, free_running_tim15, APB2 , u16 ) ,
284
- TIM16 : ( tim16, free_running_tim16, APB2 , u16 ) ,
284
+ TIM2 : ( tim2, free_running_tim2, APB1R1 , u32 , timclk1 ) ,
285
+ TIM6 : ( tim6, free_running_tim6, APB1R1 , u16 , timclk1 ) ,
286
+ //TIM7: (tim7, free_running_tim7, APB1R1, u16, timclk1 ),
287
+ TIM15 : ( tim15, free_running_tim15, APB2 , u16 , timclk2 ) ,
288
+ TIM16 : ( tim16, free_running_tim16, APB2 , u16 , timclk2 ) ,
285
289
}
286
290
287
291
#[ cfg( any(
@@ -305,7 +309,7 @@ hal! {
305
309
// feature = "stm32l4s9",
306
310
) ) ]
307
311
hal ! {
308
- TIM3 : ( tim3, free_running_tim3, APB1R1 , u16 ) ,
312
+ TIM3 : ( tim3, free_running_tim3, APB1R1 , u16 , timclk1 ) ,
309
313
}
310
314
311
315
#[ cfg( not( any(
@@ -316,7 +320,7 @@ hal! {
316
320
feature = "stm32l462" ,
317
321
) ) ) ]
318
322
hal ! {
319
- TIM7 : ( tim7, free_running_tim7, APB1R1 , u16 ) ,
323
+ TIM7 : ( tim7, free_running_tim7, APB1R1 , u16 , timclk1 ) ,
320
324
}
321
325
322
326
#[ cfg( any(
@@ -336,7 +340,7 @@ hal! {
336
340
// feature = "stm32l4s9",
337
341
) ) ]
338
342
hal ! {
339
- TIM4 : ( tim4, free_running_tim4, APB1R1 , u16 ) ,
340
- TIM5 : ( tim5, free_running_tim5, APB1R1 , u32 ) ,
341
- TIM17 : ( tim17, free_running_tim17, APB2 , u16 ) ,
343
+ TIM4 : ( tim4, free_running_tim4, APB1R1 , u16 , timclk1 ) ,
344
+ TIM5 : ( tim5, free_running_tim5, APB1R1 , u32 , timclk1 ) ,
345
+ TIM17 : ( tim17, free_running_tim17, APB2 , u16 , timclk2 ) ,
342
346
}
0 commit comments