stm32: Clear possible set flags after disabling DMA

This commit is contained in:
Thales Fragoso 2021-07-17 16:08:13 -03:00
parent 59953b5b5e
commit aae0431d31
3 changed files with 13 additions and 1 deletions

View File

@ -66,6 +66,11 @@ pub(crate) async unsafe fn do_transfer(
w.set_en(false); w.set_en(false);
}); });
while ch.cr().read().en() {} while ch.cr().read().en() {}
// Disabling the DMA mid transfer might cause some flags to be set, clear them all for the
// next transfer
dma.ifcr()
.write(|w| w.set_gif(channel_number as usize, true));
}); });
#[cfg(dmamux)] #[cfg(dmamux)]

View File

@ -67,6 +67,13 @@ pub(crate) async unsafe fn do_transfer(
w.set_en(false); w.set_en(false);
}); });
while ch.cr().read().en() {} while ch.cr().read().en() {}
// Disabling the DMA mid transfer might cause some flags to be set, clear them all for the
// next transfer
dma.ifcr(channel_number as usize / 4).write(|w| {
w.set_tcif(channel_number as usize % 4, true);
w.set_teif(channel_number as usize % 4, true);
});
}); });
#[cfg(dmamux)] #[cfg(dmamux)]

@ -1 +1 @@
Subproject commit 8702a3a3bb83a59515dab2cf9f75952fa6edae8a Subproject commit ce2e32b927a3637d975e780274b8e0c985f5d992