c36feab845
Created `gpio_set_pullup` to configure pullups independently of direction. Removed GPIO_INPUT_PULLUP direction type. Added misc other helper functions in iomux.h
41 lines
1.1 KiB
C
41 lines
1.1 KiB
C
/* GPIO management functions
|
|
*
|
|
* Part of esp-open-rtos
|
|
* Copyright (C) 2015 Angus Gratton
|
|
* BSD Licensed as described in the file LICENSE
|
|
*/
|
|
#include <esp/gpio.h>
|
|
|
|
void gpio_enable(const uint8_t gpio_num, const gpio_direction_t direction)
|
|
{
|
|
switch (direction) {
|
|
case GPIO_INPUT:
|
|
GPIO.ENABLE_OUT_CLEAR = BIT(gpio_num);
|
|
iomux_set_gpio_function(gpio_num, false);
|
|
break;
|
|
case GPIO_OUTPUT:
|
|
GPIO.CONF[gpio_num] &= ~GPIO_CONF_OPEN_DRAIN;
|
|
GPIO.ENABLE_OUT_SET = BIT(gpio_num);
|
|
iomux_set_gpio_function(gpio_num, true);
|
|
break;
|
|
case GPIO_OUT_OPEN_DRAIN:
|
|
GPIO.CONF[gpio_num] |= GPIO_CONF_OPEN_DRAIN;
|
|
GPIO.ENABLE_OUT_SET = BIT(gpio_num);
|
|
iomux_set_gpio_function(gpio_num, true);
|
|
break;
|
|
}
|
|
}
|
|
|
|
void gpio_set_pullup(uint8_t gpio_num, bool enabled, bool enabled_during_sleep)
|
|
{
|
|
uint32_t flags = 0;
|
|
|
|
if (enabled) {
|
|
flags |= IOMUX_PIN_PULLUP;
|
|
}
|
|
if (enabled_during_sleep) {
|
|
flags |= IOMUX_PIN_PULLUP_SLEEP;
|
|
}
|
|
iomux_set_pullup_flags(gpio_to_iomux(gpio_num), flags);
|
|
}
|
|
|