diff options
| author | Grant Miller <[email protected]> | 2022-10-26 02:28:39 -0500 |
|---|---|---|
| committer | Grant Miller <[email protected]> | 2022-10-26 17:07:58 -0500 |
| commit | 2cfe2439c980129b2dc8170f35944f3c0505c230 (patch) | |
| tree | 947b67d7a3216aa8ce6ac628bbec6400036d58a0 | |
| parent | 7b38b95e1036d2a62e1d0abfc41b064839497242 (diff) | |
Refactor: Impl `From` for `SampleTime` and `Resolution`
| -rw-r--r-- | embassy-stm32/src/adc/f1.rs | 9 | ||||
| -rw-r--r-- | embassy-stm32/src/adc/mod.rs | 5 | ||||
| -rw-r--r-- | embassy-stm32/src/adc/resolution.rs | 10 | ||||
| -rw-r--r-- | embassy-stm32/src/adc/sample_time.rs | 8 | ||||
| -rw-r--r-- | embassy-stm32/src/adc/v2.rs | 11 | ||||
| -rw-r--r-- | embassy-stm32/src/adc/v3.rs | 15 | ||||
| -rw-r--r-- | embassy-stm32/src/adc/v4.rs | 11 |
7 files changed, 30 insertions, 39 deletions
diff --git a/embassy-stm32/src/adc/f1.rs b/embassy-stm32/src/adc/f1.rs index 56d1a2f33..8a3b4be56 100644 --- a/embassy-stm32/src/adc/f1.rs +++ b/embassy-stm32/src/adc/f1.rs | |||
| @@ -146,14 +146,11 @@ impl<'d, T: Instance> Adc<'d, T> { | |||
| 146 | } | 146 | } |
| 147 | 147 | ||
| 148 | unsafe fn set_channel_sample_time(ch: u8, sample_time: SampleTime) { | 148 | unsafe fn set_channel_sample_time(ch: u8, sample_time: SampleTime) { |
| 149 | let sample_time = sample_time.into(); | ||
| 149 | if ch <= 9 { | 150 | if ch <= 9 { |
| 150 | T::regs() | 151 | T::regs().smpr2().modify(|reg| reg.set_smp(ch as _, sample_time)); |
| 151 | .smpr2() | ||
| 152 | .modify(|reg| reg.set_smp(ch as _, sample_time.sample_time())); | ||
| 153 | } else { | 152 | } else { |
| 154 | T::regs() | 153 | T::regs().smpr1().modify(|reg| reg.set_smp((ch - 10) as _, sample_time)); |
| 155 | .smpr1() | ||
| 156 | .modify(|reg| reg.set_smp((ch - 10) as _, sample_time.sample_time())); | ||
| 157 | } | 154 | } |
| 158 | } | 155 | } |
| 159 | } | 156 | } |
diff --git a/embassy-stm32/src/adc/mod.rs b/embassy-stm32/src/adc/mod.rs index 35d84f976..328470ef6 100644 --- a/embassy-stm32/src/adc/mod.rs +++ b/embassy-stm32/src/adc/mod.rs | |||
| @@ -8,11 +8,10 @@ | |||
| 8 | #[cfg_attr(adc_v1, path = "v1.rs")] | 8 | #[cfg_attr(adc_v1, path = "v1.rs")] |
| 9 | mod _version; | 9 | mod _version; |
| 10 | 10 | ||
| 11 | #[cfg(not(adc_v1))] | ||
| 12 | mod sample_time; | ||
| 13 | |||
| 14 | #[cfg(not(any(adc_f1, adc_v1)))] | 11 | #[cfg(not(any(adc_f1, adc_v1)))] |
| 15 | mod resolution; | 12 | mod resolution; |
| 13 | #[cfg(not(adc_v1))] | ||
| 14 | mod sample_time; | ||
| 16 | 15 | ||
| 17 | #[allow(unused)] | 16 | #[allow(unused)] |
| 18 | pub use _version::*; | 17 | pub use _version::*; |
diff --git a/embassy-stm32/src/adc/resolution.rs b/embassy-stm32/src/adc/resolution.rs index 354cabfb3..62b52a46c 100644 --- a/embassy-stm32/src/adc/resolution.rs +++ b/embassy-stm32/src/adc/resolution.rs | |||
| @@ -1,4 +1,5 @@ | |||
| 1 | #[cfg(any(adc_v2, adc_v3, adc_g0))] | 1 | #[cfg(any(adc_v2, adc_v3, adc_g0))] |
| 2 | #[derive(Clone, Copy, Debug, Eq, PartialEq)] | ||
| 2 | pub enum Resolution { | 3 | pub enum Resolution { |
| 3 | TwelveBit, | 4 | TwelveBit, |
| 4 | TenBit, | 5 | TenBit, |
| @@ -7,6 +8,7 @@ pub enum Resolution { | |||
| 7 | } | 8 | } |
| 8 | 9 | ||
| 9 | #[cfg(adc_v4)] | 10 | #[cfg(adc_v4)] |
| 11 | #[derive(Clone, Copy, Debug, Eq, PartialEq)] | ||
| 10 | pub enum Resolution { | 12 | pub enum Resolution { |
| 11 | SixteenBit, | 13 | SixteenBit, |
| 12 | FourteenBit, | 14 | FourteenBit, |
| @@ -28,9 +30,9 @@ impl Default for Resolution { | |||
| 28 | } | 30 | } |
| 29 | } | 31 | } |
| 30 | 32 | ||
| 31 | impl Resolution { | 33 | impl From<Resolution> for crate::pac::adc::vals::Res { |
| 32 | pub(super) fn res(&self) -> crate::pac::adc::vals::Res { | 34 | fn from(res: Resolution) -> crate::pac::adc::vals::Res { |
| 33 | match self { | 35 | match res { |
| 34 | #[cfg(adc_v4)] | 36 | #[cfg(adc_v4)] |
| 35 | Resolution::SixteenBit => crate::pac::adc::vals::Res::SIXTEENBIT, | 37 | Resolution::SixteenBit => crate::pac::adc::vals::Res::SIXTEENBIT, |
| 36 | #[cfg(adc_v4)] | 38 | #[cfg(adc_v4)] |
| @@ -42,7 +44,9 @@ impl Resolution { | |||
| 42 | Resolution::SixBit => crate::pac::adc::vals::Res::SIXBIT, | 44 | Resolution::SixBit => crate::pac::adc::vals::Res::SIXBIT, |
| 43 | } | 45 | } |
| 44 | } | 46 | } |
| 47 | } | ||
| 45 | 48 | ||
| 49 | impl Resolution { | ||
| 46 | pub fn to_max_count(&self) -> u32 { | 50 | pub fn to_max_count(&self) -> u32 { |
| 47 | match self { | 51 | match self { |
| 48 | #[cfg(adc_v4)] | 52 | #[cfg(adc_v4)] |
diff --git a/embassy-stm32/src/adc/sample_time.rs b/embassy-stm32/src/adc/sample_time.rs index 1850d80fb..60ba80048 100644 --- a/embassy-stm32/src/adc/sample_time.rs +++ b/embassy-stm32/src/adc/sample_time.rs | |||
| @@ -9,10 +9,10 @@ macro_rules! impl_sample_time { | |||
| 9 | )* | 9 | )* |
| 10 | } | 10 | } |
| 11 | 11 | ||
| 12 | impl SampleTime { | 12 | impl From<SampleTime> for $pac { |
| 13 | pub(crate) fn sample_time(&self) -> $pac { | 13 | fn from(sample_time: SampleTime) -> $pac { |
| 14 | match self { | 14 | match sample_time { |
| 15 | $(Self::$variant => <$pac>::$pac_variant),* | 15 | $(SampleTime::$variant => <$pac>::$pac_variant),* |
| 16 | } | 16 | } |
| 17 | } | 17 | } |
| 18 | } | 18 | } |
diff --git a/embassy-stm32/src/adc/v2.rs b/embassy-stm32/src/adc/v2.rs index e2678fe4a..30ac5d872 100644 --- a/embassy-stm32/src/adc/v2.rs +++ b/embassy-stm32/src/adc/v2.rs | |||
| @@ -214,7 +214,7 @@ where | |||
| 214 | 214 | ||
| 215 | unsafe fn read_channel(&mut self, channel: u8) -> u16 { | 215 | unsafe fn read_channel(&mut self, channel: u8) -> u16 { |
| 216 | // Configure ADC | 216 | // Configure ADC |
| 217 | T::regs().cr1().modify(|reg| reg.set_res(self.resolution.res())); | 217 | T::regs().cr1().modify(|reg| reg.set_res(self.resolution.into())); |
| 218 | 218 | ||
| 219 | // Select channel | 219 | // Select channel |
| 220 | T::regs().sqr3().write(|reg| reg.set_sq(0, channel)); | 220 | T::regs().sqr3().write(|reg| reg.set_sq(0, channel)); |
| @@ -228,14 +228,11 @@ where | |||
| 228 | } | 228 | } |
| 229 | 229 | ||
| 230 | unsafe fn set_channel_sample_time(ch: u8, sample_time: SampleTime) { | 230 | unsafe fn set_channel_sample_time(ch: u8, sample_time: SampleTime) { |
| 231 | let sample_time = sample_time.into(); | ||
| 231 | if ch <= 9 { | 232 | if ch <= 9 { |
| 232 | T::regs() | 233 | T::regs().smpr2().modify(|reg| reg.set_smp(ch as _, sample_time)); |
| 233 | .smpr2() | ||
| 234 | .modify(|reg| reg.set_smp(ch as _, sample_time.sample_time())); | ||
| 235 | } else { | 234 | } else { |
| 236 | T::regs() | 235 | T::regs().smpr1().modify(|reg| reg.set_smp((ch - 10) as _, sample_time)); |
| 237 | .smpr1() | ||
| 238 | .modify(|reg| reg.set_smp((ch - 10) as _, sample_time.sample_time())); | ||
| 239 | } | 236 | } |
| 240 | } | 237 | } |
| 241 | } | 238 | } |
diff --git a/embassy-stm32/src/adc/v3.rs b/embassy-stm32/src/adc/v3.rs index 7bc130e55..7962f2414 100644 --- a/embassy-stm32/src/adc/v3.rs +++ b/embassy-stm32/src/adc/v3.rs | |||
| @@ -199,9 +199,9 @@ impl<'d, T: Instance> Adc<'d, T> { | |||
| 199 | 199 | ||
| 200 | // Configure ADC | 200 | // Configure ADC |
| 201 | #[cfg(not(stm32g0))] | 201 | #[cfg(not(stm32g0))] |
| 202 | T::regs().cfgr().modify(|reg| reg.set_res(self.resolution.res())); | 202 | T::regs().cfgr().modify(|reg| reg.set_res(self.resolution.into())); |
| 203 | #[cfg(stm32g0)] | 203 | #[cfg(stm32g0)] |
| 204 | T::regs().cfgr1().modify(|reg| reg.set_res(self.resolution.res())); | 204 | T::regs().cfgr1().modify(|reg| reg.set_res(self.resolution.into())); |
| 205 | 205 | ||
| 206 | // Configure channel | 206 | // Configure channel |
| 207 | Self::set_channel_sample_time(pin.channel(), self.sample_time); | 207 | Self::set_channel_sample_time(pin.channel(), self.sample_time); |
| @@ -231,19 +231,16 @@ impl<'d, T: Instance> Adc<'d, T> { | |||
| 231 | 231 | ||
| 232 | #[cfg(stm32g0)] | 232 | #[cfg(stm32g0)] |
| 233 | unsafe fn set_channel_sample_time(_ch: u8, sample_time: SampleTime) { | 233 | unsafe fn set_channel_sample_time(_ch: u8, sample_time: SampleTime) { |
| 234 | T::regs().smpr().modify(|reg| reg.set_smp1(sample_time.sample_time())); | 234 | T::regs().smpr().modify(|reg| reg.set_smp1(sample_time.into())); |
| 235 | } | 235 | } |
| 236 | 236 | ||
| 237 | #[cfg(not(stm32g0))] | 237 | #[cfg(not(stm32g0))] |
| 238 | unsafe fn set_channel_sample_time(ch: u8, sample_time: SampleTime) { | 238 | unsafe fn set_channel_sample_time(ch: u8, sample_time: SampleTime) { |
| 239 | let sample_time = sample_time.into(); | ||
| 239 | if ch <= 9 { | 240 | if ch <= 9 { |
| 240 | T::regs() | 241 | T::regs().smpr1().modify(|reg| reg.set_smp(ch as _, sample_time)); |
| 241 | .smpr1() | ||
| 242 | .modify(|reg| reg.set_smp(ch as _, sample_time.sample_time())); | ||
| 243 | } else { | 242 | } else { |
| 244 | T::regs() | 243 | T::regs().smpr2().modify(|reg| reg.set_smp((ch - 10) as _, sample_time)); |
| 245 | .smpr2() | ||
| 246 | .modify(|reg| reg.set_smp((ch - 10) as _, sample_time.sample_time())); | ||
| 247 | } | 244 | } |
| 248 | } | 245 | } |
| 249 | } | 246 | } |
diff --git a/embassy-stm32/src/adc/v4.rs b/embassy-stm32/src/adc/v4.rs index 9dc5318e2..dc5f62d3c 100644 --- a/embassy-stm32/src/adc/v4.rs +++ b/embassy-stm32/src/adc/v4.rs | |||
| @@ -409,7 +409,7 @@ impl<'d, T: Instance + crate::rcc::RccPeripheral> Adc<'d, T> { | |||
| 409 | 409 | ||
| 410 | unsafe fn read_channel(&mut self, channel: u8) -> u16 { | 410 | unsafe fn read_channel(&mut self, channel: u8) -> u16 { |
| 411 | // Configure ADC | 411 | // Configure ADC |
| 412 | T::regs().cfgr().modify(|reg| reg.set_res(self.resolution.res())); | 412 | T::regs().cfgr().modify(|reg| reg.set_res(self.resolution.into())); |
| 413 | 413 | ||
| 414 | // Configure channel | 414 | // Configure channel |
| 415 | Self::set_channel_sample_time(channel, self.sample_time); | 415 | Self::set_channel_sample_time(channel, self.sample_time); |
| @@ -427,14 +427,11 @@ impl<'d, T: Instance + crate::rcc::RccPeripheral> Adc<'d, T> { | |||
| 427 | } | 427 | } |
| 428 | 428 | ||
| 429 | unsafe fn set_channel_sample_time(ch: u8, sample_time: SampleTime) { | 429 | unsafe fn set_channel_sample_time(ch: u8, sample_time: SampleTime) { |
| 430 | let sample_time = sample_time.into(); | ||
| 430 | if ch <= 9 { | 431 | if ch <= 9 { |
| 431 | T::regs() | 432 | T::regs().smpr(0).modify(|reg| reg.set_smp(ch as _, sample_time)); |
| 432 | .smpr(0) | ||
| 433 | .modify(|reg| reg.set_smp(ch as _, sample_time.sample_time())); | ||
| 434 | } else { | 433 | } else { |
| 435 | T::regs() | 434 | T::regs().smpr(1).modify(|reg| reg.set_smp((ch - 10) as _, sample_time)); |
| 436 | .smpr(1) | ||
| 437 | .modify(|reg| reg.set_smp((ch - 10) as _, sample_time.sample_time())); | ||
| 438 | } | 435 | } |
| 439 | } | 436 | } |
| 440 | } | 437 | } |
