#include <esp_rom_sys.h>
#include <stdint.h>
void app_main() {
volatile uint32_t* gpio_enable = (volatile uint32_t*)0x3FF44020;
volatile uint32_t* gpio_out = (volatile uint32_t*)0x3FF44004;
volatile uint32_t* gpio_in = (volatile uint32_t*)0x3FF4403C;
int green = 5;
int yellow = 4;
int red = 2;
int sw = 12;
*gpio_enable |= (1 << green);
*gpio_enable |= (1 << yellow);
*gpio_enable |= (1 << red);
while(1) {
if ((*gpio_in & (1 << sw)) == 0) {
*gpio_out |= (1 << green);
*gpio_out &= ~(1 << yellow);
*gpio_out &= ~(1 << red);
}
else {
*gpio_out &= ~(1 << green);
*gpio_out &= ~(1 << red);
for(int i = 0; i < 3; i++) {
if((*gpio_in & (1 << sw)) == 0) {
break;
}
*gpio_out |= (1 << yellow);
esp_rom_delay_us(500000);
if((*gpio_in & (1 << sw)) == 0) {
*gpio_out &= ~(1 << yellow);
break;
}
*gpio_out &= ~(1 << yellow);
esp_rom_delay_us(500000);
}
if((*gpio_in & (1 << sw)) != 0) {
*gpio_out |= (1 << red);
esp_rom_delay_us(500000);
}
}
}
}