From 2f7bba4668006ed3124adf6c94efeb2169d79a9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=ABl=20Schulz-Ansres?= Date: Wed, 22 May 2024 23:44:34 +0200 Subject: [PATCH] Use ODR register for Pull::Up or Down --- embassy-stm32/src/gpio.rs | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/embassy-stm32/src/gpio.rs b/embassy-stm32/src/gpio.rs index 7de223455..3fb7fda57 100644 --- a/embassy-stm32/src/gpio.rs +++ b/embassy-stm32/src/gpio.rs @@ -689,17 +689,19 @@ pub(crate) trait SealedPin { #[cfg(gpio_v1)] { let crlh = if n < 8 { 0 } else { 1 }; - match r.cr(crlh).cnf(n % 8) { - vals::CnfIn::FLOATING => Pull::None, - _ => { - if r.bsrr().read().bs(n % 8) { - Pull::Up - } else if r.bsrr().read().br(n % 8) { - Pull::Down - } else { - Pull::None + match r.cr(crlh).read().mode(n % 8) { + vals::Mode::INPUT => { + match r.cr(crlh).read().cnf_in(n % 8) { + vals::CnfIn::PULL => { + match r.odr().read().odr(n % 8) { + vals::Odr::LOW => Pull::Down, + vals::Odr::HIGH => Pull::Up + } + }, + _ => Pull::None } - } + }, + _ => Pull::None } } #[cfg(gpio_v2)]