ESP32 GPIO外部中断
中断服务写的是一个编码器
网上找了半天全是写了个wihile(1)在里面扫GPIO电平的骗子
.h就不贴了缺的#define自己补下就行
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "sdkconfig.h"
#include "freertos/queue.h"
#include "Encoder.h"
#define GPIO_INPUT_IO_0 13
#define GPIO_INPUT_IO_1 14
#define GPIO_INPUT_IO_2 27
#define GPIO_INPUT_PIN_SEL ((1<<GPIO_INPUT_IO_0) | (1<<GPIO_INPUT_IO_1)| (1<<GPIO_INPUT_IO_2)))
#define ESP_INTR_FLAG_DEFAULT 0//定义默认的中断标志为0
static xQueueHandle gpio_evt_queue = NULL; //定义一个队列返回变量
int Encoder_recoginze(unsigned char state);
static void IRAM_ATTR gpio_isr_handler(void* arg)
{
// uint32_t gpio_num = (uint32_t) arg;
Encoder_recoginze(start);
}
int Encoder_recoginze(unsigned char state)
{
static unsigned char encoder_add_flag;
static unsigned char encoder_sub_flag;
static bool Encoder_A, Encoder_B;
/