stm32 adc read_async: add asserts for buf len
This commit is contained in:
parent
5e2fd8623a
commit
c120efad5b
@ -262,10 +262,13 @@ impl<'d, T: Instance> Adc<'d, T> {
|
|||||||
&mut self,
|
&mut self,
|
||||||
rx_dma: &mut impl RxDma<T>,
|
rx_dma: &mut impl RxDma<T>,
|
||||||
sequence: impl ExactSizeIterator<Item = (&mut AnyAdcChannel<T>, SampleTime)>,
|
sequence: impl ExactSizeIterator<Item = (&mut AnyAdcChannel<T>, SampleTime)>,
|
||||||
data: &mut [u16],
|
readings: &mut [u16],
|
||||||
) {
|
) {
|
||||||
assert!(sequence.len() != 0, "Asynchronous read sequence cannot be empty");
|
assert!(sequence.len() != 0, "Asynchronous read sequence cannot be empty");
|
||||||
|
assert!(
|
||||||
|
sequence.len() == readings.len(),
|
||||||
|
"Sequence length must be equal to readings length"
|
||||||
|
);
|
||||||
assert!(
|
assert!(
|
||||||
sequence.len() <= 16,
|
sequence.len() <= 16,
|
||||||
"Asynchronous read sequence cannot be more than 16 in length"
|
"Asynchronous read sequence cannot be more than 16 in length"
|
||||||
@ -357,7 +360,7 @@ impl<'d, T: Instance> Adc<'d, T> {
|
|||||||
rx_dma,
|
rx_dma,
|
||||||
request,
|
request,
|
||||||
T::regs().dr().as_ptr() as *mut u16,
|
T::regs().dr().as_ptr() as *mut u16,
|
||||||
data,
|
readings,
|
||||||
Default::default(),
|
Default::default(),
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
@ -431,6 +434,7 @@ impl<'d, T: Instance> Adc<'d, T> {
|
|||||||
fn set_channel_sample_time(_ch: u8, sample_time: SampleTime) {
|
fn set_channel_sample_time(_ch: u8, sample_time: SampleTime) {
|
||||||
cfg_if! {
|
cfg_if! {
|
||||||
if #[cfg(any(adc_g0, adc_u0))] {
|
if #[cfg(any(adc_g0, adc_u0))] {
|
||||||
|
// On G0 and U6 all channels use the same sampling time.
|
||||||
T::regs().smpr().modify(|reg| reg.set_smp1(sample_time.into()));
|
T::regs().smpr().modify(|reg| reg.set_smp1(sample_time.into()));
|
||||||
} else if #[cfg(adc_h5)] {
|
} else if #[cfg(adc_h5)] {
|
||||||
match _ch {
|
match _ch {
|
||||||
|
|||||||
@ -290,10 +290,13 @@ impl<'d, T: Instance> Adc<'d, T> {
|
|||||||
&mut self,
|
&mut self,
|
||||||
rx_dma: &mut impl RxDma<T>,
|
rx_dma: &mut impl RxDma<T>,
|
||||||
sequence: impl ExactSizeIterator<Item = (&mut AnyAdcChannel<T>, SampleTime)>,
|
sequence: impl ExactSizeIterator<Item = (&mut AnyAdcChannel<T>, SampleTime)>,
|
||||||
data: &mut [u16],
|
readings: &mut [u16],
|
||||||
) {
|
) {
|
||||||
assert!(sequence.len() != 0, "Asynchronous read sequence cannot be empty");
|
assert!(sequence.len() != 0, "Asynchronous read sequence cannot be empty");
|
||||||
|
assert!(
|
||||||
|
sequence.len() == readings.len(),
|
||||||
|
"Sequence length must be equal to readings length"
|
||||||
|
);
|
||||||
assert!(
|
assert!(
|
||||||
sequence.len() <= 16,
|
sequence.len() <= 16,
|
||||||
"Asynchronous read sequence cannot be more than 16 in length"
|
"Asynchronous read sequence cannot be more than 16 in length"
|
||||||
@ -352,7 +355,7 @@ impl<'d, T: Instance> Adc<'d, T> {
|
|||||||
rx_dma,
|
rx_dma,
|
||||||
request,
|
request,
|
||||||
T::regs().dr().as_ptr() as *mut u16,
|
T::regs().dr().as_ptr() as *mut u16,
|
||||||
data,
|
readings,
|
||||||
Default::default(),
|
Default::default(),
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user