Skip to content

Commit 88c5843

Browse files
committed
Use write instead of modify to clear I2C::SR flags
1 parent ed88ea1 commit 88c5843

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
77

88
## [Unreleased]
99

10+
- Use `write` instead of `modify` to clear flags
1011
- Bump `stm32f4-staging`
1112

1213
## [v0.22.1] - 2024-11-03

src/i2c.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -220,34 +220,34 @@ impl<I2C: Instance> I2c<I2C> {
220220
let sr1 = self.i2c.sr1().read();
221221

222222
if sr1.timeout().bit_is_set() {
223-
self.i2c.sr1().modify(|_, w| w.timeout().clear_bit());
223+
self.i2c.sr1().write(|w| w.timeout().clear_bit());
224224
return Err(Error::Timeout);
225225
}
226226

227227
if sr1.pecerr().bit_is_set() {
228-
self.i2c.sr1().modify(|_, w| w.pecerr().clear_bit());
228+
self.i2c.sr1().write(|w| w.pecerr().clear_bit());
229229
return Err(Error::Crc);
230230
}
231231

232232
if sr1.ovr().bit_is_set() {
233-
self.i2c.sr1().modify(|_, w| w.ovr().clear_bit());
233+
self.i2c.sr1().write(|w| w.ovr().clear_bit());
234234
return Err(Error::Overrun);
235235
}
236236

237237
if sr1.af().bit_is_set() {
238-
self.i2c.sr1().modify(|_, w| w.af().clear_bit());
238+
self.i2c.sr1().write(|w| w.af().clear_bit());
239239
return Err(Error::NoAcknowledge(NoAcknowledgeSource::Unknown));
240240
}
241241

242242
if sr1.arlo().bit_is_set() {
243-
self.i2c.sr1().modify(|_, w| w.arlo().clear_bit());
243+
self.i2c.sr1().write(|w| w.arlo().clear_bit());
244244
return Err(Error::ArbitrationLoss);
245245
}
246246

247247
// The errata indicates that BERR may be incorrectly detected. It recommends ignoring and
248248
// clearing the BERR bit instead.
249249
if sr1.berr().bit_is_set() {
250-
self.i2c.sr1().modify(|_, w| w.berr().clear_bit());
250+
self.i2c.sr1().write(|w| w.berr().clear_bit());
251251
}
252252

253253
Ok(sr1)

0 commit comments

Comments
 (0)