Skip to content

Commit 4291f96

Browse files
committed
Add options for dac triggers
1 parent ce1da43 commit 4291f96

File tree

4 files changed

+328
-49
lines changed

4 files changed

+328
-49
lines changed

src/compare_register.rs

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,30 @@ use core::marker::PhantomData;
22

33
#[cfg(feature = "hrtim_v2")]
44
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+
};
69

710
pub trait HrCompareRegister {
811
fn get_duty(&self) -> u16;
912
fn set_duty(&mut self, duty: u16);
1013
}
1114

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+
);
1629

1730
#[cfg(feature = "stm32g4")]
1831
use super::adc_trigger::{
@@ -25,19 +38,19 @@ macro_rules! hrtim_cr_helper {
2538
$cmpXYr:ident,
2639
[$(($Trigger:ty: $trigger_bits:expr)),*],
2740
[$(($event_dst:ident, $tim_event_index:expr)),*],
28-
$bit_index:literal
41+
[$bit_index:literal]
2942
) => {
3043
// 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)),*], []);
3245
};
3346

3447
($TIMX:ident: $cr_type:ident:
3548
$cmpXYr:ident,
3649
[$(($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)*]
3952
) => {
40-
impl<PSCL> HrCompareRegister for $cr_type<$TIMX, PSCL> {
53+
impl<PSCL, S: DacStepTrigger> HrCompareRegister for $cr_type<$TIMX, PSCL, S> {
4154
fn get_duty(&self) -> u16 {
4255
let tim = unsafe { &*$TIMX::ptr() };
4356

@@ -79,10 +92,10 @@ macro_rules! hrtim_cr {
7992
[$(($cr3_trigger:ident: $cr3_trigger_bits:expr)),*], [$(($cr3_event_dst:ident, $cr3_tim_event_index:expr)),*],
8093
[$(($cr4_trigger:ident: $cr4_trigger_bits:expr)),*], [$(($cr4_event_dst:ident, $cr4_tim_event_index:expr)),*]
8194
]),+) => {$(
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]);
8699
)+};
87100
}
88101

0 commit comments

Comments
 (0)