aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embassy-stm32/src/gpio.rs11
1 files changed, 6 insertions, 5 deletions
diff --git a/embassy-stm32/src/gpio.rs b/embassy-stm32/src/gpio.rs
index 14f2559e1..a67d4e73f 100644
--- a/embassy-stm32/src/gpio.rs
+++ b/embassy-stm32/src/gpio.rs
@@ -130,9 +130,9 @@ impl<'d, T: Pin> Output<'d, T> {
130 let r = pin.block(); 130 let r = pin.block();
131 let n = pin.pin() as usize; 131 let n = pin.pin() as usize;
132 r.pupdr().modify(|w| w.set_pupdr(n, vals::Pupdr::FLOATING)); 132 r.pupdr().modify(|w| w.set_pupdr(n, vals::Pupdr::FLOATING));
133 r.moder().modify(|w| w.set_moder(n, vals::Moder::OUTPUT));
134 r.otyper().modify(|w| w.set_ot(n, vals::Ot::PUSHPULL)); 133 r.otyper().modify(|w| w.set_ot(n, vals::Ot::PUSHPULL));
135 pin.set_speed(speed); 134 pin.set_speed(speed);
135 r.moder().modify(|w| w.set_moder(n, vals::Moder::OUTPUT));
136 }); 136 });
137 137
138 Self { 138 Self {
@@ -208,9 +208,9 @@ impl<'d, T: Pin> OutputOpenDrain<'d, T> {
208 let r = pin.block(); 208 let r = pin.block();
209 let n = pin.pin() as usize; 209 let n = pin.pin() as usize;
210 r.pupdr().modify(|w| w.set_pupdr(n, pull.into())); 210 r.pupdr().modify(|w| w.set_pupdr(n, pull.into()));
211 r.moder().modify(|w| w.set_moder(n, vals::Moder::OUTPUT));
212 r.otyper().modify(|w| w.set_ot(n, vals::Ot::OPENDRAIN)); 211 r.otyper().modify(|w| w.set_ot(n, vals::Ot::OPENDRAIN));
213 pin.set_speed(speed); 212 pin.set_speed(speed);
213 r.moder().modify(|w| w.set_moder(n, vals::Moder::OUTPUT));
214 }); 214 });
215 215
216 Self { 216 Self {
@@ -311,9 +311,6 @@ pub(crate) mod sealed {
311 let pin = self._pin() as usize; 311 let pin = self._pin() as usize;
312 let block = self.block(); 312 let block = self.block();
313 block 313 block
314 .moder()
315 .modify(|w| w.set_moder(pin, vals::Moder::ALTERNATE));
316 block
317 .afr(pin / 8) 314 .afr(pin / 8)
318 .modify(|w| w.set_afr(pin % 8, vals::Afr(af_num))); 315 .modify(|w| w.set_afr(pin % 8, vals::Afr(af_num)));
319 match af_type { 316 match af_type {
@@ -327,6 +324,10 @@ pub(crate) mod sealed {
327 block 324 block
328 .pupdr() 325 .pupdr()
329 .modify(|w| w.set_pupdr(pin, vals::Pupdr::FLOATING)); 326 .modify(|w| w.set_pupdr(pin, vals::Pupdr::FLOATING));
327
328 block
329 .moder()
330 .modify(|w| w.set_moder(pin, vals::Moder::ALTERNATE));
330 } 331 }
331 332
332 unsafe fn set_as_analog(&self) { 333 unsafe fn set_as_analog(&self) {