Module stm32l4xx_hal::flash
source · [−]Expand description
Flash memory module
Example usage of flash programming interface:
fn program_region(mut flash: flash::Parts) -> Result<(), flash::Error> {
// Unlock the flashing module
let mut prog = flash.keyr.unlock_flash(&mut flash.sr, &mut flash.cr)?;
let page = flash::FlashPage(5);
// Perform the erase and programing operation
prog.erase_page(page)?;
let data = [
0x1111_1112_1113_1114,
0x2221_2222_2223_2224,
0x3331_3332_3333_3334,
];
prog.write_native(page.to_address(), &data)?;
// Check result (not needed, but done for this example)
let addr = page.to_address() as *const u64;
assert!(unsafe { core::ptr::read(addr) } == data[0]);
assert!(unsafe { core::ptr::read(addr.offset(1)) } == data[1]);
assert!(unsafe { core::ptr::read(addr.offset(2)) } == data[2]);
Ok(())
}
Re-exports
pub use flash_trait::Error;
pub use flash_trait::FlashPage;
pub use flash_trait::Read;
pub use flash_trait::WriteErase;
Structs
Opaque ACR register
Opaque CR register
Opaque ECCR register
Flash programming interface
Opaque KEYR register
Opaque OPTKEYR register
Opaque PCROP1ER register
Opaque PCROP1SR register
Opaque PDKEYR register
Constrained FLASH peripheral
Opaque SR register
Opaque WRP1AR register
Opaque WRP1BR register
Traits
Extension trait to constrain the FLASH peripheral