From 2fa0bb7d6eaf73dcb589f831b97559f5b81bb9c1 Mon Sep 17 00:00:00 2001 From: Warren Campbell Date: Mon, 15 Apr 2024 14:54:01 -0400 Subject: [PATCH] Use non-secure registers for u5 flash --- embassy-stm32/src/flash/u5.rs | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/embassy-stm32/src/flash/u5.rs b/embassy-stm32/src/flash/u5.rs index 580c490da..4a2168b14 100644 --- a/embassy-stm32/src/flash/u5.rs +++ b/embassy-stm32/src/flash/u5.rs @@ -14,26 +14,26 @@ pub(crate) const fn get_flash_regions() -> &'static [&'static FlashRegion] { } pub(crate) unsafe fn lock() { - pac::FLASH.seccr().modify(|w| w.set_lock(true)); + pac::FLASH.nscr().modify(|w| w.set_lock(true)); } pub(crate) unsafe fn unlock() { - if pac::FLASH.seccr().read().lock() { - pac::FLASH.seckeyr().write_value(0x4567_0123); - pac::FLASH.seckeyr().write_value(0xCDEF_89AB); + if pac::FLASH.nscr().read().lock() { + pac::FLASH.nskeyr().write_value(0x4567_0123); + pac::FLASH.nskeyr().write_value(0xCDEF_89AB); } } pub(crate) unsafe fn enable_blocking_write() { assert_eq!(0, WRITE_SIZE % 4); - pac::FLASH.seccr().write(|w| { - w.set_pg(pac::flash::vals::SeccrPg::B_0X1); + pac::FLASH.nscr().write(|w| { + w.set_pg(pac::flash::vals::NscrPg::B_0X1); }); } pub(crate) unsafe fn disable_blocking_write() { - pac::FLASH.seccr().write(|w| w.set_pg(pac::flash::vals::SeccrPg::B_0X0)); + pac::FLASH.nscr().write(|w| w.set_pg(pac::flash::vals::NscrPg::B_0X0)); } pub(crate) unsafe fn blocking_write(start_address: u32, buf: &[u8; WRITE_SIZE]) -> Result<(), Error> { @@ -50,19 +50,19 @@ pub(crate) unsafe fn blocking_write(start_address: u32, buf: &[u8; WRITE_SIZE]) } pub(crate) unsafe fn blocking_erase_sector(sector: &FlashSector) -> Result<(), Error> { - pac::FLASH.seccr().modify(|w| { - w.set_per(pac::flash::vals::SeccrPer::B_0X1); + pac::FLASH.nscr().modify(|w| { + w.set_per(pac::flash::vals::NscrPer::B_0X1); w.set_pnb(sector.index_in_bank) }); - pac::FLASH.seccr().modify(|w| { + pac::FLASH.nscr().modify(|w| { w.set_strt(true); }); let ret: Result<(), Error> = blocking_wait_ready(); pac::FLASH - .seccr() - .modify(|w| w.set_per(pac::flash::vals::SeccrPer::B_0X0)); + .nscr() + .modify(|w| w.set_per(pac::flash::vals::NscrPer::B_0X0)); clear_all_err(); ret } @@ -70,12 +70,12 @@ pub(crate) unsafe fn blocking_erase_sector(sector: &FlashSector) -> Result<(), E pub(crate) unsafe fn clear_all_err() { // read and write back the same value. // This clears all "write 1 to clear" bits. - pac::FLASH.secsr().modify(|_| {}); + pac::FLASH.nssr().modify(|_| {}); } unsafe fn blocking_wait_ready() -> Result<(), Error> { loop { - let sr = pac::FLASH.secsr().read(); + let sr = pac::FLASH.nssr().read(); if !sr.bsy() { if sr.pgserr() {