Systick Priority vs all Cortex-M priorities

I’m not sure I’m understanding your post correctly, so let me know if this does not answer your question.

The kernel uses three Cortex-M interrupts. First, SVC, which is just used to start the scheduler (unless you are using the port that has memory protection unit (MPU) support). Second, SysTick, which by default is used to generate the RTOS’s tick interrupt (you can override that to use any clock you like). Third, PendSV, which is used to perform a context switch.

Always try to ensure PendSV is the lowest possible priority, things may still work if its not, but they will be less efficient.

We recommend SysTick is also the lowest priority, although things will work fine if its not. If SysTick is the lowest priority it will experience jitter in its execution if kernel code is inside a critical section or if higher priority interrupts are executing. If you want very high temporal accuracy then you can measure time using any other timer your chip provides.

Other interrupts, such as USART and CAN, can run at any priority you want provided they do not use any FreeRTOS API functions. If they do use FreeRTOS API functions then their priority must be at or below the maximum system call priority set by the configMAX_SYSCALL_INTERRUPT_PRIORITY setting in your FreeRTOSConfig.h file.

The Cortex-M design makes this quite complex - we try and explain it here: https://www.freertos.org/RTOS-Cortex-M3-M4.html