I did what you said.
But problem is when i choose higher priority for interrupt task , kernel can no get into main task after interrupt task process is finished ??
As I tried to explain that would mean that the (highest prio) interrupt task is running all the time starving all other tasks. The scheduler does exactly what it has to do - keep the highest prio task running if this task doesn’t block or wait for something. If the highest prio task blocks resp. waits for something, other (lower prio) tasks get a chance to run.
How can it happen that the interrupt tasks runs all the time if it blocks/waits here:
xSemaphoreTake(xInterruptSemaphore,portMAX_DELAY)
for the semaphore being signaled on interrupt ?
This might only happen if there are interrupts all the time ! This shouldn’t be the case. Otherwise your application is fully occupied with just interrupt processing.
This won’t work, of course.
Are you sure that you handle the EXTI interrupts correctly ? Clear pending bits etc.
There are for sure good examples how to deal with EXTI interrupts.