@@ -2,17 +2,30 @@ use core::marker::PhantomData;
2
2
3
3
#[ cfg( feature = "hrtim_v2" ) ]
4
4
use crate :: pac:: HRTIM_TIMF ;
5
- use crate :: pac:: { HRTIM_MASTER , HRTIM_TIMA , HRTIM_TIMB , HRTIM_TIMC , HRTIM_TIMD , HRTIM_TIME } ;
5
+ use crate :: {
6
+ pac:: { HRTIM_MASTER , HRTIM_TIMA , HRTIM_TIMB , HRTIM_TIMC , HRTIM_TIMD , HRTIM_TIME } ,
7
+ DacStepTrigger , NoDacTrigger ,
8
+ } ;
6
9
7
10
pub trait HrCompareRegister {
8
11
fn get_duty ( & self ) -> u16 ;
9
12
fn set_duty ( & mut self , duty : u16 ) ;
10
13
}
11
14
12
- pub struct HrCr1 < TIM , PSCL > ( PhantomData < ( TIM , PSCL ) > ) ;
13
- pub struct HrCr2 < TIM , PSCL > ( PhantomData < ( TIM , PSCL ) > ) ;
14
- pub struct HrCr3 < TIM , PSCL > ( PhantomData < ( TIM , PSCL ) > ) ;
15
- pub struct HrCr4 < TIM , PSCL > ( PhantomData < ( TIM , PSCL ) > ) ;
15
+ // TODO: Note that only HrCr2 can actually be used as a dac trigger
16
+
17
+ pub struct HrCr1 < TIM , PSCL , DacStp : DacStepTrigger = NoDacTrigger > (
18
+ PhantomData < ( TIM , PSCL , DacStp ) > ,
19
+ ) ;
20
+ pub struct HrCr2 < TIM , PSCL , DacStp : DacStepTrigger = NoDacTrigger > (
21
+ PhantomData < ( TIM , PSCL , DacStp ) > ,
22
+ ) ;
23
+ pub struct HrCr3 < TIM , PSCL , DacStp : DacStepTrigger = NoDacTrigger > (
24
+ PhantomData < ( TIM , PSCL , DacStp ) > ,
25
+ ) ;
26
+ pub struct HrCr4 < TIM , PSCL , DacStp : DacStepTrigger = NoDacTrigger > (
27
+ PhantomData < ( TIM , PSCL , DacStp ) > ,
28
+ ) ;
16
29
17
30
#[ cfg( feature = "stm32g4" ) ]
18
31
use super :: adc_trigger:: {
@@ -25,19 +38,19 @@ macro_rules! hrtim_cr_helper {
25
38
$cmpXYr: ident,
26
39
[ $( ( $Trigger: ty: $trigger_bits: expr) ) ,* ] ,
27
40
[ $( ( $event_dst: ident, $tim_event_index: expr) ) ,* ] ,
28
- $bit_index: literal
41
+ [ $bit_index: literal]
29
42
) => {
30
43
// Strip bit_index since master timer has other bits that are common across all destinations
31
- hrtim_cr_helper!( HRTIM_MASTER : $cr_type: $cmpXYr, [ $( ( $Trigger: $trigger_bits) ) ,* ] , [ $( ( $event_dst, $tim_event_index) ) ,* ] ) ;
44
+ hrtim_cr_helper!( HRTIM_MASTER : $cr_type: $cmpXYr, [ $( ( $Trigger: $trigger_bits) ) ,* ] , [ $( ( $event_dst, $tim_event_index) ) ,* ] , [ ] ) ;
32
45
} ;
33
46
34
47
( $TIMX: ident: $cr_type: ident:
35
48
$cmpXYr: ident,
36
49
[ $( ( $Trigger: ty: $trigger_bits: expr) ) ,* ] ,
37
- [ $( ( $event_dst: ident, $tim_event_index: expr) ) ,* ]
38
- $ ( , $bit_index: literal) *
50
+ [ $( ( $event_dst: ident, $tim_event_index: expr) ) ,* ] ,
51
+ [ $ ( $bit_index: literal) * ]
39
52
) => {
40
- impl <PSCL > HrCompareRegister for $cr_type<$TIMX, PSCL > {
53
+ impl <PSCL , S : DacStepTrigger > HrCompareRegister for $cr_type<$TIMX, PSCL , S > {
41
54
fn get_duty( & self ) -> u16 {
42
55
let tim = unsafe { & * $TIMX:: ptr( ) } ;
43
56
@@ -79,10 +92,10 @@ macro_rules! hrtim_cr {
79
92
[ $( ( $cr3_trigger: ident: $cr3_trigger_bits: expr) ) ,* ] , [ $( ( $cr3_event_dst: ident, $cr3_tim_event_index: expr) ) ,* ] ,
80
93
[ $( ( $cr4_trigger: ident: $cr4_trigger_bits: expr) ) ,* ] , [ $( ( $cr4_event_dst: ident, $cr4_tim_event_index: expr) ) ,* ]
81
94
] ) ,+) => { $(
82
- hrtim_cr_helper!( $TIMX: HrCr1 : cmp1r, [ $( ( $cr1_trigger: $cr1_trigger_bits) ) ,* ] , [ $( ( $cr1_event_dst, $cr1_tim_event_index) ) ,* ] , 3 ) ;
83
- hrtim_cr_helper!( $TIMX: HrCr2 : cmp2r, [ $( ( $cr2_trigger: $cr2_trigger_bits) ) ,* ] , [ $( ( $cr2_event_dst, $cr2_tim_event_index) ) ,* ] , 4 ) ;
84
- hrtim_cr_helper!( $TIMX: HrCr3 : cmp3r, [ $( ( $cr3_trigger: $cr3_trigger_bits) ) ,* ] , [ $( ( $cr3_event_dst, $cr3_tim_event_index) ) ,* ] , 5 ) ;
85
- hrtim_cr_helper!( $TIMX: HrCr4 : cmp4r, [ $( ( $cr4_trigger: $cr4_trigger_bits) ) ,* ] , [ $( ( $cr4_event_dst, $cr4_tim_event_index) ) ,* ] , 6 ) ;
95
+ hrtim_cr_helper!( $TIMX: HrCr1 : cmp1r, [ $( ( $cr1_trigger: $cr1_trigger_bits) ) ,* ] , [ $( ( $cr1_event_dst, $cr1_tim_event_index) ) ,* ] , [ 3 ] ) ;
96
+ hrtim_cr_helper!( $TIMX: HrCr2 : cmp2r, [ $( ( $cr2_trigger: $cr2_trigger_bits) ) ,* ] , [ $( ( $cr2_event_dst, $cr2_tim_event_index) ) ,* ] , [ 4 ] ) ;
97
+ hrtim_cr_helper!( $TIMX: HrCr3 : cmp3r, [ $( ( $cr3_trigger: $cr3_trigger_bits) ) ,* ] , [ $( ( $cr3_event_dst, $cr3_tim_event_index) ) ,* ] , [ 5 ] ) ;
98
+ hrtim_cr_helper!( $TIMX: HrCr4 : cmp4r, [ $( ( $cr4_trigger: $cr4_trigger_bits) ) ,* ] , [ $( ( $cr4_event_dst, $cr4_tim_event_index) ) ,* ] , [ 6 ] ) ;
86
99
) +} ;
87
100
}
88
101
0 commit comments