50 lines
1.2 KiB
Rust
50 lines
1.2 KiB
Rust
use crate::pac::RTC_CNTL;
|
|
|
|
pub struct RtcCntl {
|
|
rtc_cntl: RTC_CNTL,
|
|
}
|
|
|
|
impl RtcCntl {
|
|
pub fn new(rtc_cntl: RTC_CNTL) -> Self {
|
|
Self { rtc_cntl }
|
|
}
|
|
|
|
pub fn set_super_wdt_enable(&mut self, enable: bool) {
|
|
self.set_swd_write_protection(false);
|
|
|
|
self.rtc_cntl
|
|
.swd_conf
|
|
.write(|w| w.swd_auto_feed_en().bit(!enable));
|
|
|
|
self.set_swd_write_protection(true);
|
|
}
|
|
|
|
fn set_swd_write_protection(&mut self, enable: bool) {
|
|
let wkey = if enable { 0u32 } else { 0x8F1D_312A };
|
|
|
|
self.rtc_cntl
|
|
.swd_wprotect
|
|
.write(|w| unsafe { w.swd_wkey().bits(wkey) });
|
|
}
|
|
|
|
pub fn set_wdt_enable(&mut self, enable: bool) {
|
|
self.set_wdt_write_protection(false);
|
|
|
|
if !enable {
|
|
self.rtc_cntl.wdtconfig0.write(|w| unsafe { w.bits(0) });
|
|
} else {
|
|
self.rtc_cntl.wdtconfig0.write(|w| w.wdt_en().bit(enable));
|
|
}
|
|
|
|
self.set_wdt_write_protection(true);
|
|
}
|
|
|
|
fn set_wdt_write_protection(&mut self, enable: bool) {
|
|
let wkey = if enable { 0u32 } else { 0x50D8_3AA1 };
|
|
|
|
self.rtc_cntl
|
|
.wdtwprotect
|
|
.write(|w| unsafe { w.wdt_wkey().bits(wkey) });
|
|
}
|
|
}
|