Set resolution directly
This commit is contained in:
parent
2cfe2439c9
commit
88bbc238b7
@ -94,7 +94,6 @@ impl Prescaler {
|
|||||||
|
|
||||||
pub struct Adc<'d, T: Instance> {
|
pub struct Adc<'d, T: Instance> {
|
||||||
sample_time: SampleTime,
|
sample_time: SampleTime,
|
||||||
resolution: Resolution,
|
|
||||||
phantom: PhantomData<&'d mut T>,
|
phantom: PhantomData<&'d mut T>,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -120,7 +119,6 @@ where
|
|||||||
|
|
||||||
Self {
|
Self {
|
||||||
sample_time: Default::default(),
|
sample_time: Default::default(),
|
||||||
resolution: Resolution::default(),
|
|
||||||
phantom: PhantomData,
|
phantom: PhantomData,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -130,7 +128,9 @@ where
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_resolution(&mut self, resolution: Resolution) {
|
pub fn set_resolution(&mut self, resolution: Resolution) {
|
||||||
self.resolution = resolution;
|
unsafe {
|
||||||
|
T::regs().cr1().modify(|reg| reg.set_res(resolution.into()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Enables internal voltage reference and returns [VrefInt], which can be used in
|
/// Enables internal voltage reference and returns [VrefInt], which can be used in
|
||||||
@ -214,7 +214,6 @@ where
|
|||||||
|
|
||||||
unsafe fn read_channel(&mut self, channel: u8) -> u16 {
|
unsafe fn read_channel(&mut self, channel: u8) -> u16 {
|
||||||
// Configure ADC
|
// Configure ADC
|
||||||
T::regs().cr1().modify(|reg| reg.set_res(self.resolution.into()));
|
|
||||||
|
|
||||||
// Select channel
|
// Select channel
|
||||||
T::regs().sqr3().write(|reg| reg.set_sq(0, channel));
|
T::regs().sqr3().write(|reg| reg.set_sq(0, channel));
|
||||||
|
@ -62,7 +62,6 @@ impl<T: Instance> super::sealed::AdcPin<T> for Vbat {
|
|||||||
|
|
||||||
pub struct Adc<'d, T: Instance> {
|
pub struct Adc<'d, T: Instance> {
|
||||||
sample_time: SampleTime,
|
sample_time: SampleTime,
|
||||||
resolution: Resolution,
|
|
||||||
phantom: PhantomData<&'d mut T>,
|
phantom: PhantomData<&'d mut T>,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -99,7 +98,6 @@ impl<'d, T: Instance> Adc<'d, T> {
|
|||||||
|
|
||||||
Self {
|
Self {
|
||||||
sample_time: Default::default(),
|
sample_time: Default::default(),
|
||||||
resolution: Resolution::default(),
|
|
||||||
phantom: PhantomData,
|
phantom: PhantomData,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -145,7 +143,12 @@ impl<'d, T: Instance> Adc<'d, T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_resolution(&mut self, resolution: Resolution) {
|
pub fn set_resolution(&mut self, resolution: Resolution) {
|
||||||
self.resolution = resolution;
|
unsafe {
|
||||||
|
#[cfg(not(stm32g0))]
|
||||||
|
T::regs().cfgr().modify(|reg| reg.set_res(resolution.into()));
|
||||||
|
#[cfg(stm32g0)]
|
||||||
|
T::regs().cfgr1().modify(|reg| reg.set_res(resolution.into()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -197,12 +200,6 @@ impl<'d, T: Instance> Adc<'d, T> {
|
|||||||
// spin
|
// spin
|
||||||
}
|
}
|
||||||
|
|
||||||
// Configure ADC
|
|
||||||
#[cfg(not(stm32g0))]
|
|
||||||
T::regs().cfgr().modify(|reg| reg.set_res(self.resolution.into()));
|
|
||||||
#[cfg(stm32g0)]
|
|
||||||
T::regs().cfgr1().modify(|reg| reg.set_res(self.resolution.into()));
|
|
||||||
|
|
||||||
// Configure channel
|
// Configure channel
|
||||||
Self::set_channel_sample_time(pin.channel(), self.sample_time);
|
Self::set_channel_sample_time(pin.channel(), self.sample_time);
|
||||||
|
|
||||||
|
@ -227,7 +227,6 @@ impl Prescaler {
|
|||||||
|
|
||||||
pub struct Adc<'d, T: Instance> {
|
pub struct Adc<'d, T: Instance> {
|
||||||
sample_time: SampleTime,
|
sample_time: SampleTime,
|
||||||
resolution: Resolution,
|
|
||||||
phantom: PhantomData<&'d mut T>,
|
phantom: PhantomData<&'d mut T>,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -264,7 +263,6 @@ impl<'d, T: Instance + crate::rcc::RccPeripheral> Adc<'d, T> {
|
|||||||
|
|
||||||
let mut s = Self {
|
let mut s = Self {
|
||||||
sample_time: Default::default(),
|
sample_time: Default::default(),
|
||||||
resolution: Resolution::default(),
|
|
||||||
phantom: PhantomData,
|
phantom: PhantomData,
|
||||||
};
|
};
|
||||||
s.power_up(delay);
|
s.power_up(delay);
|
||||||
@ -367,7 +365,9 @@ impl<'d, T: Instance + crate::rcc::RccPeripheral> Adc<'d, T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_resolution(&mut self, resolution: Resolution) {
|
pub fn set_resolution(&mut self, resolution: Resolution) {
|
||||||
self.resolution = resolution;
|
unsafe {
|
||||||
|
T::regs().cfgr().modify(|reg| reg.set_res(resolution.into()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Perform a single conversion.
|
/// Perform a single conversion.
|
||||||
@ -408,9 +408,6 @@ impl<'d, T: Instance + crate::rcc::RccPeripheral> Adc<'d, T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
unsafe fn read_channel(&mut self, channel: u8) -> u16 {
|
unsafe fn read_channel(&mut self, channel: u8) -> u16 {
|
||||||
// Configure ADC
|
|
||||||
T::regs().cfgr().modify(|reg| reg.set_res(self.resolution.into()));
|
|
||||||
|
|
||||||
// Configure channel
|
// Configure channel
|
||||||
Self::set_channel_sample_time(channel, self.sample_time);
|
Self::set_channel_sample_time(channel, self.sample_time);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user