Reset rng in case of clock or seed error

This commit is contained in:
Lucas Granberg 2023-02-08 17:52:49 +02:00
parent 9d637070a5
commit da6b1e8399

View File

@ -90,8 +90,10 @@ impl<'d, T: Instance> Rng<'d, T> {
impl<'d, T: Instance> RngCore for Rng<'d, T> { impl<'d, T: Instance> RngCore for Rng<'d, T> {
fn next_u32(&mut self) -> u32 { fn next_u32(&mut self) -> u32 {
loop { loop {
let bits = unsafe { T::regs().sr().read() }; let sr = unsafe { T::regs().sr().read() };
if bits.drdy() { if sr.seis() | sr.ceis() {
self.reset();
} else if sr.drdy() {
return unsafe { T::regs().dr().read() }; return unsafe { T::regs().dr().read() };
} }
} }