Merge pull request #407 from theunkn0wn1/fix/into_af

Fix: erroneous behavior of pins  being configured into AF
This commit is contained in:
Dario Nieuwenhuis 2021-09-28 00:54:15 +02:00 committed by GitHub
commit 1650983e46
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -130,9 +130,9 @@ impl<'d, T: Pin> Output<'d, T> {
let r = pin.block();
let n = pin.pin() as usize;
r.pupdr().modify(|w| w.set_pupdr(n, vals::Pupdr::FLOATING));
r.moder().modify(|w| w.set_moder(n, vals::Moder::OUTPUT));
r.otyper().modify(|w| w.set_ot(n, vals::Ot::PUSHPULL));
pin.set_speed(speed);
r.moder().modify(|w| w.set_moder(n, vals::Moder::OUTPUT));
});
Self {
@ -208,9 +208,9 @@ impl<'d, T: Pin> OutputOpenDrain<'d, T> {
let r = pin.block();
let n = pin.pin() as usize;
r.pupdr().modify(|w| w.set_pupdr(n, pull.into()));
r.moder().modify(|w| w.set_moder(n, vals::Moder::OUTPUT));
r.otyper().modify(|w| w.set_ot(n, vals::Ot::OPENDRAIN));
pin.set_speed(speed);
r.moder().modify(|w| w.set_moder(n, vals::Moder::OUTPUT));
});
Self {
@ -310,9 +310,6 @@ pub(crate) mod sealed {
unsafe fn set_as_af(&self, af_num: u8, af_type: OutputType) {
let pin = self._pin() as usize;
let block = self.block();
block
.moder()
.modify(|w| w.set_moder(pin, vals::Moder::ALTERNATE));
block
.afr(pin / 8)
.modify(|w| w.set_afr(pin % 8, vals::Afr(af_num)));
@ -327,6 +324,10 @@ pub(crate) mod sealed {
block
.pupdr()
.modify(|w| w.set_pupdr(pin, vals::Pupdr::FLOATING));
block
.moder()
.modify(|w| w.set_moder(pin, vals::Moder::ALTERNATE));
}
unsafe fn set_as_analog(&self) {