ESP32S2_Cal/main/impl/impl_btn.c

35 lines
939 B
C

#include "impl_btn.h"
#include "driver/gpio.h"
#define BTN_GPIO_1 GPIO_NUM_46
#define BTN_GPIO_2 GPIO_NUM_45
#define BTN_GPIO_3 GPIO_NUM_42
#define BTN_GPIO_4 GPIO_NUM_41
static void impl_btn_setup_pin(gpio_num_t pin) {
gpio_reset_pin(pin);
gpio_set_direction(pin, GPIO_MODE_INPUT);
gpio_pullup_en(pin);
}
esp_err_t impl_btn_init(void) {
impl_btn_setup_pin(BTN_GPIO_1);
impl_btn_setup_pin(BTN_GPIO_2);
impl_btn_setup_pin(BTN_GPIO_3);
impl_btn_setup_pin(BTN_GPIO_4);
return ESP_OK;
}
esp_err_t impl_btn_read(uint8_t *btn_status) {
*btn_status = 0U;
/* Bug workaround: GPIO46 cannot pull up. */
//if (gpio_get_level(BTN_GPIO_1) == 0) *btn_status |= 0x01U;
if (gpio_get_level(BTN_GPIO_2) == 0) *btn_status |= (0x01U << 1U);
if (gpio_get_level(BTN_GPIO_3) == 0) *btn_status |= (0x01U << 2U);
if (gpio_get_level(BTN_GPIO_4) == 0) *btn_status |= (0x01U << 3U);
return ESP_OK;
}