aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien George2018-05-01 17:31:23 +1000
committerDamien George2018-05-01 17:31:23 +1000
commita28bd4ac942baec0ddc8da644715b0d6fe386f9f (patch)
tree3576c8ebad41c51df67cba0626de93f7f0adbc98
parent777e042ab53821b1240466af1e92eceb14c0fdf1 (diff)
stm32/mphalport: Add mp_hal_pin_config_speed() to select GPIO speed.
It should be used after mp_hal_pin_config() or mp_hal_pin_config_alt().
-rw-r--r--ports/stm32/mphalport.c6
-rw-r--r--ports/stm32/mphalport.h1
2 files changed, 7 insertions, 0 deletions
diff --git a/ports/stm32/mphalport.c b/ports/stm32/mphalport.c
index 0108d9026..c822c8e77 100644
--- a/ports/stm32/mphalport.c
+++ b/ports/stm32/mphalport.c
@@ -171,3 +171,9 @@ bool mp_hal_pin_config_alt(mp_hal_pin_obj_t pin, uint32_t mode, uint32_t pull, u
mp_hal_pin_config(pin, mode, pull, af->idx);
return true;
}
+
+void mp_hal_pin_config_speed(mp_hal_pin_obj_t pin_obj, uint32_t speed) {
+ GPIO_TypeDef *gpio = pin_obj->gpio;
+ uint32_t pin = pin_obj->pin;
+ gpio->OSPEEDR = (gpio->OSPEEDR & ~(3 << (2 * pin))) | (speed << (2 * pin));
+}
diff --git a/ports/stm32/mphalport.h b/ports/stm32/mphalport.h
index 2843a79cd..0e294a21c 100644
--- a/ports/stm32/mphalport.h
+++ b/ports/stm32/mphalport.h
@@ -59,3 +59,4 @@ static inline mp_uint_t mp_hal_ticks_cpu(void) {
void mp_hal_gpio_clock_enable(GPIO_TypeDef *gpio);
void mp_hal_pin_config(mp_hal_pin_obj_t pin, uint32_t mode, uint32_t pull, uint32_t alt);
bool mp_hal_pin_config_alt(mp_hal_pin_obj_t pin, uint32_t mode, uint32_t pull, uint8_t fn, uint8_t unit);
+void mp_hal_pin_config_speed(mp_hal_pin_obj_t pin_obj, uint32_t speed);