//! Battary backed SRAM
use core::slice;
use embassy_hal_internal::Peri;
use crate::_generated::{BKPSRAM_BASE, BKPSRAM_SIZE};
use crate::peripherals::BKPSRAM;
/// Struct used to initilize backup sram
pub struct BackupMemory {}
impl BackupMemory {
/// Setup battery backed sram
///
/// Returns slice to sram and whether the sram was retained
pub fn new(_backup_sram: Peri<'static, BKPSRAM>) -> (&'static mut [u8], bool) {
// Assert bksram has been enabled in rcc
assert!(crate::pac::PWR.bdcr().read().bren() == crate::pac::pwr::vals::Retention::PRESERVED);
unsafe {
(
slice::from_raw_parts_mut(BKPSRAM_BASE as *mut u8, BKPSRAM_SIZE),
critical_section::with(|_| crate::rcc::BKSRAM_RETAINED),
)
}
}
}