1234567891011121314151617181920212223242526272829303132333435 |
- //! Flash memory
- use stm32::{flash, FLASH};
- /// Extension trait to constrain the FLASH peripheral
- pub trait FlashExt {
- /// Constrains the FLASH peripheral to play nicely with the other abstractions
- fn constrain(self) -> Parts;
- }
- impl FlashExt for FLASH {
- fn constrain(self) -> Parts {
- Parts {
- acr: ACR { _0: () },
- }
- }
- }
- /// Constrained FLASH peripheral
- pub struct Parts {
- /// Opaque ACR register
- pub acr: ACR,
- }
- /// Opaque ACR register
- pub struct ACR {
- _0: (),
- }
- impl ACR {
- pub(crate) fn acr(&mut self) -> &flash::ACR {
- // NOTE(unsafe) this proxy grants exclusive access to this register
- unsafe { &(*FLASH::ptr()).acr }
- }
- }
|