Problema Interrupción Timer ESP32

Hola!! Estoy teniendo problemas para hacer una interrupción con el Timer del ESP32. Yo creo que el problema esta en la inicialización porque nunca entra a la interrupción. Acá esta el código que estoy intentando implementar (saque todas las funciones del IMU y de la carga de datos para que no sea tan largo el mensaje). Mi ESP32 es versión 3 por lo que cambian las funciones de inicialización.

#include <Adafruit_MPU6050.h> // Librería IMU
#include <Adafruit_Sensor.h>  // Librería IMU
#include <Wire.h>             // Librería I2C
#include <SD.h>               // Librería módulo memoria SD
#include <SPI.h>              // Librería comunicación SPI
#include <Arduino.h>          // Librería para timer

#define TIMER_FREQUENCY 25
#define TIMER_INTERVAL_US (1000000 / TIMER_FREQUENCY)
#define TIEMPO_MUESTREO 1000 //Defino el tiempod de muestreo en 1S = 1Hz
#define RAD_TO_DEG 180/PI

int n = 0, count = 0;
volatile bool flag25Hz = false;
volatile char receiveData = '\0';
volatile bool dataReady = false;

hw_timer_t * timer = NULL;  //variable para timer

void InicializacionTimer(void);
void InicializacionIntPtoSetie(void);
void InicializacionMemoriaSD(void);
void crearArchivoDatos(void);
void CalibrarIMU(void);
void CrearArchivoOffset(void);
void leerIMU (void);
void IRAM_ATTR onTimer(void);
void IRAM_ATTR onUARTReceive(void);

void setup() {
  bool ProcesoCalibracion = false;

  Serial.begin(115200);
  delay(5000); // Espera para asegurar que el monitor serie esté listo
  
  InicializacionTimer();
}

void loop(){

  unsigned long currentTime = millis();
  Serial.print(count);

  if(!dataReady){
    if(flag25Hz){
      flag25Hz = false;
      leerIMU();
      CargarData();
    } 
  }else{
    archivoDatos.close();
    Serial.println("Ya cerre el archivo de datos");
    return;
  }

  delay(10); // Retardo para evitar saturar
}

void InicializacionTimer(void){
  timer = timerBegin(TIMER_FREQUENCY); // Single argument for ESP32 core 3.2.0
  timerAttachInterrupt(timer, &onTimer); // Attach interrupt function
  timerAlarm(timer, TIMER_FREQUENCY, true, 0);
}

void IRAM_ATTR onTimer(void){
  flag25Hz = true;
  count++;
  //Serial.println("entre al timer");
}

Muchas gracias!!!!

He trasladado su tema de una categoría de idioma inglés del foro a la categoría International > Español @ryc.

En adelante por favor usar la categoría apropiada a la lengua en que queráis publicar. Esto es importante para el uso responsable del foro, y esta explicado aquí la guía "How to get the best out of this forum".
Este guía contiene mucha información útil. Por favor leer.

De antemano, muchas gracias por cooperar.

Tu ESP32 no es versión 3 o te expresas mal.
Estas usando el CORE versión 3.x y eso es diferente.

creo que debería ser asi

void InicializacionTimer(void) {
  timer = timerBegin(0, 80, true);  // Timer 0, prescaler 80 -> 1 tick = 1 µs
  timerAttachInterrupt(timer, &onTimer, true); // attach ISR (edge-triggered)
  timerAlarmWrite(timer, TIMER_INTERVAL_US, true); // 25Hz = 40,000 µs intervalo
  timerAlarmEnable(timer); // enable the alarm
}

y jamás uses Serial.print en una ISR, ese comentado hacelo desaparecer porque no puede estar nunca activo.