stm32_hrtim/
adc_trigger.rs1#[cfg(feature = "hrtim_v2")]
2use crate::pac;
3use core::marker::PhantomData;
4
5pub struct TimerReset<T>(pub(crate) PhantomData<T>);
7
8pub struct TimerPeriod<T>(pub(crate) PhantomData<T>);
10
11#[cfg(feature = "hrtim_v2")]
12macro_rules! impl_adc1234_trigger {
13 ($($t:ident: [$trait_:ident, $adcXr:ident]),*) => {$(
14 #[non_exhaustive]
15 pub struct $t;
16
17 impl $t {
18 pub fn enable_source<T: $trait_>(&mut self, _trigger: &T) {
19 let common = unsafe { &*pac::HRTIM_COMMON::ptr() };
20 unsafe {
21 common.$adcXr().modify(|r, w| w.bits(r.bits() | T::BITS));
22 }
23 }
24 }
25 )*}
26}
27
28#[cfg(feature = "hrtim_v2")]
29macro_rules! impl_adc5678910_trigger {
30 ($($t:ident: [$trait_:ident, $adcXtrg:ident]),*) => {$(
31 #[non_exhaustive]
32 pub struct $t;
33
34 impl $t {
35 pub fn enable_source<T: $trait_>(&mut self, _trigger: &T) {
36 let common = unsafe { &*pac::HRTIM_COMMON::ptr() };
37 common
38 .adcer()
39 .modify(|_r, w| unsafe { w.$adcXtrg().bits(T::BITS as u8) });
40 }
41 }
42 )*}
43}
44
45#[cfg(feature = "hrtim_v2")]
46pub trait AdcTrigger13 {
47 const BITS: u32;
48}
49
50#[cfg(feature = "hrtim_v2")]
51pub trait AdcTrigger24 {
52 const BITS: u32;
53}
54
55#[cfg(feature = "hrtim_v2")]
56pub trait AdcTrigger579 {
57 const BITS: u32;
58}
59
60#[cfg(feature = "hrtim_v2")]
61pub trait AdcTrigger6810 {
62 const BITS: u32;
63}
64
65#[cfg(feature = "hrtim_v2")]
66impl_adc1234_trigger! {
67 AdcTrigger1: [AdcTrigger13, adc1r],
68 AdcTrigger2: [AdcTrigger24, adc2r],
69 AdcTrigger3: [AdcTrigger13, adc3r],
70 AdcTrigger4: [AdcTrigger24, adc4r]
71}
72
73#[cfg(feature = "hrtim_v2")]
74impl_adc5678910_trigger! {
75 AdcTrigger5: [AdcTrigger579, adc5trg],
76 AdcTrigger6: [AdcTrigger6810, adc6trg],
77 AdcTrigger7: [AdcTrigger579, adc7trg],
78 AdcTrigger8: [AdcTrigger6810, adc8trg],
79 AdcTrigger9: [AdcTrigger579, adc9trg],
80 AdcTrigger10: [AdcTrigger6810, adc10trg]
81}