#include "soc/gpio_struct.h"
#include "soc/io_mux_reg.h"
#include "driver/gpio.h"
void printPinConfig(int pin) {
uint32_t gpio_enable = GPIO.enable;
bool isOutput = (gpio_enable & (1 << pin)) != 0;
int level = digitalRead(pin);
uint32_t reg_val;
bool isPullUp = false;
bool isPullDown = false;
switch (pin) {
case 0: reg_val = REG_READ(IO_MUX_GPIO0_REG); break;
case 1: reg_val = REG_READ(IO_MUX_GPIO1_REG); break;
case 2: reg_val = REG_READ(IO_MUX_GPIO2_REG); break;
case 3: reg_val = REG_READ(IO_MUX_GPIO3_REG); break;
case 4: reg_val = REG_READ(IO_MUX_GPIO4_REG); break;
case 5: reg_val = REG_READ(IO_MUX_GPIO5_REG); break;
case 12: reg_val = REG_READ(IO_MUX_GPIO12_REG); break;
case 13: reg_val = REG_READ(IO_MUX_GPIO13_REG); break;
case 14: reg_val = REG_READ(IO_MUX_GPIO14_REG); break;
case 15: reg_val = REG_READ(IO_MUX_GPIO15_REG); break;
case 16: reg_val = REG_READ(IO_MUX_GPIO16_REG); break;
case 17: reg_val = REG_READ(IO_MUX_GPIO17_REG); break;
case 18: reg_val = REG_READ(IO_MUX_GPIO18_REG); break;
case 19: reg_val = REG_READ(IO_MUX_GPIO19_REG); break;
case 21: reg_val = REG_READ(IO_MUX_GPIO21_REG); break;
case 22: reg_val = REG_READ(IO_MUX_GPIO22_REG); break;
case 23: reg_val = REG_READ(IO_MUX_GPIO23_REG); break;
case 25: reg_val = REG_READ(IO_MUX_GPIO25_REG); break;
case 26: reg_val = REG_READ(IO_MUX_GPIO26_REG); break;
case 27: reg_val = REG_READ(IO_MUX_GPIO27_REG); break;
case 32: reg_val = REG_READ(IO_MUX_GPIO32_REG); break;
case 33: reg_val = REG_READ(IO_MUX_GPIO33_REG); break;
case 34: reg_val = REG_READ(IO_MUX_GPIO34_REG); break;
case 35: reg_val = REG_READ(IO_MUX_GPIO35_REG); break;
case 36: reg_val = REG_READ(IO_MUX_GPIO36_REG); break;
case 39: reg_val = REG_READ(IO_MUX_GPIO39_REG); break;
default:
Serial.printf("Pin %d: unsupported for pull detection\n", pin);
return;
}
isPullUp = (reg_val & FUN_PU) != 0;
isPullDown = (reg_val & FUN_PD) != 0;
Serial.printf("Pin %2d: %s, PullUp: %s, PullDown: %s, Level: %s\n",
pin,
isOutput ? "OUTPUT" : "INPUT ",
isPullUp ? "ON " : "OFF",
isPullDown ? "ON " : "OFF",
level ? "HIGH " : "LOW"
);
}
void setup() {
Serial.begin(115200);
delay(1000);
for (int pin : {
0, 1, 2, 3, 4, 5, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 25, 26, 27, 32, 33, 34, 35, 36, 39
}) {
printPinConfig(pin);
}
Serial.println();
}
void loop() {}