Skip to content

Commit 7bb9700

Browse files
committed
Remove bitcode in favor of From impl
1 parent 2ef7947 commit 7bb9700

File tree

1 file changed

+48
-30
lines changed

1 file changed

+48
-30
lines changed

src/adc.rs

Lines changed: 48 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,11 @@ use embedded_hal::adc::{Channel, OneShot};
1414

1515
use crate::{
1616
gpio::{self, Analog},
17-
pac::{adc1::cfgr::ALIGN_A, adc1_2::ccr::CKMODE_A, ADC1, ADC1_2, ADC2},
17+
pac::{
18+
adc1::{cfgr::ALIGN_A, smpr1::SMP9_A, smpr2::SMP18_A},
19+
adc1_2::ccr::CKMODE_A,
20+
ADC1, ADC1_2, ADC2,
21+
},
1822
rcc::{Clocks, AHB},
1923
};
2024

@@ -73,18 +77,32 @@ impl Default for SampleTime {
7377
}
7478
}
7579

76-
impl SampleTime {
77-
/// Conversion to bits for SMP
78-
fn bitcode(&self) -> u8 {
79-
match self {
80-
SampleTime::T_1 => 0b000,
81-
SampleTime::T_2 => 0b001,
82-
SampleTime::T_4 => 0b010,
83-
SampleTime::T_7 => 0b011,
84-
SampleTime::T_19 => 0b100,
85-
SampleTime::T_61 => 0b101,
86-
SampleTime::T_181 => 0b110,
87-
SampleTime::T_601 => 0b111,
80+
impl From<SampleTime> for SMP9_A {
81+
fn from(t: SampleTime) -> Self {
82+
match t {
83+
SampleTime::T_1 => Self::CYCLES1_5,
84+
SampleTime::T_2 => Self::CYCLES2_5,
85+
SampleTime::T_4 => Self::CYCLES4_5,
86+
SampleTime::T_7 => Self::CYCLES7_5,
87+
SampleTime::T_19 => Self::CYCLES19_5,
88+
SampleTime::T_61 => Self::CYCLES61_5,
89+
SampleTime::T_181 => Self::CYCLES181_5,
90+
SampleTime::T_601 => Self::CYCLES601_5,
91+
}
92+
}
93+
}
94+
95+
impl From<SampleTime> for SMP18_A {
96+
fn from(t: SampleTime) -> Self {
97+
match t {
98+
SampleTime::T_1 => Self::CYCLES1_5,
99+
SampleTime::T_2 => Self::CYCLES2_5,
100+
SampleTime::T_4 => Self::CYCLES4_5,
101+
SampleTime::T_7 => Self::CYCLES7_5,
102+
SampleTime::T_19 => Self::CYCLES19_5,
103+
SampleTime::T_61 => Self::CYCLES61_5,
104+
SampleTime::T_181 => Self::CYCLES181_5,
105+
SampleTime::T_601 => Self::CYCLES601_5,
88106
}
89107
}
90108
}
@@ -488,23 +506,23 @@ macro_rules! adc_hal {
488506
// TODO: there are boundaries on how this can be set depending on the hardware.
489507
fn set_chan_smps(&self, chan: u8, smp: SampleTime) {
490508
match chan {
491-
1 => self.rb.smpr1.modify(|_, w| w.smp1().bits(smp.bitcode())),
492-
2 => self.rb.smpr1.modify(|_, w| w.smp2().bits(smp.bitcode())),
493-
3 => self.rb.smpr1.modify(|_, w| w.smp3().bits(smp.bitcode())),
494-
4 => self.rb.smpr1.modify(|_, w| w.smp4().bits(smp.bitcode())),
495-
5 => self.rb.smpr1.modify(|_, w| w.smp5().bits(smp.bitcode())),
496-
6 => self.rb.smpr1.modify(|_, w| w.smp6().bits(smp.bitcode())),
497-
7 => self.rb.smpr1.modify(|_, w| w.smp7().bits(smp.bitcode())),
498-
8 => self.rb.smpr1.modify(|_, w| w.smp8().bits(smp.bitcode())),
499-
9 => self.rb.smpr1.modify(|_, w| w.smp9().bits(smp.bitcode())),
500-
11 => self.rb.smpr2.modify(|_, w| w.smp10().bits(smp.bitcode())),
501-
12 => self.rb.smpr2.modify(|_, w| w.smp12().bits(smp.bitcode())),
502-
13 => self.rb.smpr2.modify(|_, w| w.smp13().bits(smp.bitcode())),
503-
14 => self.rb.smpr2.modify(|_, w| w.smp14().bits(smp.bitcode())),
504-
15 => self.rb.smpr2.modify(|_, w| w.smp15().bits(smp.bitcode())),
505-
16 => self.rb.smpr2.modify(|_, w| w.smp16().bits(smp.bitcode())),
506-
17 => self.rb.smpr2.modify(|_, w| w.smp17().bits(smp.bitcode())),
507-
18 => self.rb.smpr2.modify(|_, w| w.smp18().bits(smp.bitcode())),
509+
1 => self.rb.smpr1.modify(|_, w| w.smp1().variant(smp.into())),
510+
2 => self.rb.smpr1.modify(|_, w| w.smp2().variant(smp.into())),
511+
3 => self.rb.smpr1.modify(|_, w| w.smp3().variant(smp.into())),
512+
4 => self.rb.smpr1.modify(|_, w| w.smp4().variant(smp.into())),
513+
5 => self.rb.smpr1.modify(|_, w| w.smp5().variant(smp.into())),
514+
6 => self.rb.smpr1.modify(|_, w| w.smp6().variant(smp.into())),
515+
7 => self.rb.smpr1.modify(|_, w| w.smp7().variant(smp.into())),
516+
8 => self.rb.smpr1.modify(|_, w| w.smp8().variant(smp.into())),
517+
9 => self.rb.smpr1.modify(|_, w| w.smp9().variant(smp.into())),
518+
11 => self.rb.smpr2.modify(|_, w| w.smp10().variant(smp.into())),
519+
12 => self.rb.smpr2.modify(|_, w| w.smp12().variant(smp.into())),
520+
13 => self.rb.smpr2.modify(|_, w| w.smp13().variant(smp.into())),
521+
14 => self.rb.smpr2.modify(|_, w| w.smp14().variant(smp.into())),
522+
15 => self.rb.smpr2.modify(|_, w| w.smp15().variant(smp.into())),
523+
16 => self.rb.smpr2.modify(|_, w| w.smp16().variant(smp.into())),
524+
17 => self.rb.smpr2.modify(|_, w| w.smp17().variant(smp.into())),
525+
18 => self.rb.smpr2.modify(|_, w| w.smp18().variant(smp.into())),
508526
_ => crate::unreachable!(),
509527
};
510528
}

0 commit comments

Comments
 (0)