Hi, I am using ARM Cortex M0 with FreeRTOS v7.1.0. I am aware that any interrupt service routine that calls ISR safe FreeRTOS API functions (such as xQueueSendToBackFromISR()) must have logical priority equal or below configMAX_SYSCALL_INTERRUPT_PRIORITY (defined in FreeRTOSConfig.h), which is, in our case, defined as 5 shifted by 6 bits, which results in 1.
However, this project was before some time, when I wasn’t aware of that. I used NVIC_EnableIRQ() to enable certain interrupt routine without setting its priority, which leads to setting it to 0 (higher logical priority than configMAX_SYSCALL_INTERRUPT_PRIORITY).
The thing that bothers me is that it works flawlessly to this day, even though it shouldn’t (judging by the all warnings). I will correct that in the new version of project, but can somebody please explain why does it work and in which case it wouldn’t work and why?