@@ -14,8 +14,14 @@ pub struct HrCr2<TIM, PSCL>(PhantomData<(TIM, PSCL)>);
14
14
pub struct HrCr3 < TIM , PSCL > ( PhantomData < ( TIM , PSCL ) > ) ;
15
15
pub struct HrCr4 < TIM , PSCL > ( PhantomData < ( TIM , PSCL ) > ) ;
16
16
17
+
18
+ use super :: adc_trigger:: Adc13Trigger as Adc13 ;
19
+ use super :: adc_trigger:: Adc24Trigger as Adc24 ;
20
+ use super :: adc_trigger:: Adc579Trigger as Adc579 ;
21
+ use super :: adc_trigger:: Adc6810Trigger as Adc6810 ;
22
+
17
23
macro_rules! hrtim_cr_helper {
18
- ( $TIMX: ident: $cr_type: ident: $cmpXYr: ident, $cmpYx: ident) => {
24
+ ( $TIMX: ident: $cr_type: ident: $cmpXYr: ident, $cmpYx: ident, $ ( ( $Trigger : ty : $trigger_bits : expr ) ) , * ) => {
19
25
impl <PSCL > HrCompareRegister for $cr_type<$TIMX, PSCL > {
20
26
fn get_duty( & self ) -> u16 {
21
27
let tim = unsafe { & * $TIMX:: ptr( ) } ;
@@ -28,28 +34,75 @@ macro_rules! hrtim_cr_helper {
28
34
tim. $cmpXYr. write( |w| unsafe { w. $cmpYx( ) . bits( duty) } ) ;
29
35
}
30
36
}
37
+
38
+ $( impl <PSCL > $Trigger for $cr_type<$TIMX, PSCL > {
39
+ const BITS : u32 = $trigger_bits;
40
+ } ) *
31
41
} ;
32
42
}
33
43
44
+
34
45
macro_rules! hrtim_cr {
35
46
( $( $TIMX: ident: [
36
- $cmpX1r: ident, $cmpX2r: ident, $cmpX3r: ident, $cmpX4r: ident,
37
- $cmp1x: ident, $cmp2x: ident, $cmp3x: ident, $cmp4x: ident
38
- ] , ) +) => { $(
39
- hrtim_cr_helper!( $TIMX: HrCr1 : $cmpX1r, $cmp1x) ;
40
- hrtim_cr_helper!( $TIMX: HrCr2 : $cmpX2r, $cmp2x) ;
41
- hrtim_cr_helper!( $TIMX: HrCr3 : $cmpX3r, $cmp3x) ;
42
- hrtim_cr_helper!( $TIMX: HrCr4 : $cmpX4r, $cmp4x) ;
47
+ [ $cmpX1r: ident, $cmp1x: ident, $( ( $cr1_trigger: ident: $cr1_trigger_bits: expr) ) ,* ] ,
48
+ [ $cmpX2r: ident, $cmp2x: ident, $( ( $cr2_trigger: ident: $cr2_trigger_bits: expr) ) ,* ] ,
49
+ [ $cmpX3r: ident, $cmp3x: ident, $( ( $cr3_trigger: ident: $cr3_trigger_bits: expr) ) ,* ] ,
50
+ [ $cmpX4r: ident, $cmp4x: ident, $( ( $cr4_trigger: ident: $cr4_trigger_bits: expr) ) ,* ]
51
+ ] ) ,+) => { $(
52
+ hrtim_cr_helper!( $TIMX: HrCr1 : $cmpX1r, $cmp1x, $( ( $cr1_trigger: $cr1_trigger_bits) ) ,* ) ;
53
+ hrtim_cr_helper!( $TIMX: HrCr2 : $cmpX2r, $cmp2x, $( ( $cr2_trigger: $cr2_trigger_bits) ) ,* ) ;
54
+ hrtim_cr_helper!( $TIMX: HrCr3 : $cmpX3r, $cmp3x, $( ( $cr3_trigger: $cr3_trigger_bits) ) ,* ) ;
55
+ hrtim_cr_helper!( $TIMX: HrCr4 : $cmpX4r, $cmp4x, $( ( $cr4_trigger: $cr4_trigger_bits) ) ,* ) ;
43
56
) +} ;
44
57
}
45
58
46
59
hrtim_cr ! {
47
- HRTIM_MASTER : [ mcmp1r, mcmp2r, mcmp3r, mcmp4r, mcmp1, mcmp2, mcmp3, mcmp4] ,
48
-
49
- HRTIM_TIMA : [ cmp1ar, cmp2ar, cmp3ar, cmp4ar, cmp1x, cmp2x, cmp3x, cmp4x] ,
50
- HRTIM_TIMB : [ cmp1br, cmp2br, cmp3br, cmp4br, cmp1x, cmp2x, cmp3x, cmp4x] ,
51
- HRTIM_TIMC : [ cmp1cr, cmp2cr, cmp3cr, cmp4cr, cmp1x, cmp2x, cmp3x, cmp4x] ,
52
- HRTIM_TIMD : [ cmp1dr, cmp2dr, cmp3dr, cmp4dr, cmp1x, cmp2x, cmp3x, cmp4x] ,
53
- HRTIM_TIME : [ cmp1er, cmp2er, cmp3er, cmp4er, cmp1x, cmp2x, cmp3x, cmp4x] ,
54
- HRTIM_TIMF : [ cmp1fr, cmp2fr, cmp3fr, cmp4fr, cmp1x, cmp2x, cmp3x, cmp4x] ,
60
+ HRTIM_MASTER : [
61
+ [ mcmp1r, mcmp1, ( Adc13 : 1 << 0 ) , ( Adc24 : 1 << 0 ) , ( Adc579 : 0 ) , ( Adc6810 : 0 ) ] ,
62
+ [ mcmp2r, mcmp2, ( Adc13 : 1 << 1 ) , ( Adc24 : 1 << 1 ) , ( Adc579 : 1 ) , ( Adc6810 : 1 ) ] ,
63
+ [ mcmp3r, mcmp3, ( Adc13 : 1 << 2 ) , ( Adc24 : 1 << 2 ) , ( Adc579 : 2 ) , ( Adc6810 : 2 ) ] ,
64
+ [ mcmp4r, mcmp4, ( Adc13 : 1 << 3 ) , ( Adc24 : 1 << 3 ) , ( Adc579 : 3 ) , ( Adc6810 : 3 ) ]
65
+ ] ,
66
+
67
+ HRTIM_TIMA : [
68
+ [ cmp1ar, cmp1x, ] ,
69
+ [ cmp2ar, cmp2x, ( Adc24 : 1 << 10 ) , ( Adc6810 : 10 ) ] ,
70
+ [ cmp3ar, cmp3x, ( Adc13 : 1 << 11 ) , ( Adc579 : 10 ) ] ,
71
+ [ cmp4ar, cmp4x, ( Adc13 : 1 << 12 ) , ( Adc24 : 1 << 12 ) , ( Adc579 : 11 ) , ( Adc6810 : 11 ) ]
72
+ ] ,
73
+
74
+ HRTIM_TIMB : [
75
+ [ cmp1br, cmp1x, ] ,
76
+ [ cmp2br, cmp2x, ( Adc24 : 1 << 14 ) , ( Adc6810 : 13 ) ] ,
77
+ [ cmp3br, cmp3x, ( Adc13 : 1 << 16 ) , ( Adc579 : 14 ) ] ,
78
+ [ cmp4br, cmp4x, ( Adc13 : 1 << 17 ) , ( Adc24 : 1 << 16 ) , ( Adc579 : 15 ) , ( Adc6810 : 14 ) ]
79
+ ] ,
80
+
81
+ HRTIM_TIMC : [
82
+ [ cmp1cr, cmp1x, ] ,
83
+ [ cmp2cr, cmp2x, ( Adc24 : 1 << 18 ) , ( Adc6810 : 16 ) ] ,
84
+ [ cmp3cr, cmp3x, ( Adc13 : 1 << 21 ) , ( Adc579 : 18 ) ] ,
85
+ [ cmp4cr, cmp4x, ( Adc13 : 1 << 22 ) , ( Adc24 : 1 << 20 ) , ( Adc579 : 19 ) , ( Adc6810 : 17 ) ]
86
+ ] ,
87
+
88
+ HRTIM_TIMD : [
89
+ [ cmp1dr, cmp1x, ] ,
90
+ [ cmp2dr, cmp2x, ( Adc24 : 1 << 23 ) , ( Adc6810 : 20 ) ] ,
91
+ [ cmp3dr, cmp3x, ( Adc13 : 1 << 25 ) , ( Adc579 : 21 ) ] ,
92
+ [ cmp4dr, cmp4x, ( Adc13 : 1 << 26 ) , ( Adc24 : 1 << 25 ) , ( Adc579 : 22 ) , ( Adc6810 : 21 ) ]
93
+ ] ,
94
+
95
+ HRTIM_TIME : [
96
+ [ cmp1er, cmp1x, ] ,
97
+ [ cmp2er, cmp2x, ( Adc24 : 1 << 28 ) , ( Adc6810 : 24 ) ] ,
98
+ [ cmp3er, cmp3x, ( Adc13 : 1 << 29 ) , ( Adc24 : 1 << 29 ) , ( Adc579 : 24 ) , ( Adc6810 : 25 ) ] ,
99
+ [ cmp4er, cmp4x, ( Adc13 : 1 << 30 ) , ( Adc24 : 1 << 30 ) , ( Adc579 : 25 ) , ( Adc6810 : 26 ) ]
100
+ ] ,
101
+
102
+ HRTIM_TIMF : [
103
+ [ cmp1fr, cmp1x, ( Adc24 : 1 << 15 ) ] ,
104
+ [ cmp2fr, cmp2x, ( Adc13 : 1 << 10 ) , ( Adc24 : 1 << 11 ) , ( Adc579 : 27 ) , ( Adc6810 : 28 ) ] ,
105
+ [ cmp3fr, cmp3x, ( Adc13 : 1 << 15 ) , ( Adc579 : 28 ) , ( Adc6810 : 29 ) ] ,
106
+ [ cmp4fr, cmp4x, ( Adc13 : 1 << 20 ) , ( Adc24 : 1 << 19 ) , ( Adc579 : 29 ) , ( Adc6810 : 30 ) ]
107
+ ]
55
108
}
0 commit comments