aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embassy-stm32/src/dac/mod.rs146
-rw-r--r--embassy-stm32/src/dac/tsel.rs282
-rw-r--r--examples/stm32h7/src/bin/dac_dma.rs4
-rw-r--r--examples/stm32l4/src/bin/dac_dma.rs4
4 files changed, 313 insertions, 123 deletions
diff --git a/embassy-stm32/src/dac/mod.rs b/embassy-stm32/src/dac/mod.rs
index b87d6e490..6d51c1e90 100644
--- a/embassy-stm32/src/dac/mod.rs
+++ b/embassy-stm32/src/dac/mod.rs
@@ -10,6 +10,9 @@ use crate::pac::dac;
10use crate::rcc::RccPeripheral; 10use crate::rcc::RccPeripheral;
11use crate::{peripherals, Peripheral}; 11use crate::{peripherals, Peripheral};
12 12
13mod tsel;
14pub use tsel::TriggerSel;
15
13#[cfg(any(dac_v3, dac_v4, dac_v5, dac_v6, dac_v7))] 16#[cfg(any(dac_v3, dac_v4, dac_v5, dac_v6, dac_v7))]
14#[derive(Debug, Copy, Clone, Eq, PartialEq)] 17#[derive(Debug, Copy, Clone, Eq, PartialEq)]
15#[cfg_attr(feature = "defmt", derive(defmt::Format))] 18#[cfg_attr(feature = "defmt", derive(defmt::Format))]
@@ -51,7 +54,6 @@ impl Mode {
51 } 54 }
52} 55}
53 56
54
55#[derive(Debug, Copy, Clone, Eq, PartialEq)] 57#[derive(Debug, Copy, Clone, Eq, PartialEq)]
56#[cfg_attr(feature = "defmt", derive(defmt::Format))] 58#[cfg_attr(feature = "defmt", derive(defmt::Format))]
57/// Custom Errors 59/// Custom Errors
@@ -79,100 +81,6 @@ impl Channel {
79 81
80#[derive(Debug, Copy, Clone, Eq, PartialEq)] 82#[derive(Debug, Copy, Clone, Eq, PartialEq)]
81#[cfg_attr(feature = "defmt", derive(defmt::Format))] 83#[cfg_attr(feature = "defmt", derive(defmt::Format))]
82/// Trigger sources for CH1
83pub enum Ch1Trigger {
84 #[cfg(dac_v3)]
85 Tim1,
86 Tim2,
87 #[cfg(not(dac_v3))]
88 Tim3,
89 #[cfg(dac_v3)]
90 Tim4,
91 #[cfg(dac_v3)]
92 Tim5,
93 Tim6,
94 Tim7,
95 #[cfg(dac_v3)]
96 Tim8,
97 Tim15,
98 #[cfg(dac_v3)]
99 Hrtim1Dactrg1,
100 #[cfg(dac_v3)]
101 Hrtim1Dactrg2,
102 #[cfg(dac_v3)]
103 Lptim1,
104 #[cfg(dac_v3)]
105 Lptim2,
106 #[cfg(dac_v3)]
107 Lptim3,
108 Exti9,
109 Software,
110}
111
112impl Ch1Trigger {
113 fn tsel(&self) -> dac::vals::Tsel1 {
114 match self {
115 #[cfg(dac_v3)]
116 Ch1Trigger::Tim1 => dac::vals::Tsel1::TIM1_TRGO,
117 Ch1Trigger::Tim2 => dac::vals::Tsel1::TIM2_TRGO,
118 #[cfg(not(dac_v3))]
119 Ch1Trigger::Tim3 => dac::vals::Tsel1::TIM3_TRGO,
120 #[cfg(dac_v3)]
121 Ch1Trigger::Tim4 => dac::vals::Tsel1::TIM4_TRGO,
122 #[cfg(dac_v3)]
123 Ch1Trigger::Tim5 => dac::vals::Tsel1::TIM5_TRGO,
124 Ch1Trigger::Tim6 => dac::vals::Tsel1::TIM6_TRGO,
125 Ch1Trigger::Tim7 => dac::vals::Tsel1::TIM7_TRGO,
126 #[cfg(dac_v3)]
127 Ch1Trigger::Tim8 => dac::vals::Tsel1::TIM8_TRGO,
128 Ch1Trigger::Tim15 => dac::vals::Tsel1::TIM15_TRGO,
129 #[cfg(dac_v3)]
130 Ch1Trigger::Hrtim1Dactrg1 => dac::vals::Tsel1::HRTIM1_DACTRG1,
131 #[cfg(dac_v3)]
132 Ch1Trigger::Hrtim1Dactrg2 => dac::vals::Tsel1::HRTIM1_DACTRG2,
133 #[cfg(dac_v3)]
134 Ch1Trigger::Lptim1 => dac::vals::Tsel1::LPTIM1_OUT,
135 #[cfg(dac_v3)]
136 Ch1Trigger::Lptim2 => dac::vals::Tsel1::LPTIM2_OUT,
137 #[cfg(dac_v3)]
138 Ch1Trigger::Lptim3 => dac::vals::Tsel1::LPTIM3_OUT,
139 Ch1Trigger::Exti9 => dac::vals::Tsel1::EXTI9,
140 Ch1Trigger::Software => dac::vals::Tsel1::SOFTWARE,
141 }
142 }
143}
144
145#[derive(Debug, Copy, Clone, Eq, PartialEq)]
146#[cfg_attr(feature = "defmt", derive(defmt::Format))]
147/// Trigger sources for CH2
148pub enum Ch2Trigger {
149 Tim6,
150 Tim8,
151 Tim7,
152 Tim5,
153 Tim2,
154 Tim4,
155 Exti9,
156 Software,
157}
158
159impl Ch2Trigger {
160 fn tsel(&self) -> dac::vals::Tsel2 {
161 match self {
162 Ch2Trigger::Tim6 => dac::vals::Tsel2::TIM6_TRGO,
163 Ch2Trigger::Tim8 => dac::vals::Tsel2::TIM8_TRGO,
164 Ch2Trigger::Tim7 => dac::vals::Tsel2::TIM7_TRGO,
165 Ch2Trigger::Tim5 => dac::vals::Tsel2::TIM5_TRGO,
166 Ch2Trigger::Tim2 => dac::vals::Tsel2::TIM2_TRGO,
167 Ch2Trigger::Tim4 => dac::vals::Tsel2::TIM4_TRGO,
168 Ch2Trigger::Exti9 => dac::vals::Tsel2::EXTI9,
169 Ch2Trigger::Software => dac::vals::Tsel2::SOFTWARE,
170 }
171 }
172}
173
174#[derive(Debug, Copy, Clone, Eq, PartialEq)]
175#[cfg_attr(feature = "defmt", derive(defmt::Format))]
176/// Single 8 or 12 bit value that can be output by the DAC 84/// Single 8 or 12 bit value that can be output by the DAC
177pub enum Value { 85pub enum Value {
178 // 8 bit value 86 // 8 bit value
@@ -315,10 +223,10 @@ impl<'d, T: Instance, Tx> DacCh1<'d, T, Tx> {
315 /// Select a new trigger for this channel 223 /// Select a new trigger for this channel
316 /// 224 ///
317 /// **Important**: This disables the channel! 225 /// **Important**: This disables the channel!
318 pub fn select_trigger(&mut self, trigger: Ch1Trigger) -> Result<(), Error> { 226 pub fn select_trigger(&mut self, trigger: TriggerSel) -> Result<(), Error> {
319 unwrap!(self.disable_channel()); 227 unwrap!(self.disable_channel());
320 T::regs().cr().modify(|reg| { 228 T::regs().cr().modify(|reg| {
321 reg.set_tsel1(trigger.tsel()); 229 reg.set_tsel(0, trigger.tsel());
322 }); 230 });
323 Ok(()) 231 Ok(())
324 } 232 }
@@ -426,10 +334,10 @@ impl<'d, T: Instance, Tx> DacCh2<'d, T, Tx> {
426 } 334 }
427 335
428 /// Select a new trigger for this channel 336 /// Select a new trigger for this channel
429 pub fn select_trigger(&mut self, trigger: Ch2Trigger) -> Result<(), Error> { 337 pub fn select_trigger(&mut self, trigger: TriggerSel) -> Result<(), Error> {
430 unwrap!(self.disable_channel()); 338 unwrap!(self.disable_channel());
431 T::regs().cr().modify(|reg| { 339 T::regs().cr().modify(|reg| {
432 reg.set_tsel2(trigger.tsel()); 340 reg.set_tsel(1, trigger.tsel());
433 }); 341 });
434 Ok(()) 342 Ok(())
435 } 343 }
@@ -603,26 +511,26 @@ pub trait DacPin<T: Instance, const C: u8>: crate::gpio::Pin + 'static {}
603 511
604foreach_peripheral!( 512foreach_peripheral!(
605 (dac, $inst:ident) => { 513 (dac, $inst:ident) => {
606 // H7 uses single bit for both DAC1 and DAC2, this is a hack until a proper fix is implemented 514 // H7 uses single bit for both DAC1 and DAC2, this is a hack until a proper fix is implemented
607 #[cfg(any(rcc_h7, rcc_h7rm0433))] 515 #[cfg(any(rcc_h7, rcc_h7rm0433))]
608 impl crate::rcc::sealed::RccPeripheral for peripherals::$inst { 516 impl crate::rcc::sealed::RccPeripheral for peripherals::$inst {
609 fn frequency() -> crate::time::Hertz { 517 fn frequency() -> crate::time::Hertz {
610 critical_section::with(|_| unsafe { crate::rcc::get_freqs().pclk1 }) 518 critical_section::with(|_| unsafe { crate::rcc::get_freqs().pclk1 })
611 } 519 }
612 520
613 fn enable_and_reset_with_cs(_cs: critical_section::CriticalSection) { 521 fn enable_and_reset_with_cs(_cs: critical_section::CriticalSection) {
614 crate::pac::RCC.apb1lrstr().modify(|w| w.set_dac12rst(true)); 522 crate::pac::RCC.apb1lrstr().modify(|w| w.set_dac12rst(true));
615 crate::pac::RCC.apb1lrstr().modify(|w| w.set_dac12rst(false)); 523 crate::pac::RCC.apb1lrstr().modify(|w| w.set_dac12rst(false));
616 crate::pac::RCC.apb1lenr().modify(|w| w.set_dac12en(true)); 524 crate::pac::RCC.apb1lenr().modify(|w| w.set_dac12en(true));
617 } 525 }
618 526
619 fn disable_with_cs(_cs: critical_section::CriticalSection) { 527 fn disable_with_cs(_cs: critical_section::CriticalSection) {
620 crate::pac::RCC.apb1lenr().modify(|w| w.set_dac12en(false)) 528 crate::pac::RCC.apb1lenr().modify(|w| w.set_dac12en(false))
621 } 529 }
622 } 530 }
623 531
624 #[cfg(any(rcc_h7, rcc_h7rm0433))] 532 #[cfg(any(rcc_h7, rcc_h7rm0433))]
625 impl crate::rcc::RccPeripheral for peripherals::$inst {} 533 impl crate::rcc::RccPeripheral for peripherals::$inst {}
626 534
627 impl crate::dac::sealed::Instance for peripherals::$inst { 535 impl crate::dac::sealed::Instance for peripherals::$inst {
628 fn regs() -> &'static crate::pac::dac::Dac { 536 fn regs() -> &'static crate::pac::dac::Dac {
diff --git a/embassy-stm32/src/dac/tsel.rs b/embassy-stm32/src/dac/tsel.rs
new file mode 100644
index 000000000..f38dd8fd7
--- /dev/null
+++ b/embassy-stm32/src/dac/tsel.rs
@@ -0,0 +1,282 @@
1/// Trigger selection for STM32F0.
2#[cfg(stm32f0)]
3#[derive(Debug, Copy, Clone, Eq, PartialEq)]
4#[cfg_attr(feature = "defmt", derive(defmt::Format))]
5pub enum TriggerSel {
6 Tim6 = 0,
7 Tim3 = 1,
8 Tim7 = 2,
9 Tim15 = 3,
10 Tim2 = 4,
11 Exti9 = 6,
12 Software = 7,
13}
14
15/// Trigger selection for STM32F1.
16#[cfg(stm32f1)]
17#[derive(Debug, Copy, Clone, Eq, PartialEq)]
18#[cfg_attr(feature = "defmt", derive(defmt::Format))]
19pub enum TriggerSel {
20 Tim6 = 0,
21 #[cfg(any(stm32f100, stm32f105, stm32f107))]
22 Tim3 = 1,
23 #[cfg(any(stm32f101, stm32f103))]
24 Tim8 = 1,
25 Tim7 = 2,
26 #[cfg(any(stm32f101, stm32f103, stm32f105, stm32f107))]
27 Tim5 = 3,
28 #[cfg(all(stm32f100, any(flashsize_4, flashsize_6, flashsize_8, flashsize_b)))]
29 Tim15 = 3,
30 #[cfg(all(stm32f100, any(flashsize_c, flashsize_d, flashsize_e)))]
31 /// Can be remapped to TIM15 with MISC_REMAP in AFIO_MAPR2.
32 Tim5Or15 = 3,
33 Tim2 = 4,
34 Tim4 = 5,
35 Exti9 = 6,
36 Software = 7,
37}
38
39/// Trigger selection for STM32F2/F4/F7/L4, except F410 or L4+.
40#[cfg(all(any(stm32f2, stm32f4, stm32f7, stm32l4_nonplus), not(stm32f410)))]
41#[derive(Debug, Copy, Clone, Eq, PartialEq)]
42#[cfg_attr(feature = "defmt", derive(defmt::Format))]
43pub enum TriggerSel {
44 Tim6 = 0,
45 Tim8 = 1,
46 #[cfg(not(any(stm32l45x, stm32l46x)))]
47 Tim7 = 2,
48 Tim5 = 3,
49 Tim2 = 4,
50 Tim4 = 5,
51 Exti9 = 6,
52 Software = 7,
53}
54
55/// Trigger selection for STM32F410.
56#[cfg(stm32f410)]
57#[derive(Debug, Copy, Clone, Eq, PartialEq)]
58#[cfg_attr(feature = "defmt", derive(defmt::Format))]
59pub enum TriggerSel {
60 Tim5 = 3,
61 Exti9 = 6,
62 Software = 7,
63}
64
65/// Trigger selection for STM32F301/2 and 318.
66#[cfg(any(stm32f301, stm32f302, stm32f318))]
67#[derive(Debug, Copy, Clone, Eq, PartialEq)]
68#[cfg_attr(feature = "defmt", derive(defmt::Format))]
69pub enum TriggerSel {
70 Tim6 = 0,
71 #[cfg(stm32f302)]
72 /// Requires DAC_TRIG_RMP set in SYSCFG_CFGR1.
73 Tim3 = 1,
74 Tim15 = 3,
75 Tim2 = 4,
76 #[cfg(all(stm32f302, any(flashsize_6, flashsize_8)))]
77 Tim4 = 5,
78 Exti9 = 6,
79 Software = 7,
80}
81
82/// Trigger selection for STM32F303/3x8 (excluding 318 which is like 301, and 378 which is 37x).
83#[cfg(any(stm32f303, stm32f328, stm32f358, stm32f398))]
84#[derive(Debug, Copy, Clone, Eq, PartialEq)]
85#[cfg_attr(feature = "defmt", derive(defmt::Format))]
86pub enum TriggerSel {
87 Tim6 = 0,
88 /// * DAC1: defaults to TIM8 but can be remapped to TIM3 with DAC_TRIG_RMP in SYSCFG_CFGR1
89 /// * DAC2: always TIM3
90 Tim8Or3 = 1,
91 Tim7 = 2,
92 Tim15 = 3,
93 Tim2 = 4,
94 Tim4 = 5,
95 Exti9 = 6,
96 Software = 7,
97}
98
99/// Trigger selection for STM32F37x.
100#[cfg(any(stm32f373, stm32f378))]
101#[derive(Debug, Copy, Clone, Eq, PartialEq)]
102#[cfg_attr(feature = "defmt", derive(defmt::Format))]
103pub enum TriggerSel {
104 Tim6 = 0,
105 Tim3 = 1,
106 Tim7 = 2,
107 /// TIM5 on DAC1, TIM18 on DAC2
108 Dac1Tim5Dac2Tim18 = 3,
109 Tim2 = 4,
110 Tim4 = 5,
111 Exti9 = 6,
112 Software = 7,
113}
114
115/// Trigger selection for STM32F334.
116#[cfg(stm32f334)]
117#[derive(Debug, Copy, Clone, Eq, PartialEq)]
118#[cfg_attr(feature = "defmt", derive(defmt::Format))]
119pub enum TriggerSel {
120 Tim6 = 0,
121 /// Requires DAC_TRIG_RMP set in SYSCFG_CFGR1.
122 Tim3 = 1,
123 Tim7 = 2,
124 /// Can be remapped to HRTIM_DACTRG1 using DAC1_TRIG3_RMP in SYSCFG_CFGR3.
125 Tim15OrHrtimDacTrg1 = 3,
126 Tim2 = 4,
127 /// Requires DAC_TRIG5_RMP set in SYSCFG_CFGR3.
128 HrtimDacTrg2 = 5,
129}
130
131/// Trigger selection for STM32L0.
132#[cfg(stm32l0)]
133#[derive(Debug, Copy, Clone, Eq, PartialEq)]
134#[cfg_attr(feature = "defmt", derive(defmt::Format))]
135pub enum TriggerSel {
136 Tim6 = 0,
137 Tim3 = 1,
138 Tim3Ch3 = 2,
139 Tim21 = 3,
140 Tim2 = 4,
141 Tim7 = 5,
142 Exti9 = 6,
143 Software = 7,
144}
145
146/// Trigger selection for STM32L1.
147#[cfg(stm32l1)]
148#[derive(Debug, Copy, Clone, Eq, PartialEq)]
149#[cfg_attr(feature = "defmt", derive(defmt::Format))]
150pub enum TriggerSel {
151 Tim6 = 0,
152 Tim7 = 2,
153 Tim9 = 3,
154 Tim2 = 4,
155 Tim4 = 5,
156 Exti9 = 6,
157 Software = 7,
158}
159
160/// Trigger selection for L4+, L5, U5, H7.
161#[cfg(any(stm32l4_plus, stm32l5, stm32u5, stm32h7))]
162#[derive(Debug, Copy, Clone, Eq, PartialEq)]
163#[cfg_attr(feature = "defmt", derive(defmt::Format))]
164pub enum TriggerSel {
165 Software = 0,
166 Tim1 = 1,
167 Tim2 = 2,
168 Tim4 = 3,
169 Tim5 = 4,
170 Tim6 = 5,
171 Tim7 = 6,
172 Tim8 = 7,
173 Tim15 = 8,
174 #[cfg(all(stm32h7, hrtim))]
175 Hrtim1DacTrg1 = 9,
176 #[cfg(all(stm32h7, hrtim))]
177 Hrtim1DacTrg2 = 10,
178 Lptim1 = 11,
179 #[cfg(not(stm32u5))]
180 Lptim2 = 12,
181 #[cfg(stm32u5)]
182 Lptim3 = 12,
183 Exti9 = 13,
184 #[cfg(any(stm32h7ax, stm32h7bx))]
185 /// RM0455 suggests this might be LPTIM2 on DAC1 and LPTIM3 on DAC2,
186 /// but it's probably wrong. Please let us know if you find out.
187 Lptim3 = 14,
188 #[cfg(any(stm32h72x, stm32h73x))]
189 Tim23 = 14,
190 #[cfg(any(stm32h72x, stm32h73x))]
191 Tim24 = 15,
192}
193
194/// Trigger selection for H5.
195#[cfg(stm32h5)]
196#[derive(Debug, Copy, Clone, Eq, PartialEq)]
197#[cfg_attr(feature = "defmt", derive(defmt::Format))]
198pub enum TriggerSel {
199 Software = 0,
200 Tim1 = 1,
201 Tim2 = 2,
202 #[cfg(any(stm32h56x, stm32h57x))]
203 Tim4 = 3,
204 #[cfg(stm32h503)]
205 Tim3 = 3,
206 #[cfg(any(stm32h56x, stm32h57x))]
207 Tim5 = 4,
208 Tim6 = 5,
209 Tim7 = 6,
210 #[cfg(any(stm32h56x, stm32h57x))]
211 Tim8 = 7,
212 #[cfg(any(stm32h56x, stm32h57x))]
213 Tim15 = 8,
214 Lptim1 = 11,
215 Lptim2 = 12,
216 Exti9 = 13,
217}
218
219/// Trigger selection for G0.
220#[cfg(stm32g0)]
221#[derive(Debug, Copy, Clone, Eq, PartialEq)]
222#[cfg_attr(feature = "defmt", derive(defmt::Format))]
223pub enum TriggerSel {
224 Software = 0,
225 Tim1 = 1,
226 Tim2 = 2,
227 Tim3 = 3,
228 Tim6 = 5,
229 Tim7 = 6,
230 Tim15 = 8,
231 Lptim1 = 11,
232 Lptim2 = 12,
233 Exti9 = 13,
234}
235
236/// Trigger selection for G4.
237#[cfg(stm32g4)]
238#[derive(Debug, Copy, Clone, Eq, PartialEq)]
239#[cfg_attr(feature = "defmt", derive(defmt::Format))]
240pub enum TriggerSel {
241 Software = 0,
242 /// * DAC1, DAC2, DAC4: TIM8
243 /// * DAC3: TIM1
244 Dac124Tim8Dac3Tim1 = 1,
245 Tim7 = 2,
246 Tim15 = 3,
247 Tim2 = 4,
248 Tim4 = 5,
249 Exti9 = 6,
250 Tim6 = 7,
251 Tim3 = 8,
252 HrtimDacRstTrg1 = 9,
253 HrtimDacRstTrg2 = 10,
254 HrtimDacRstTrg3 = 11,
255 HrtimDacRstTrg4 = 12,
256 HrtimDacRstTrg5 = 13,
257 HrtimDacRstTrg6 = 14,
258 /// * DAC1, DAC4: HRTIM_DAC_TRG1
259 /// * DAC2: HRTIM_DAC_TRG2
260 /// * DAC3: HRTIM_DAC_TRG3
261 HrtimDacTrg123 = 15,
262}
263
264/// Trigger selection for WL.
265#[cfg(stm32wl)]
266#[derive(Debug, Copy, Clone, Eq, PartialEq)]
267#[cfg_attr(feature = "defmt", derive(defmt::Format))]
268pub enum TriggerSel {
269 Software = 0,
270 Tim1 = 1,
271 Tim2 = 2,
272 Lptim1 = 11,
273 Lptim2 = 12,
274 Lptim3 = 13,
275 Exti9 = 14,
276}
277
278impl TriggerSel {
279 pub fn tsel(&self) -> u8 {
280 *self as u8
281 }
282}
diff --git a/examples/stm32h7/src/bin/dac_dma.rs b/examples/stm32h7/src/bin/dac_dma.rs
index e141fc484..12783464a 100644
--- a/examples/stm32h7/src/bin/dac_dma.rs
+++ b/examples/stm32h7/src/bin/dac_dma.rs
@@ -77,7 +77,7 @@ async fn dac_task1(mut dac: Dac1Type) {
77 error!("Reload value {} below threshold!", reload); 77 error!("Reload value {} below threshold!", reload);
78 } 78 }
79 79
80 dac.select_trigger(embassy_stm32::dac::Ch1Trigger::Tim6).unwrap(); 80 dac.select_trigger(embassy_stm32::dac::TriggerSel::Tim6).unwrap();
81 dac.enable_channel().unwrap(); 81 dac.enable_channel().unwrap();
82 82
83 TIM6::enable_and_reset(); 83 TIM6::enable_and_reset();
@@ -127,7 +127,7 @@ async fn dac_task2(mut dac: Dac2Type) {
127 w.set_cen(true); 127 w.set_cen(true);
128 }); 128 });
129 129
130 dac.select_trigger(embassy_stm32::dac::Ch2Trigger::Tim7).unwrap(); 130 dac.select_trigger(embassy_stm32::dac::TriggerSel::Tim7).unwrap();
131 131
132 debug!( 132 debug!(
133 "TIM7 Frequency {}, Target Frequency {}, Reload {}, Reload as u16 {}, Samples {}", 133 "TIM7 Frequency {}, Target Frequency {}, Reload {}, Reload as u16 {}, Samples {}",
diff --git a/examples/stm32l4/src/bin/dac_dma.rs b/examples/stm32l4/src/bin/dac_dma.rs
index 98f37f906..c9f0a4cfe 100644
--- a/examples/stm32l4/src/bin/dac_dma.rs
+++ b/examples/stm32l4/src/bin/dac_dma.rs
@@ -48,7 +48,7 @@ async fn dac_task1(mut dac: Dac1Type) {
48 error!("Reload value {} below threshold!", reload); 48 error!("Reload value {} below threshold!", reload);
49 } 49 }
50 50
51 dac.select_trigger(embassy_stm32::dac::Ch1Trigger::Tim6).unwrap(); 51 dac.select_trigger(embassy_stm32::dac::TriggerSel::Tim6).unwrap();
52 dac.enable_channel().unwrap(); 52 dac.enable_channel().unwrap();
53 53
54 TIM6::enable_and_reset(); 54 TIM6::enable_and_reset();
@@ -98,7 +98,7 @@ async fn dac_task2(mut dac: Dac2Type) {
98 w.set_cen(true); 98 w.set_cen(true);
99 }); 99 });
100 100
101 dac.select_trigger(embassy_stm32::dac::Ch2Trigger::Tim7).unwrap(); 101 dac.select_trigger(embassy_stm32::dac::TriggerSel::Tim7).unwrap();
102 102
103 debug!( 103 debug!(
104 "TIM7 Frequency {}, Target Frequency {}, Reload {}, Reload as u16 {}, Samples {}", 104 "TIM7 Frequency {}, Target Frequency {}, Reload {}, Reload as u16 {}, Samples {}",