Рукорождение прерывания, когда ручная ручная работа, когда ручные работы, esp_intr_flag_RAM, «Br/Br/ruandler». В этом случае ISR может только
функции вызова, помещенные в IRAM, или функции, присутствующие в ROM
, чтобы лучше понять, как используется attachintrupt Introutine Callback. Это std :: функция называется из внутренней функции:
static void ARDUINO_ISR_ATTR __onPinInterrupt(void * arg) {
InterruptHandle_t * isr = (InterruptHandle_t*)arg;
if(isr->fn) {
if(isr->arg){
((voidFuncPtrArg)isr->fn)(isr->arg);
} else {
isr->fn();
}
}
}
где arduino_isr_attr определяется как:
Код: Выделить всё
#if CONFIG_ARDUINO_ISR_IRAM
#define ARDUINO_ISR_ATTR IRAM_ATTR
#define ARDUINO_ISR_FLAG ESP_INTR_FLAG_IRAM
#else
#define ARDUINO_ISR_ATTR
#define ARDUINO_ISR_FLAG (0)
#endif
Подробнее здесь: https://stackoverflow.com/questions/797 ... -the-esp32
Мобильная версия