This is how taskENTER_CRITICAL works -
- taskENTER_CRITICAL is defined to portENTER_CRITICAL - FreeRTOS-Kernel/include/task.h at main · FreeRTOS/FreeRTOS-Kernel · GitHub
- portENTER_CRITICAL is defined to vTaskEnterCritical - FreeRTOS-Kernel/portable/MPLAB/PIC32MZ/portmacro.h at main · FreeRTOS/FreeRTOS-Kernel · GitHub
- vTaskEnterCritical calls portDISABLE_INTERRUPTS - FreeRTOS-Kernel/tasks.c at main · FreeRTOS/FreeRTOS-Kernel · GitHub
- portDISABLE_INTERRUPTS masks interrupts only upto configMAX_SYSCALL_INTERRUPT_PRIORITY - FreeRTOS-Kernel/portable/MPLAB/PIC32MZ/portmacro.h at main · FreeRTOS/FreeRTOS-Kernel · GitHub
Therefore, the timer interrupt will only be masked if its priority is less than or equal to configMAX_SYSCALL_INTERRUPT_PRIORITY? Can you query its priority before calling xTimerCreate?