```rust /// Receive data into a u8 buffer. See L44 RM, section 38.5.3: "Character reception procedure" pub fn read(&mut self, buf: &mut [u8]) { for i in 0..buf.len() { // Wait for the next bit cfg_if! { if #[cfg(not(feature = "f4"))] { while self.regs.isr.read().rxne().bit_is_clear() {} buf[i] = self.regs.rdr.read().rdr().bits() as u8; } else { while self.regs.sr.read().rxne().bit_is_clear() {} buf[i] = self.regs.dr.read().dr().bits() as u8; } } } ```