---
bsps/arm/stm32f4/gpio/gpio.c| 32 +
bsps/arm/stm32f4/include/bsp/stm32f4_gpio.h | 20 +
2 files changed, 52 insertions(+)
diff --git a/bsps/arm/stm32f4/gpio/gpio.c b/bsps/arm/stm32f4/gpio/gpio.c
index efc005bd9f..ac4d3b4f56 100644
--- a/bsps/arm/stm32f4/gpio/gpio.c
+++ b/bsps/arm/stm32f4/gpio/gpio.c
@@ -562,3 +562,35 @@ void exti_handler(void *arg) {
}
}
+/ STM32F4 Other specific GPIO functions /
+void stm32f4_gpio_lock_pin(
+rtems_gpio *base
+)
+{
+stm32f4_gpio *gpio = get_gpio_from_base(base);
+LL_GPIO_LockPin(
+gpio->port,
+STM32F4_GET_HAL_GPIO_PIN(gpio->pin)
+);
+}
+
+void stm32f4_gpio_set_af(
+rtems_gpio *base,
+uint32_t alternate
+)
+{
+stm32f4_gpio *gpio = get_gpio_from_base(base);
+if (gpio->pin < 8)
+LL_GPIO_SetAFPin_0_7(
+gpio->port,
+STM32F4_GET_HAL_GPIO_PIN(gpio->pin),
+alternate
+);
+else
+LL_GPIO_SetAFPin_8_15(
+gpio->port,
+STM32F4_GET_HAL_GPIO_PIN(gpio->pin),
+alternate
+);
+}
+
diff --git a/bsps/arm/stm32f4/include/bsp/stm32f4_gpio.h
b/bsps/arm/stm32f4/include/bsp/stm32f4_gpio.h
index eecd87b3fd..814b1b4105 100644
--- a/bsps/arm/stm32f4/include/bsp/stm32f4_gpio.h
+++ b/bsps/arm/stm32f4/include/bsp/stm32f4_gpio.h
@@ -53,4 +53,24 @@ typedef struct {
GPIO_TypeDef *port;
} stm32f4_gpio;
+/**
+ * @brief Lock configuration of a pin.
+ *
+ * @param[in] base The pointer to the GPIO object.
+ */
+extern void stm32f4_gpio_lock_pin(
+rtems_gpio *base
+);
+
+/**
+ * @brief Sets the alternate function for a pin.
+ *
+ * @param[in] base The pointer to the GPIO object.
+ * @param alternate Alternate function, from 0-15.
+ */
+extern void stm32f4_gpio_set_af(
+rtems_gpio *base,
+uint32_t alternate
+);
+
#endif /* LIBBSP_ARM_STM32F4_BSP_GPIO */
--
2.36.1
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel