use crate::pac::{CRC, RCC};
use crate::rcc::Enable;
pub trait CrcExt {
#[allow(clippy::wrong_self_convention, clippy::new_ret_no_self)]
fn new(self) -> Crc;
}
impl CrcExt for CRC {
fn new(self) -> Crc {
let rcc = unsafe { &(*RCC::ptr()) };
CRC::enable(rcc);
Crc { crc: self }
}
}
pub struct Crc {
crc: CRC,
}
impl Crc {
pub fn read(&self) -> u32 {
self.crc.dr.read().bits()
}
pub fn write(&mut self, val: u32) {
self.crc.dr.write(|w| w.dr().bits(val))
}
pub fn reset(&self) {
self.crc.cr.write(|w| w.reset().set_bit());
cortex_m::asm::nop();
}
}