13脚接3.3v脚,显示OK ,不能直接接5v电压脚
中断程序最好是为各种执行设置标志位。不能处理占用长时间的指令
准备利用中断对超声波模块编程
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "esp_log.h"
// 定义GPIO引脚和标签
#define BUTTON_GPIO 13
#define TAG "BUTTON_ISR"
char bz=0;
// 中断处理程序
void IRAM_ATTR button_isr_handler(void* arg) {
// 打印一条信息,表示中断触发
bz=1;
}
// 初始化GPIO和中断
void app_main() {
// 配置GPIO引脚
gpio_config_t io_conf;
io_conf.intr_type = GPIO_INTR_NEGEDGE; // 下降沿触发
io_conf.mode = GPIO_MODE_INPUT; // 输入模式
io_conf.pin_bit_mask = (1ULL << BUTTON_GPIO); // 配置为按钮GPIO
io_conf.pull_down_en = GPIO_PULLUP_ENABLE; // 启用上拉
io_conf.pull_up_en = GPIO_PULLDOWN_DISABLE; // 禁用下拉
gpio_config(&io_conf);
// 安装GPIO ISR服务
gpio_install_isr_service(0);
// 添加中断处理程序
gpio_isr_handler_add(BUTTON_GPIO, button_isr_handler, NULL);
// 主循环
while (1) {
if(bz==1){
printf("%s\n","ok");
bz=0;
}
vTaskDelay(pdMS_TO_TICKS(1000));
}
}