代码实现
#include "driver/gpio.h"
#include "esp_rom_sys.h"
#include "esp_rom_uart.h"
#define BTN_PIN 1 // 40-pin 第 3 号脚
static void delay_ms(uint32_t ms)
{
esp_rom_delay_us(ms * 1000);
}
static void uart_init(void)
{
/* 使用 ROM 提供的简单 UART0 打印 */
esp_rom_uart_tx_wait_idle(0);
}
static void btn_init(void)
{
gpio_config_t io_conf = {
.pin_bit_mask = 1ULL << BTN_PIN,
.mode = GPIO_MODE_INPUT,
.pull_up_en = GPIO_PULLUP_ENABLE,
.pull_down_en = GPIO_PULLDOWN_DISABLE,
.intr_type = GPIO_INTR_DISABLE,
};
gpio_config(&io_conf);
}
void app_main(void)
{
uart_init();
btn_init();
esp_rom_printf("ESP32-P4 GPIO45 按键检测裸机示例\r\n");
while (1) {
bool pressed = (gpio_get_level(BTN_PIN) == 0); // 低电平有效
esp_rom_printf("按键状态: %s\r\n", pressed ? "按下" : "松开");
delay_ms(200); // 简单去抖
}
}