aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrant Miller <[email protected]>2022-05-08 14:41:59 -0500
committerGrant Miller <[email protected]>2022-05-08 14:43:37 -0500
commitb230ac9c1a2e33da7e2996284ae5dfdc1b832a30 (patch)
treed026d1ea2e28f059f92df9a41f78b23e03edfe13
parent49ae26f3846930e6a89cc10d176fbd0403b4d0c2 (diff)
stm32/gpio: Add support for `set_speed` for gpio v1
-rw-r--r--embassy-stm32/src/gpio.rs12
1 files changed, 11 insertions, 1 deletions
diff --git a/embassy-stm32/src/gpio.rs b/embassy-stm32/src/gpio.rs
index 30f900316..d5941c2f9 100644
--- a/embassy-stm32/src/gpio.rs
+++ b/embassy-stm32/src/gpio.rs
@@ -511,10 +511,20 @@ pub(crate) mod sealed {
511 self.set_as_analog(); 511 self.set_as_analog();
512 } 512 }
513 513
514 #[cfg(gpio_v2)] 514 #[cfg(any(gpio_v1, gpio_v2))]
515 #[inline] 515 #[inline]
516 unsafe fn set_speed(&self, speed: Speed) { 516 unsafe fn set_speed(&self, speed: Speed) {
517 let pin = self._pin() as usize; 517 let pin = self._pin() as usize;
518
519 #[cfg(gpio_v1)]
520 {
521 let crlh = if pin < 8 { 0 } else { 1 };
522 self.block().cr(crlh).modify(|w| {
523 w.set_mode(pin % 8, speed.into());
524 });
525 }
526
527 #[cfg(gpio_v2)]
518 self.block() 528 self.block()
519 .ospeedr() 529 .ospeedr()
520 .modify(|w| w.set_ospeedr(pin, speed.into())); 530 .modify(|w| w.set_ospeedr(pin, speed.into()));