aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Tardieu <[email protected]>2024-07-27 15:04:02 +0200
committerSamuel Tardieu <[email protected]>2024-07-27 15:07:04 +0200
commit8680c8689419ca47ed9d31e8bb7b6954a51cc534 (patch)
tree6a9d83f83177f0bed57d6567b14bcde63187f3dd
parentb88dc137e766d89eca5472bfa6f3bb78cfd1f7e0 (diff)
embassy-stm32: wait for BSY flag to clear before flashing
While not waiting for the BSY flag to clear works on STM32F103C8T6, it does not on APM32F103C8T6. Only one half-word gets written while the other one gets lost.
-rw-r--r--embassy-stm32/src/flash/f1f3.rs4
1 files changed, 3 insertions, 1 deletions
diff --git a/embassy-stm32/src/flash/f1f3.rs b/embassy-stm32/src/flash/f1f3.rs
index e66842e31..ff7f810ea 100644
--- a/embassy-stm32/src/flash/f1f3.rs
+++ b/embassy-stm32/src/flash/f1f3.rs
@@ -42,9 +42,11 @@ pub(crate) unsafe fn blocking_write(start_address: u32, buf: &[u8; WRITE_SIZE])
42 42
43 // prevents parallelism errors 43 // prevents parallelism errors
44 fence(Ordering::SeqCst); 44 fence(Ordering::SeqCst);
45
46 wait_ready_blocking()?;
45 } 47 }
46 48
47 wait_ready_blocking() 49 Ok(())
48} 50}
49 51
50pub(crate) unsafe fn blocking_erase_sector(sector: &FlashSector) -> Result<(), Error> { 52pub(crate) unsafe fn blocking_erase_sector(sector: &FlashSector) -> Result<(), Error> {